Make AM registers into an array

This commit is contained in:
2025-08-10 20:30:07 +01:00
parent 52a42d2937
commit 57c39fd00b
14 changed files with 311 additions and 288 deletions

View File

@@ -16,36 +16,36 @@ void tearDown(void)
static void test_set_foo_to_42_then_fetch(void)
{
am.expr = expr_str_symbol(&am, "foo");
am.val = expr_integer(&am, 42);
am.regs[EXPR] = expr_str_symbol(&am, "foo");
am.regs[VAL] = expr_integer(&am, 42);
env_set(&am);
am.expr = expr_str_symbol(&am, "foo");
am.val = NULL;
am.regs[EXPR] = expr_str_symbol(&am, "foo");
am.regs[VAL] = NULL;
env_fetch(&am);
TEST_ASSERT_NOT_NULL(am.val);
TEST_ASSERT_TRUE(am.val->is_atom);
TEST_ASSERT_EQUAL(ATOM_TYPE_INTEGER, am.val->atom.type);
TEST_ASSERT_EQUAL(42, am.val->atom.integer);
TEST_ASSERT_NOT_NULL(am.regs[VAL]);
TEST_ASSERT_TRUE(am.regs[VAL]->is_atom);
TEST_ASSERT_EQUAL(ATOM_TYPE_INTEGER, am.regs[VAL]->atom.type);
TEST_ASSERT_EQUAL(42, am.regs[VAL]->atom.integer);
}
static void test_update_foo_from_123_to_456_then_fetch(void)
{
am.expr = expr_str_symbol(&am, "foo");
am.val = expr_integer(&am, 123);
am.regs[EXPR] = expr_str_symbol(&am, "foo");
am.regs[VAL] = expr_integer(&am, 123);
env_set(&am);
am.val = expr_integer(&am, 456);
am.regs[VAL] = expr_integer(&am, 456);
env_set(&am);
am.expr = expr_str_symbol(&am, "foo");
am.val = NULL;
am.regs[EXPR] = expr_str_symbol(&am, "foo");
am.regs[VAL] = NULL;
env_fetch(&am);
TEST_ASSERT_NOT_NULL(am.val);
TEST_ASSERT_TRUE(am.val->is_atom);
TEST_ASSERT_EQUAL(ATOM_TYPE_INTEGER, am.val->atom.type);
TEST_ASSERT_EQUAL(456, am.val->atom.integer);
TEST_ASSERT_NOT_NULL(am.regs[VAL]);
TEST_ASSERT_TRUE(am.regs[VAL]->is_atom);
TEST_ASSERT_EQUAL(ATOM_TYPE_INTEGER, am.regs[VAL]->atom.type);
TEST_ASSERT_EQUAL(456, am.regs[VAL]->atom.integer);
}
int main(void)