1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106
|
#include <stic.h>
#include "../../src/cfg/config.h"
#include "../../src/compat/os.h"
#include "../../src/lua/vlua.h"
#include "../../src/ui/statusbar.h"
#include "../../src/ops.h"
#include "../../src/status.h"
#include <test-utils.h>
#include "asserts.h"
static vlua_t *vlua;
SETUP()
{
vlua = vlua_init();
}
TEARDOWN()
{
vlua_finish(vlua);
}
TEST(bad_event_name)
{
BLUA_ENDS(vlua, ": No such event: random",
"vifm.events.listen {"
" event = 'random',"
" handler = function() end"
"}");
}
TEST(app_exit_is_called)
{
GLUA_EQ(vlua, "",
"i = 0\n"
"vifm.events.listen {"
" event = 'app.exit',"
" handler = function() i = i + 1 end"
"}");
vlua_events_app_exit(vlua);
vlua_process_callbacks(vlua);
GLUA_EQ(vlua, "1", "print(i)");
}
TEST(app_fsop_is_called)
{
GLUA_EQ(vlua, "",
"data = {}\n"
"vifm.events.listen {"
" event = 'app.fsop',"
" handler = function(info) data[#data + 1] = info end"
"}");
conf_setup();
cfg.use_system_calls = 1;
curr_stats.vlua = vlua;
assert_success(os_chdir(SANDBOX_PATH));
assert_int_equal(OPS_SUCCEEDED, perform_operation(OP_USR, NULL, NULL,
"echo", NULL));
assert_int_equal(OPS_SUCCEEDED, perform_operation(OP_MKFILE, NULL, NULL,
"from", NULL));
assert_int_equal(OPS_SUCCEEDED, perform_operation(OP_MOVE, NULL, NULL,
"from", "to"));
assert_int_equal(OPS_SUCCEEDED, perform_operation(OP_REMOVESL, NULL, NULL,
"to", NULL));
vlua_process_callbacks(vlua);
curr_stats.vlua = NULL;
cfg.use_system_calls = 0;
conf_teardown();
GLUA_EQ(vlua, "3", "print(#data)");
GLUA_EQ(vlua, "create\tfrom\tnil\tfalse",
"print(data[1].op, data[1].path, data[1].target, data[1].isdir)");
GLUA_EQ(vlua, "move\tfrom\tto\tfalse\tfalse\tfalse",
"print(data[2].op,"
" data[2].path,"
" data[2].target,"
" data[2].fromtrash,"
" data[2].totrash,"
" data[2].isdir)");
GLUA_EQ(vlua, "remove\tto\tnil\tfalse",
"print(data[3].op, data[3].path, data[3].target, data[3].isdir)");
}
TEST(same_handler_is_called_once)
{
GLUA_EQ(vlua, "",
"i = 0\n"
"handler = function() i = i + 1 end\n"
"vifm.events.listen { event = 'app.exit', handler = handler }"
"vifm.events.listen { event = 'app.exit', handler = handler }");
vlua_events_app_exit(vlua);
vlua_process_callbacks(vlua);
assert_string_equal("", ui_sb_last());
GLUA_EQ(vlua, "1", "print(i)");
}
/* vim: set tabstop=2 softtabstop=2 shiftwidth=2 noexpandtab cinoptions-=(0 : */
/* vim: set cinoptions+=t0 : */
|