aboutsummaryrefslogtreecommitdiff
path: root/eval.c
diff options
context:
space:
mode:
Diffstat (limited to 'eval.c')
-rw-r--r--eval.c23
1 files changed, 23 insertions, 0 deletions
diff --git a/eval.c b/eval.c
index 249ab1c..5c8d314 100644
--- a/eval.c
+++ b/eval.c
@@ -311,4 +311,27 @@ TEST(eval)
#undef EVAL
}
+TEST(nested_expression)
+{
+ struct list *result = eval_str("(eq #f (> (- (+ 1 3) (* 2 (mod 7 4))) 4))");
+ ASSERT_TRUE(result != NULL);
+ ASSERT_TRUE(IS_TRUE(result));
+}
+
+TEST(basic_if)
+{
+ struct list *result = eval_str("(if #t 42 1000)");
+ ASSERT_TRUE(result != NULL);
+ ASSERT_EQ(ATOM_INT, ATOM_TYPE(result));
+ ASSERT_EQ(42, LIST_GET_ATOM(result)->l);
+}
+
+TEST(if_with_sub_expressions)
+{
+ struct list *result = eval_str("(if (> 1 2) (- 1000 1) (+ 40 (- 3 1)))");
+ ASSERT_TRUE(result != NULL);
+ ASSERT_EQ(ATOM_INT, ATOM_TYPE(result));
+ ASSERT_EQ(42, LIST_GET_ATOM(result)->l);
+}
+
#endif /* BUILD_TEST */