summaryrefslogtreecommitdiff
path: root/src/test.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/test.c')
-rw-r--r--src/test.c54
1 files changed, 34 insertions, 20 deletions
diff --git a/src/test.c b/src/test.c
index ed2eb51..8bb31c0 100644
--- a/src/test.c
+++ b/src/test.c
@@ -7,6 +7,7 @@
#include <lauxlib.h>
#include "honeysuckle.h"
+#include "colors.h"
/* minunit testing macros modified from those at
www.jera.com/techinfo/jtns/jtn002.html */
@@ -18,7 +19,7 @@
lua_close(L); \
tests_run++; \
if (message) { \
- printf("test '%s' failed: %s\n", name, message); \
+ printf(RED " test '%s' failed: %s\n" RESET, name, message); \
tests_failed++; \
} \
} while (0)
@@ -115,7 +116,7 @@ TEST(hs_any_to_string)
/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
*
- * tests for hs_parse_args
+ * hs_parse_args typechecking tests
*
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
*/
@@ -438,6 +439,14 @@ PARSE_TYPECHECK_TEST(parse_any_typecheck, int, HS_ANY)
return 0;
}
+
+/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ *
+ * hs_parse_args parsing tests
+ *
+ * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ */
+
TEST(parse_bool)
{
lua_pushboolean(L, true);
@@ -475,17 +484,18 @@ TEST(parse_str)
return 0;
}
-int testfunc(lua_State *L) { return 0; }
-
TEST(parse_func)
{
- lua_pushcfunction(L, testfunc);
- lua_CFunction f;
- hs_parse_args(L, HS_FUNC, &f, HS_END);
- mu_assert("failed to properly parse function!", f == testfunc);
+ lua_getglobal(L, "type");
+ int correct_index = lua_gettop(L);
+ int index = 0;
+ hs_parse_args(L, HS_FUNC, &index, HS_END);
+ mu_assert("failed to properly parse function!", index == correct_index);
return 0;
}
+int testfunc(lua_State *L) { return 0; }
+
TEST(parse_cfunc)
{
lua_pushcfunction(L, testfunc);
@@ -505,7 +515,7 @@ int should_fail(lua_State *L)
TEST(fail_parse_noncfunc)
{
lua_pushcfunction(L, should_fail);
- lua_getglobal(L, "assert");
+ lua_getglobal(L, "type");
mu_assert("incorrectly parsed non-C function!",
lua_pcall(L, 1, 0, 0) != 0);
return 0;
@@ -533,14 +543,14 @@ TEST(parse_lightuserdata)
return 0;
}
-int parse_nil_testfunc(lua_State *L) { hs_parse_args(L, HS_NIL, HS_END); }
-
TEST(parse_nil)
{
- lua_pushcfunction(L, parse_nil_testfunc);
lua_pushnil(L);
+ int correct_index = lua_gettop(L);
+ int index = 0;
+ hs_parse_args(L, HS_NIL, &index, HS_END);
mu_assert("failed to properly parse nil!",
- lua_pcall(L, 1, 0, 0) == 0);
+ index == correct_index);
return 0;
}
@@ -603,9 +613,8 @@ int main()
mu_run_test("light to string", hs_light_to_string);
mu_run_test("nil to string", hs_nil_to_string);
mu_run_test("any to string", hs_any_to_string);
- printf("\n");
- printf("running hs_parse_args() tests...\n");
+ printf("running hs_parse_args() typechecking tests...\n");
mu_run_test("parse bool typecheck", parse_bool_typecheck);
mu_run_test("parse int typecheck", parse_int_typecheck);
mu_run_test("parse num typecheck", parse_num_typecheck);
@@ -616,7 +625,9 @@ int main()
mu_run_test("parse user typecheck", parse_user_typecheck);
mu_run_test("parse light typecheck", parse_light_typecheck);
mu_run_test("parse nil typecheck", parse_nil_typecheck);
- mu_run_test("parse any typecheck", parse_any_typecheck);
+ mu_run_test("parse any typecheck", parse_any_typecheck);
+
+ printf("running hs_parse_args() parsing tests...\n");
mu_run_test("parse bool", parse_bool);
mu_run_test("parse int", parse_int);
mu_run_test("parse num", parse_num);
@@ -624,15 +635,18 @@ int main()
mu_run_test("parse func", parse_func);
mu_run_test("parse cfunc", parse_cfunc);
mu_run_test("fail parse noncfunc", fail_parse_noncfunc);
- printf("\n");
+ mu_run_test("parse userdata", parse_userdata);
+ mu_run_test("parse lightuserdata", parse_lightuserdata);
+ mu_run_test("parse_nil", parse_nil);
printf("running hs_pushstring() tests...\n");
mu_run_test("hs_pushstring (no printf formatting)", push_noformat);
mu_run_test("hs_pushstring (integer formatting)", push_formatint);
mu_run_test("hs_pushstring (string formatting)", push_formatstring);
- printf("\n");
-
+
printf("\n=============== tests finished ===============\n\n");
- printf("ran %d tests, %d failed\n", tests_run, tests_failed);
+
+ const char *color = tests_failed == 0 ? GREEN : RED;
+ printf("%sran %d tests, %d failed\n" RESET, color, tests_run, tests_failed);
return 0;
}