Add 'list' and 'print' builtins

This commit is contained in:
2022-11-02 21:26:52 -04:00
parent 3b7bef779b
commit 2cf4cd9587
6 changed files with 83 additions and 15 deletions

View File

@@ -21,6 +21,7 @@ void setUp(void) {
ucl_state_put(state, "let", ucl_builtin_create(ucl_builtin_let));
ucl_state_put(state, "+", ucl_builtin_create(ucl_builtin_add));
ucl_state_put(state, "error", ucl_builtin_create(ucl_builtin_error));
ucl_state_put(state, "list", ucl_builtin_create(ucl_builtin_list));
}
void tearDown(void) {
@@ -108,6 +109,18 @@ static void test_eval_nested_error(void) {
TEST_ASSERT_OBJ_ERROR(response);
}
static void test_eval_list(void) {
response = eval("(list 1 2 3)");
TEST_ASSERT_OBJ_LIST(response);
TEST_ASSERT_EQUAL(ucl_list_length(response)->integer, 3);
int i = 1;
FOREACH_LIST(response, iter, item) {
TEST_ASSERT_EQUAL(item->integer, i);
i++;
}
}
int main(void) {
UNITY_BEGIN();
@@ -124,6 +137,7 @@ int main(void) {
RUN_TEST(test_eval_sym_defined);
RUN_TEST(test_eval_sym_undefined);
RUN_TEST(test_eval_nested_error);
RUN_TEST(test_eval_list);
return UNITY_END();
}