TEST(c_h_is_bs_at_start_only, IF(locale_works)) { char *spec; spec = wstr_to_spec(WK_C_h); assert_string_equal("<bs>", spec); free(spec); spec = wstr_to_spec(WK_C_w WK_C_h); assert_string_equal("<c-w><c-h>", spec); free(spec); }
/* Inserts key suggestion into completion list. */ static void process_suggestion(const wchar_t lhs[], const wchar_t rhs[], const char descr[]) { if(rhs[0] != '\0') { char *const mb_rhs = wstr_to_spec(rhs); vle_compl_put_match(wstr_to_spec(lhs), mb_rhs); free(mb_rhs); } else { vle_compl_put_match(wstr_to_spec(lhs), descr); } }
TEST(functional_keys_do_not_clash_with_characters, IF(locale_works)) { { const wchar_t key_seq[] = { L'š', L'\0' }; char *const spec = wstr_to_spec(key_seq); assert_string_equal("š", spec); free(spec); } { const wchar_t key_seq[] = { WC_C_w, L'ć', L'\0' }; char *const spec = wstr_to_spec(key_seq); assert_string_equal("<c-w>ć", spec); free(spec); } }
TEST(backspace_is_bs_always, IF(locale_works)) { { const wchar_t key_seq[] = { K(KEY_BACKSPACE), L'\0' }; char *const spec = wstr_to_spec(key_seq); assert_string_equal("<bs>", spec); free(spec); } { const wchar_t key_seq[] = { WC_C_w, K(KEY_BACKSPACE), L'\0' }; char *const spec = wstr_to_spec(key_seq); assert_string_equal("<c-w><bs>", spec); free(spec); } }
char * describe_abbrev(const wchar_t lhs[], const wchar_t rhs[], int no_remap, int offset) { enum { LHS_MIN_WIDTH = 13 }; const char map_mark = no_remap ? '*' : ' '; char *const keys = wstr_to_spec(rhs); char *const descr = format_str("%-*ls %3c %s", offset + LHS_MIN_WIDTH, lhs, map_mark, keys); free(keys); return descr; }
TEST(more_non_ascii_chars_are_handled_correctly, IF(locale_works)) { char *spec; spec = wstr_to_spec(L"Д"); assert_string_equal("Д", spec); free(spec); spec = wstr_to_spec(L"Д"); assert_string_equal("Д", spec); free(spec); spec = wstr_to_spec(L"Ж"); assert_string_equal("Ж", spec); free(spec); spec = wstr_to_spec(L"М"); assert_string_equal("М", spec); free(spec); spec = wstr_to_spec(L"О"); assert_string_equal("О", spec); free(spec); spec = wstr_to_spec(L"Ф"); assert_string_equal("Ф", spec); free(spec); spec = wstr_to_spec(L"Ц"); assert_string_equal("Ц", spec); free(spec); spec = wstr_to_spec(L"Ь"); assert_string_equal("Ь", spec); free(spec); spec = wstr_to_spec(L"Ю"); assert_string_equal("Ю", spec); free(spec); spec = wstr_to_spec(L"д"); assert_string_equal("д", spec); free(spec); spec = wstr_to_spec(L"ж"); assert_string_equal("ж", spec); free(spec); spec = wstr_to_spec(L"м"); assert_string_equal("м", spec); free(spec); spec = wstr_to_spec(L"о"); assert_string_equal("о", spec); free(spec); spec = wstr_to_spec(L"ф"); assert_string_equal("ф", spec); free(spec); spec = wstr_to_spec(L"ц"); assert_string_equal("ц", spec); free(spec); spec = wstr_to_spec(L"ь"); assert_string_equal("ь", spec); free(spec); spec = wstr_to_spec(L"ю"); assert_string_equal("ю", spec); free(spec); }
TEST(non_ascii_chars_are_handled_correctly, IF(locale_works)) { char *const spec = wstr_to_spec(L"П"); assert_string_equal("П", spec); free(spec); }