SETUP() { static int option_changed; optval_t def = { .str_val = "/tmp" }; cfg.slow_fs_list = strdup(""); init_builtin_functions(); stats.line = wcsdup(L"set "); stats.index = wcslen(stats.line); stats.curs_pos = 0; stats.len = stats.index; stats.cmd_pos = -1; stats.complete_continue = 0; stats.history_search = 0; stats.line_buf = NULL; stats.complete = &complete_cmd; init_commands(); execute_cmd("command bar a"); execute_cmd("command baz b"); execute_cmd("command foo c"); init_options(&option_changed); add_option("fusehome", "fh", OPT_STR, 0, NULL, fusehome_handler, def); assert_int_equal(0, chdir("test-data/existing-files")); } TEARDOWN() { assert_int_equal(0, chdir("../..")); free(cfg.slow_fs_list); cfg.slow_fs_list = NULL; free(stats.line); reset_cmds(); clear_options(); function_reset_all(); } static void fusehome_handler(OPT_OP op, optval_t val) { } TEST(leave_spaces_at_begin) { char *buf; vle_compl_reset(); assert_int_equal(1, complete_cmd(" qui", NULL)); buf = vle_compl_next(); assert_string_equal("quit", buf); free(buf); buf = vle_compl_next(); assert_string_equal("quit", buf); free(buf); } TEST(only_user) { char *buf; vle_compl_reset(); assert_int_equal(8, complete_cmd("command ", NULL)); buf = vle_compl_next(); assert_string_equal("bar", buf); free(buf); vle_compl_reset(); assert_int_equal(9, complete_cmd(" command ", NULL)); buf = vle_compl_next(); assert_string_equal("bar", buf); free(buf); vle_compl_reset(); assert_int_equal(10, complete_cmd(" command ", NULL)); buf = vle_compl_next(); assert_string_equal("bar", buf); free(buf); } TEST(test_set_completion) { vle_compl_reset(); assert_success(line_completion(&stats)); assert_wstring_equal(L"set all", stats.line); } TEST(no_sdquoted_completion_does_nothing) { free(stats.line); stats.line = wcsdup(L"command '"); stats.len = wcslen(stats.line); stats.index = stats.len; vle_compl_reset(); assert_success(line_completion(&stats)); assert_wstring_equal(L"command '", stats.line); } static void prepare_for_line_completion(const wchar_t str[]) { free(stats.line); stats.line = wcsdup(str); stats.len = wcslen(stats.line); stats.index = stats.len; stats.complete_continue = 0; vle_compl_reset(); }
TEARDOWN_ONCE() { function_reset_all(); }