Make AM registers into an array
This commit is contained in:
@@ -21,57 +21,57 @@ void tearDown(void)
|
||||
|
||||
static void test_42_self_evals(void)
|
||||
{
|
||||
am.expr = expr_integer(&am, 42);
|
||||
am.regs[EXPR] = expr_integer(&am, 42);
|
||||
|
||||
eval(&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_empty_list_self_evals(void)
|
||||
{
|
||||
am.expr = expr_empty_list(&am);
|
||||
am.regs[EXPR] = expr_empty_list(&am);
|
||||
|
||||
eval(&am);
|
||||
|
||||
TEST_ASSERT_NOT_NULL(am.val);
|
||||
TEST_ASSERT_TRUE(am.val->is_atom);
|
||||
TEST_ASSERT_EQUAL(ATOM_TYPE_EMPTY_LIST, am.val->atom.type);
|
||||
TEST_ASSERT_NOT_NULL(am.regs[VAL]);
|
||||
TEST_ASSERT_TRUE(am.regs[VAL]->is_atom);
|
||||
TEST_ASSERT_EQUAL(ATOM_TYPE_EMPTY_LIST, am.regs[VAL]->atom.type);
|
||||
}
|
||||
|
||||
static void test_prim_proc_self_evals(void)
|
||||
{
|
||||
am.expr = expr_prim_proc(&am, test_prim_proc);
|
||||
am.regs[EXPR] = expr_prim_proc(&am, test_prim_proc);
|
||||
|
||||
eval(&am);
|
||||
|
||||
TEST_ASSERT_NOT_NULL(am.val);
|
||||
TEST_ASSERT_TRUE(am.val->is_atom);
|
||||
TEST_ASSERT_EQUAL(ATOM_TYPE_PRIM_PROC, am.val->atom.type);
|
||||
TEST_ASSERT_EQUAL(test_prim_proc, am.val->atom.prim_proc);
|
||||
TEST_ASSERT_NOT_NULL(am.regs[VAL]);
|
||||
TEST_ASSERT_TRUE(am.regs[VAL]->is_atom);
|
||||
TEST_ASSERT_EQUAL(ATOM_TYPE_PRIM_PROC, am.regs[VAL]->atom.type);
|
||||
TEST_ASSERT_EQUAL(test_prim_proc, am.regs[VAL]->atom.prim_proc);
|
||||
}
|
||||
|
||||
static void test_foo_evals_to_42_when_set_in_env(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.val = NULL;
|
||||
am.regs[VAL] = NULL;
|
||||
|
||||
eval(&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_add_1_2_3_evals_to_6(void)
|
||||
{
|
||||
am.expr = expr_pair(
|
||||
am.regs[EXPR] = expr_pair(
|
||||
&am, expr_str_symbol(&am, "+"),
|
||||
expr_pair(
|
||||
&am, expr_integer(&am, 1),
|
||||
@@ -82,15 +82,15 @@ static void test_add_1_2_3_evals_to_6(void)
|
||||
|
||||
eval(&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(6, 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(6, am.regs[VAL]->atom.integer);
|
||||
}
|
||||
|
||||
static void test_add_1_mul_2_3_evals_to_7(void)
|
||||
{
|
||||
am.expr = expr_pair(
|
||||
am.regs[EXPR] = expr_pair(
|
||||
&am, expr_str_symbol(&am, "+"),
|
||||
expr_pair(
|
||||
&am, expr_integer(&am, 1),
|
||||
@@ -107,10 +107,10 @@ static void test_add_1_mul_2_3_evals_to_7(void)
|
||||
|
||||
eval(&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(7, 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(7, am.regs[VAL]->atom.integer);
|
||||
}
|
||||
|
||||
int main(void)
|
||||
|
||||
Reference in New Issue
Block a user