commit 480ed4e59f92e0972c12a9135bf41a26ff2be2ed
parent 13c5eea0844d801eef3037f4d9ab5c966809b920
Author: Mohammad-Reza Nabipoor <mnabipoor@gnu.org>
Date: Sat, 28 May 2022 00:49:23 +0430
cgen.test.cpp: Execute generated routines
Diffstat:
1 file changed, 16 insertions(+), 0 deletions(-)
diff --git a/cgen.test.cpp b/cgen.test.cpp
@@ -2,6 +2,7 @@
#include "cgen.hpp"
#include <cassert>
+#include <cmath>
#include <iostream>
#include "env.hpp"
@@ -207,6 +208,8 @@ cgen_jitter()
pop
)");
je.exec(env);
+ assert(env.empty());
+ assert(je.result() == 120.0);
}
{
@@ -214,6 +217,8 @@ cgen_jitter()
ast::Op{ '+' }, ast::mknum(1), ast::mknum(2)) };
auto j{ cgen::jitter(binop1.begin(), binop1.end()) };
auto s{ cgen::disasm(j) };
+ auto je{ j.mkexec() };
+ env::Env env;
p(s);
assert(s == R"( push 1.000000
@@ -221,6 +226,9 @@ cgen_jitter()
add
pop
)");
+ je.exec(env);
+ assert(env.empty());
+ assert(je.result() == 3.0);
}
{
@@ -231,6 +239,9 @@ cgen_jitter()
ast::mkop(ast::Op{ '*' }, ast::mknum(3), ast::mknum(4)))) };
auto j{ cgen::jitter(ass1.begin(), ass1.end()) };
auto s{ cgen::disasm(j) };
+ auto je{ j.mkexec() };
+ env::Env env;
+ double d{ 0.0 };
p(s);
assert(s == R"( push 1.000000
@@ -244,6 +255,11 @@ cgen_jitter()
pushnan
pop
)");
+ je.exec(env);
+ assert(std::isnan(je.result()));
+ assert(env.size() == 1);
+ assert(toctave_var(&env, "x", &d));
+ assert(d == 12.5);
}
if (0) {