You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
62 lines
1.9 KiB
62 lines
1.9 KiB
3 years ago
|
#include "ptlisp-test.h"
|
||
|
|
||
|
static Pointer STANDARD_OUTPUT_STREAM;
|
||
|
static char buffer[255];
|
||
|
START_TEST(print_fn_test) {
|
||
|
Pointer list = LIST(number(1), number(2), number(69.420));
|
||
|
Pointer result = print_fn(LIST(list, STANDARD_OUTPUT_STREAM), NIL);
|
||
|
ck_assert_str_eq(buffer, "\n(1 2 69.42) ");
|
||
|
ck_assert_uint_eq(list, result);
|
||
|
rewind(STREAM(STANDARD_OUTPUT_STREAM));
|
||
|
|
||
|
list = LIST(number(1), number(2), LIST(number(3), number(4)));
|
||
|
result = print_fn(LIST(list, STANDARD_OUTPUT_STREAM), NIL);
|
||
|
ck_assert_str_eq(buffer, "\n(1 2 (3 4)) ");
|
||
|
ck_assert_uint_eq(list, result);
|
||
|
rewind(STREAM(STANDARD_OUTPUT_STREAM));
|
||
|
|
||
|
Pointer tbl = table(4);
|
||
|
Pointer a = symbol("a", sizeof("a"));
|
||
|
Pointer b = symbol("b", sizeof("b"));
|
||
|
Pointer c = symbol("c", sizeof("c"));
|
||
|
Pointer d = symbol("d", sizeof("d"));
|
||
|
tbl = table_set(tbl, a, number(1));
|
||
|
tbl = table_set(tbl, b, number(2));
|
||
|
tbl = table_set(tbl, c, number(3));
|
||
|
tbl = table_set(tbl, d, number(4));
|
||
|
result = print_fn(LIST(tbl, STANDARD_OUTPUT_STREAM), NIL);
|
||
|
ck_assert_str_eq(buffer, "\n{c: 3, a: 1, d: 4, b: 2} ");
|
||
|
rewind(STREAM(STANDARD_OUTPUT_STREAM));
|
||
|
|
||
|
result = print_fn(LIST(character('a'), STANDARD_OUTPUT_STREAM), NIL);
|
||
|
fprintf(STREAM(STANDARD_OUTPUT_STREAM), "%c", '\0');
|
||
|
fflush(STREAM(STANDARD_OUTPUT_STREAM));
|
||
|
ck_assert_str_eq(buffer, "\n\\a ");
|
||
|
rewind(STREAM(STANDARD_OUTPUT_STREAM));
|
||
|
} END_TEST
|
||
|
|
||
|
static void setup(void) {
|
||
|
memory_init(16);
|
||
|
symbol_init();
|
||
|
reader_init();
|
||
|
environment_init();
|
||
|
STANDARD_OUTPUT_STREAM = stream(fmemopen(buffer, sizeof(buffer), "w+"));
|
||
|
environment_set(NIL, STANDARD_OUTPUT, STANDARD_OUTPUT_STREAM);
|
||
|
}
|
||
|
|
||
|
static void teardown(void) {
|
||
|
fclose(STREAM(STANDARD_OUTPUT_STREAM));
|
||
|
memory_free();
|
||
|
}
|
||
|
|
||
|
Suite* make_printer_test_suite(void) {
|
||
|
Suite *s1 = suite_create("Printer");
|
||
|
TCase *tc1_1 = tcase_create("Printer");
|
||
|
suite_add_tcase(s1, tc1_1);
|
||
|
|
||
|
tcase_add_checked_fixture(tc1_1, setup, teardown);
|
||
|
tcase_add_test(tc1_1, print_fn_test);
|
||
|
|
||
|
return s1;
|
||
|
}
|