#define SCOPE_SUITE_H_
#include "test.h"
-#include "script/scope.h"
-#include "script/expr.h"
+#include "ebisp/scope.h"
+#include "ebisp/expr.h"
TEST(set_scope_value_test)
{
struct Expr x = SYMBOL(gc, "x");
struct Expr y = SYMBOL(gc, "y");
- struct Scope initial_scope = {
- .expr = list(gc, 2,
- list(gc, 2,
- CONS(gc, x, STRING(gc, "hello")),
- CONS(gc, y, STRING(gc, "world"))),
- NIL(gc))
+ struct Scope scope = {
+ .expr = CONS(gc, NIL(gc), NIL(gc))
};
- struct Expr expected_scope_expr =
- list(gc, 2,
- list(gc, 2,
- CONS(gc, x, STRING(gc, "hello")),
- CONS(gc, y, STRING(gc, "world"))),
- list(gc, 1,
- CONS(gc, z, STRING(gc, "foo"))));
+ push_scope_frame(gc, &scope,
+ list(gc, "ee", x, y),
+ list(gc, "ss", "hello", "world"));
- set_scope_value(gc, &initial_scope, z, STRING(gc, "foo"));
+ set_scope_value(gc, &scope, z, STRING(gc, "foo"));
+
+ ASSERT_TRUE(equal(CONS(gc, x, STRING(gc, "hello")), get_scope_value(&scope, x)),
+ { fprintf(stderr, "Unexpected value of `x`\n"); });
+ ASSERT_TRUE(equal(CONS(gc, y, STRING(gc, "world")), get_scope_value(&scope, y)),
+ { fprintf(stderr, "Unexpected value of `y`\n"); });
+ ASSERT_TRUE(equal(CONS(gc, z, STRING(gc, "foo")), get_scope_value(&scope, z)),
+ { fprintf(stderr, "Unexpected value of `z`\n"); });
+
+ pop_scope_frame(gc, &scope);
+
+ ASSERT_TRUE(equal(NIL(gc), get_scope_value(&scope, x)),
+ { fprintf(stderr, "Unexpected value of `x`\n"); });
+ ASSERT_TRUE(equal(NIL(gc), get_scope_value(&scope, y)),
+ { fprintf(stderr, "Unexpected value of `y`\n"); });
+ ASSERT_TRUE(equal(CONS(gc, z, STRING(gc, "foo")), get_scope_value(&scope, z)),
+ { fprintf(stderr, "Unexpected value of `z`\n"); });
- ASSERT_TRUE(equal(expected_scope_expr, initial_scope.expr), "Unexpected scope");
destroy_gc(gc);