diff options
author | sanine-a <sanine.not@pm.me> | 2021-07-02 23:34:08 -0500 |
---|---|---|
committer | sanine-a <sanine.not@pm.me> | 2021-07-02 23:34:08 -0500 |
commit | abb9613d2dbc95966c73409e08f66d812703b844 (patch) | |
tree | 572ca9fcb4f52c9820bfc4a2829843ef0bfb0023 /src/tests | |
parent | 3be8f4628e2eea1ee1edd352d5c0a63293484f8c (diff) |
add tests for hs_create_enum
Diffstat (limited to 'src/tests')
-rw-r--r-- | src/tests/hs_create_enum_tests.c | 73 | ||||
-rw-r--r-- | src/tests/tests_main.c | 3 |
2 files changed, 76 insertions, 0 deletions
diff --git a/src/tests/hs_create_enum_tests.c b/src/tests/hs_create_enum_tests.c new file mode 100644 index 0000000..0cc3d0b --- /dev/null +++ b/src/tests/hs_create_enum_tests.c @@ -0,0 +1,73 @@ +#include "hs_tests.h" + +#define check(string, value) do { \ + lua_getfield(L, index, string); \ + mu_assert("field '" string "' is not an integer!", lua_isnumber(L, -1)); \ + int enum_value = lua_tointeger(L, -1); \ + mu_assert("field '" string "' does not match expected value!", enum_value == (value)); \ + lua_pop(L, -1); \ + lua_rawgeti(L, index, value); \ + mu_assert("enum field for '" string "' is not a string!", lua_isstring(L, -1)); \ + const char *str = lua_tostring(L, -1); \ + mu_assert("enum field for '" string "' does not match expected value!", strcmp(str, string) == 0); \ + lua_pop(L, -1); \ + } while(0) + +/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + * + * tests + * + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + */ + +enum test_enum { VAL0, VAL1, VAL2, VAL3, N_VALS }; + + +TEST(enum_test) +{ + int index = hs_create_enum + (L, + "zero", VAL0, + "one", VAL1, + "two", VAL2, + "three", VAL3, + HS_END); + mu_assert("failed to return correct index!", index == lua_gettop(L)); + check("zero", VAL0); + check("one", VAL1); + check("two", VAL2); + check("three", VAL3); + return 0; +} + +TEST(int_test) +{ + int index = hs_create_enum + (L, + "someValue", 23, + "anotherValue", 444, + "???", -5, + "217", 217, + HS_END); + mu_assert("failed to return correct index!", index == lua_gettop(L)); + check("someValue", 23); + check("anotherValue", 444); + check("???", -5); + check("217", 217); + return 0; +} + + +/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + * + * test suite + * + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + */ + +void hs_create_enum_tests() +{ + printf("running hs_create_enum() tests...\n"); + mu_run_test("create enum table from enum", enum_test); + mu_run_test("create enum table from integers", int_test); +} diff --git a/src/tests/tests_main.c b/src/tests/tests_main.c index 06c6940..207e233 100644 --- a/src/tests/tests_main.c +++ b/src/tests/tests_main.c @@ -18,6 +18,9 @@ int main() hs_parse_args_tests(); hs_parse_overloaded_tests(); + hs_create_table_tests(); + hs_create_enum_tests(); + hs_pushstring_tests(); printf("\n=============== tests finished ===============\n\n"); |