tests: Better suite creation
While the previous method of in-lining a stack allocated array of tests into the suite struct declaration was nice, we had to update size manually. This macro will allow us to just append new tests to the suite without having to care for that. It generates a uniquely named variable for the test array, then uses that test array in the suite declaration. Nice and easy.
This commit is contained in:
@@ -61,8 +61,13 @@ typedef struct
|
|||||||
const u64 size;
|
const u64 size;
|
||||||
} test_suite_t;
|
} test_suite_t;
|
||||||
|
|
||||||
#define MAKE_TEST_SUITE(NAME) \
|
#define MAKE_TEST_SUITE(NAME, DESC, ...) \
|
||||||
{.name = #NAME, .tests = NAME, .size = ARRSIZE(NAME)}
|
const test_fn NAME##_TESTS[] = {__VA_ARGS__}; \
|
||||||
|
const test_suite_t NAME = { \
|
||||||
|
.name = DESC, \
|
||||||
|
.tests = NAME##_TESTS, \
|
||||||
|
.size = ARRSIZE(NAME##_TESTS), \
|
||||||
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|||||||
@@ -186,19 +186,11 @@ void sys_test(void)
|
|||||||
TEST_PASSED();
|
TEST_PASSED();
|
||||||
}
|
}
|
||||||
|
|
||||||
const test_suite_t LISP_API_SUITE = {
|
MAKE_TEST_SUITE(LISP_API_SUITE, "LISP API Tests",
|
||||||
.name = "Lisp API Tests",
|
|
||||||
.tests =
|
MAKE_TEST_FN(smi_test), MAKE_TEST_FN(smi_oob_test),
|
||||||
(test_fn[]){
|
MAKE_TEST_FN(sym_fresh_test), MAKE_TEST_FN(sym_unique_test),
|
||||||
MAKE_TEST_FN(smi_test),
|
MAKE_TEST_FN(cons_test), MAKE_TEST_FN(sys_test), );
|
||||||
MAKE_TEST_FN(smi_oob_test),
|
|
||||||
MAKE_TEST_FN(sym_fresh_test),
|
|
||||||
MAKE_TEST_FN(sym_unique_test),
|
|
||||||
MAKE_TEST_FN(cons_test),
|
|
||||||
MAKE_TEST_FN(sys_test),
|
|
||||||
},
|
|
||||||
.size = 6,
|
|
||||||
};
|
|
||||||
|
|
||||||
/* Copyright (C) 2026 Aryadev Chavali
|
/* Copyright (C) 2026 Aryadev Chavali
|
||||||
|
|
||||||
|
|||||||
@@ -87,21 +87,9 @@ void stream_test_line_col(void)
|
|||||||
TODO("Not implemented");
|
TODO("Not implemented");
|
||||||
}
|
}
|
||||||
|
|
||||||
const test_suite_t STREAM_SUITE = {
|
MAKE_TEST_SUITE(STREAM_SUITE, "Stream Tests",
|
||||||
.name = "Stream Tests",
|
|
||||||
.tests =
|
MAKE_TEST_FN(stream_test_string), );
|
||||||
(test_fn[]){
|
|
||||||
MAKE_TEST_FN(stream_test_string),
|
|
||||||
// MAKE_TEST_FN(stream_test_file),
|
|
||||||
// MAKE_TEST_FN(stream_test_peek_next),
|
|
||||||
// MAKE_TEST_FN(stream_test_seek),
|
|
||||||
// MAKE_TEST_FN(stream_test_substr),
|
|
||||||
// MAKE_TEST_FN(stream_test_till),
|
|
||||||
// MAKE_TEST_FN(stream_test_while),
|
|
||||||
// MAKE_TEST_FN(stream_test_line_col),
|
|
||||||
},
|
|
||||||
.size = 1,
|
|
||||||
};
|
|
||||||
|
|
||||||
/* Copyright (C) 2026 Aryadev Chavali
|
/* Copyright (C) 2026 Aryadev Chavali
|
||||||
|
|
||||||
|
|||||||
@@ -28,14 +28,7 @@ void sv_copy_test(void)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const test_suite_t SV_SUITE = {
|
MAKE_TEST_SUITE(SV_SUITE, "String View Tests", MAKE_TEST_FN(sv_copy_test), );
|
||||||
.name = "String View Tests",
|
|
||||||
.tests =
|
|
||||||
(test_fn[]){
|
|
||||||
MAKE_TEST_FN(sv_copy_test),
|
|
||||||
},
|
|
||||||
.size = 1,
|
|
||||||
};
|
|
||||||
|
|
||||||
/* Copyright (C) 2026 Aryadev Chavali
|
/* Copyright (C) 2026 Aryadev Chavali
|
||||||
|
|
||||||
|
|||||||
@@ -22,14 +22,9 @@ void symtable_test(void)
|
|||||||
TEST_PASSED();
|
TEST_PASSED();
|
||||||
}
|
}
|
||||||
|
|
||||||
const test_suite_t SYMTABLE_SUITE = {
|
MAKE_TEST_SUITE(SYMTABLE_SUITE, "Symbol Table Tests",
|
||||||
.name = "Symbol Table Tests",
|
|
||||||
.tests =
|
MAKE_TEST_FN(symtable_test), );
|
||||||
(test_fn[]){
|
|
||||||
MAKE_TEST_FN(symtable_test),
|
|
||||||
},
|
|
||||||
.size = 1,
|
|
||||||
};
|
|
||||||
|
|
||||||
/* Copyright (C) 2026 Aryadev Chavali
|
/* Copyright (C) 2026 Aryadev Chavali
|
||||||
|
|
||||||
|
|||||||
@@ -69,15 +69,9 @@ void vec_test_substr(void)
|
|||||||
TEST_PASSED();
|
TEST_PASSED();
|
||||||
}
|
}
|
||||||
|
|
||||||
const test_suite_t VEC_SUITE = {
|
MAKE_TEST_SUITE(VEC_SUITE, "Vector Tests",
|
||||||
.name = "Vector Tests",
|
|
||||||
.tests =
|
MAKE_TEST_FN(vec_test_concat), MAKE_TEST_FN(vec_test_substr), );
|
||||||
(test_fn[]){
|
|
||||||
MAKE_TEST_FN(vec_test_concat),
|
|
||||||
MAKE_TEST_FN(vec_test_substr),
|
|
||||||
},
|
|
||||||
.size = 2,
|
|
||||||
};
|
|
||||||
|
|
||||||
/* Copyright (C) 2026 Aryadev Chavali
|
/* Copyright (C) 2026 Aryadev Chavali
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user