efl/src/tests/elua/elua_lib.c

95 lines
2.7 KiB
C
Raw Normal View History

2015-04-16 02:55:27 -07:00
#ifdef HAVE_CONFIG_H
# include <config.h>
#endif
#include <stdlib.h>
#include <stdio.h>
#include<Eina.h>
#include "Elua.h"
#include "elua_suite.h"
START_TEST(elua_api)
2015-04-16 02:55:27 -07:00
{
2015-04-16 06:02:21 -07:00
Elua_State *st;
lua_State *lst;
fail_if(!elua_init());
2015-04-16 06:02:21 -07:00
st = elua_state_new("test");
fail_if(!st);
2015-04-16 07:08:02 -07:00
/* test env vars */
setenv("ELUA_CORE_DIR", "foo", 1);
setenv("ELUA_MODULES_DIR", "bar", 1);
setenv("ELUA_APPS_DIR", "baz", 1);
elua_state_dirs_fill(st, EINA_FALSE);
fail_if(strcmp(elua_state_core_dir_get(st), "foo"));
fail_if(strcmp(elua_state_mod_dir_get(st), "bar"));
fail_if(strcmp(elua_state_apps_dir_get(st), "baz"));
unsetenv("ELUA_CORE_DIR");
unsetenv("ELUA_MODULES_DIR");
unsetenv("ELUA_APPS_DIR");
2015-04-16 07:08:02 -07:00
/* now fill it properly */
elua_state_dirs_set(st, ELUA_CORE_DIR, ELUA_MODULES_DIR, ELUA_APPS_DIR);
fail_if(strcmp(elua_state_core_dir_get(st), ELUA_CORE_DIR));
fail_if(strcmp(elua_state_mod_dir_get(st), ELUA_MODULES_DIR));
fail_if(strcmp(elua_state_apps_dir_get(st), ELUA_APPS_DIR));
2015-04-16 07:23:33 -07:00
/* needed for later setup, but untestable alone */
elua_state_include_path_add(st, ELUA_BINDINGS_DIR);
2015-04-16 06:02:21 -07:00
lst = elua_state_lua_state_get(st);
fail_if(!lst);
fail_if(elua_state_from_lua_state_get(lst) != st);
2015-04-16 06:08:28 -07:00
fail_if(strcmp(elua_state_prog_name_get(st), "test"));
2015-04-16 07:11:43 -07:00
fail_if(!elua_state_modules_setup(st));
fail_if(!elua_state_i18n_setup(st));
fail_if(!elua_state_io_setup(st));
fail_if(!elua_state_require_ref_push(st));
fail_if(lua_type(lst, -1) != LUA_TFUNCTION);
lua_pop(lst, 1);
fail_if(!elua_state_appload_ref_push(st));
fail_if(lua_type(lst, -1) != LUA_TFUNCTION);
lua_pop(lst, 1);
2015-04-16 07:23:33 -07:00
fail_if(elua_util_require(st, "util"));
fail_if(elua_util_string_run(st, "return 1337", "foo"));
fail_if(!elua_util_string_run(st, "foo bar", "foo")); /* invalid code */
2015-04-16 07:25:37 -07:00
fail_if(!elua_util_app_load(st, "lualian"));
fail_if(lua_type(lst, -1) != LUA_TFUNCTION);
lua_pop(lst, 1);
2015-04-16 07:25:37 -07:00
fail_if(elua_util_app_load(st, "non_existent_app"));
fail_if(lua_type(lst, -1) != LUA_TSTRING);
lua_pop(lst, 1);
2015-04-16 07:36:17 -07:00
fail_if(elua_io_loadfile(st, ELUA_CORE_DIR "/util.lua"));
fail_if(lua_type(lst, -1) != LUA_TFUNCTION);
lua_pop(lst, 1);
fail_if(!elua_io_loadfile(st, ELUA_CORE_DIR "/non_existent_file.lua"));
fail_if(lua_type(lst, -1) != LUA_TSTRING);
lua_pop(lst, 1);
/* halfassed testing here, but not possible otherwise */
fail_if(elua_util_error_report(st, "foo", 0));
lua_pushliteral(lst, "msg");
fail_if(!elua_util_error_report(st, "foo", 5));
fail_if(lua_gettop(lst) > 0);
2015-04-16 07:23:33 -07:00
elua_state_free(st);
elua_shutdown();
2015-04-16 02:55:27 -07:00
}
END_TEST
2015-04-16 02:55:27 -07:00
void elua_lib_test(TCase *tc)
{
tcase_add_test(tc, elua_api);
2015-04-16 02:55:27 -07:00
}