diff --git a/Tests/lib/xml_compiler/data/system_xml/inputsourcedef.xml b/Tests/lib/xml_compiler/data/system_xml/inputsourcedef.xml index d1d1aa945..8317a0b36 100644 --- a/Tests/lib/xml_compiler/data/system_xml/inputsourcedef.xml +++ b/Tests/lib/xml_compiler/data/system_xml/inputsourcedef.xml @@ -3,264 +3,315 @@ {{ INPUTSOURCEDEF_REPLACEMENT }} - - + + AINU + com.apple.kotoeri.Ainu + + + + BELGIAN + nl + + + BEPO - BEPO_AZERTYCMD + com.apple.keyboardlayout.fr-dvorak-bepo.keylayout.FrenchDvorak + + + + BEPO_STANDARD + com.apple.keyboardlayout.fr-dvorak-bepo.keylayout.FrenchDvorak + + + + BEPO_AZERTYCMD com.apple.keyboardlayout.fr-dvorak-bepo.keylayout.FrenchDvorak-AzertyCmd - BEPO - BEPO_AZERTYCMDROMAN + BEPO_AZERTYCMDROMAN com.apple.keyboardlayout.fr-dvorak-bepo.keylayout.FrenchDvorak-AzertyCmdRoman - BEPO - BEPO_QWERTYCMD + BEPO_QWERTYCMD com.apple.keyboardlayout.fr-dvorak-bepo.keylayout.FrenchDvorak-QwertyCmd - BEPO - BEPO_QWERTYCMDROMAN + BEPO_QWERTYCMDROMAN com.apple.keyboardlayout.fr-dvorak-bepo.keylayout.FrenchDvorak-QwertyCmdRoman - BEPO - BEPO_QWERTZCMD + BEPO_QWERTZCMD com.apple.keyboardlayout.fr-dvorak-bepo.keylayout.FrenchDvorak-QwertzCmd - BEPO - BEPO_QWERTZCMDROMAN + BEPO_QWERTZCMDROMAN com.apple.keyboardlayout.fr-dvorak-bepo.keylayout.FrenchDvorak-QwertzCmdRoman - BEPO - BEPO_ROMAN + BEPO_ROMAN com.apple.keyboardlayout.fr-dvorak-bepo.keylayout.FrenchDvorakRoman + + + + BRITISH + com.apple.keylayout.British + + + + BULGARIAN + bg + + + + BULGARIAN_PHONETIC + com.apple.keylayout.Bulgarian-Phonetic + + + + CANADIAN + com.apple.keylayout.Canadian + + + + CHINESE + zh-Hans + zh-Hant + + + + CHINESE_SIMPLIFIED + com.apple.inputmethod.SCIM + CHINESE_TRADITIONAL - CHINESE_TRADITIONAL_YAHOO_KEYKEY - com.yahoo.inputmethod.KeyKey + com.apple.inputmethod.TCIM - DVORAK - DVORAK_LEFT - com.apple.keylayout.Dvorak-Left + CHINESE_TRADITIONAL_YAHOO_KEYKEY + com.yahoo.inputmethod.KeyKey - DVORAK - DVORAK_QWERTYCMD - com.apple.keylayout.DVORAK-QWERTYCMD + CROATIAN + hr - DVORAK - DVORAK_RIGHT - com.apple.keylayout.Dvorak-Right + CZECH + cs - ENGLISH_TYPOGRAPHIC - org.unknown.keylayout.English-IlyaBirmanTypography + DANISH + da + - ENGLISH - JANSI - org.unknown.keylayout.JANSI + DVORAK + com.apple.keylayout.Dvorak + com.apple.keylayout.DVORAK - NORWEGIAN - NORWEGIAN_EXTENDED - com.apple.keylayout.NorwegianExtended + DVORAK_STANDARD + com.apple.keylayout.Dvorak - NORWEGIAN - NORWEGIAN_SAMI_PC - com.apple.keylayout.NorwegianSami-PC + DVORAK_LEFT + com.apple.keylayout.Dvorak-Left - POLISH - POLISH_PRO - com.apple.keylayout.PolishPro + DVORAK_QWERTYCMD + com.apple.keylayout.DVORAK-QWERTYCMD - RUSSIAN - org.unknown.keylayout.RussianWin + DVORAK_RIGHT + com.apple.keylayout.Dvorak-Right + - RUSSIAN_TYPOGRAPHIC - org.unknown.keylayout.Russian-IlyaBirmanTypography + ENGLISH + en + com.apple.inputmethod.Roman + com.apple.inputmethod.Japanese.FullWidthRoman + org.unknown.keylayout.JANSI - SPANISH - SPANISH_ISO - com.apple.keylayout.Spanish-ISO + ENGLISH_TYPOGRAPHIC + org.unknown.keylayout.English-IlyaBirmanTypography - SWISS - SWISS_FRENCH - com.apple.keylayout.SwissFrench + FINNISH + fi - SWISS - SWISS_GERMAN - com.apple.keylayout.SwissGerman + FRENCH + fr - - BEPO - com.apple.keyboardlayout.fr-dvorak-bepo.keylayout.FrenchDvorak + GERMAN + de - BRITISH - com.apple.keylayout.British + HEBREW + he + org.unknown.keylayout.Hebrew - CANADIAN - com.apple.keylayout.Canadian + HUNGARIAN + hu - DVORAK - com.apple.keylayout.Dvorak + HUNGARIAN_PRO + com.apple.keyboardlayout.unicode.keylayout.HungarianPRO - SWISS - com.apple.keylayout.Swiss + HUNGARIAN_PRO_PC + com.apple.keyboardlayout.unicode.keylayout.HungarianPROPC - - AINU - com.apple.kotoeri.Ainu + ITALIAN + it - CHINESE_TRADITIONAL - com.apple.inputmethod.TCIM + ITALIAN_TYPEWRITER + com.apple.keylayout.Italian - CHINESE_SIMPLIFIED - com.apple.inputmethod.SCIM + JANSI + org.unknown.keylayout.JANSI JAPANESE - JAPANESE_HIRAGANA + com.apple.inputmethod.Japanese com.apple.inputmethod.Japanese.Hiragana + com.apple.inputmethod.Japanese.Katakana + com.apple.inputmethod.Japanese.HalfWidthKana - JAPANESE - JAPANESE_KATAKANA + JAPANESE_HIRAGANA + com.apple.inputmethod.Japanese + com.apple.inputmethod.Japanese.Hiragana + + + + JAPANESE_KATAKANA com.apple.inputmethod.Japanese.Katakana - JAPANESE - JAPANESE_FULLWIDTH_ROMAN + JAPANESE_FULLWIDTH_ROMAN com.apple.inputmethod.Japanese.FullWidthRoman - JAPANESE - JAPANESE_HALFWIDTH_KANA + JAPANESE_HALFWIDTH_KANA com.apple.inputmethod.Japanese.HalfWidthKana - JAPANESE - com.apple.inputmethod.Japanese + KOREAN + com.apple.inputmethod.Korean - KOREAN - com.apple.inputmethod.Korean + LITHUANIAN + com.apple.keylayout.Lithuanian - + + NORWEGIAN + nb + - - BULGARIAN - bg + NORWEGIAN_STANDARD + com.apple.keylayout.Norwegian - CROATIAN - hr + NORWEGIAN_EXTENDED + com.apple.keylayout.NorwegianExtended - CZECH - cs + NORWEGIAN_SAMI_PC + com.apple.keylayout.NorwegianSami-PC - ENGLISH - en + POLISH + pl - FINNISH - fi + POLISH_STANDARD + com.apple.keylayout.Polish - FRENCH - fr + POLISH_PRO + com.apple.keylayout.PolishPro - GERMAN - de + PORTUGUESE + pt - HUNGARIAN - hu + RUSSIAN + ru + org.unknown.keylayout.RussianWin - NORWEGIAN - nb + RUSSIAN_STANDARD + com.apple.keylayout.Russian - POLISH - pl + RUSSIAN_WIN + com.apple.keylayout.RussianWin - RUSSIAN - ru + RUSSIAN_PHONETIC + com.apple.keylayout.Russian-Phonetic + + + + RUSSIAN_TYPOGRAPHIC + org.unknown.keylayout.Russian-IlyaBirmanTypography @@ -273,11 +324,31 @@ es + + SPANISH_ISO + com.apple.keylayout.Spanish-ISO + + SWEDISH sv + + SWISS + com.apple.keylayout.Swiss + + + + SWISS_FRENCH + com.apple.keylayout.SwissFrench + + + + SWISS_GERMAN + com.apple.keylayout.SwissGerman + + THAI th @@ -288,4 +359,15 @@ uk + + + UKRAINIAN_PC + org.unknown.keylayout.Ukrainian-PC + + + + UNICODEHEXINPUT + com.apple.keylayout.UnicodeHexInput + + diff --git a/Tests/lib/xml_compiler/test.cpp b/Tests/lib/xml_compiler/test.cpp index 4397957c3..938949240 100644 --- a/Tests/lib/xml_compiler/test.cpp +++ b/Tests/lib/xml_compiler/test.cpp @@ -104,6 +104,27 @@ TEST(pqrs_xml_compiler, reload) { // ------------------------------------------------------------ // inputsourcedef + { + std::vector expect; + expect.push_back(*(xml_compiler.get_symbol_map().get_optional("InputSource::CANADIAN"))); + expect.push_back(*(xml_compiler.get_symbol_map().get_optional("InputSource::ENGLISH"))); + + std::vector actual; + for (size_t i = 0; i < xml_compiler.get_inputsource_vector_size(); ++i) { + uint32_t inputsource = 0; + if (xml_compiler.is_inputsource_matched(inputsource, + i, + "en", + "com.apple.keylayout.Canadian", + "")) { + actual.push_back(inputsource); + } + } + + EXPECT_EQ(expect, actual); + } + +#if 0 { uint32_t inputsource; xml_compiler.get_inputsourceid(inputsource, @@ -158,6 +179,7 @@ TEST(pqrs_xml_compiler, reload) { ""); EXPECT_EQ(xml_compiler.get_symbol_map().get_optional("InputSource::MY_ENGLISH"), inputsource); } +#endif // ------------------------------------------------------------ // vkopenurldef @@ -198,8 +220,8 @@ TEST(pqrs_xml_compiler, reload) { // system 6 + private 4 - duplicated 2 == 8 EXPECT_EQ(8, xml_compiler.get_app_vector_size()); - // system 51 + private 1 == 52 - EXPECT_EQ(52, xml_compiler.get_inputsource_vector_size()); + // system 70 + private 1 == 71 + EXPECT_EQ(71, xml_compiler.get_inputsource_vector_size()); // system 2 + private 0 == 2 EXPECT_EQ(2, xml_compiler.get_window_name_vector_size()); @@ -574,25 +596,43 @@ TEST(pqrs_xml_compiler, reload_bindings_clang) { pqrs_xml_compiler_reload(p); { - uint32_t inputsource; + std::vector expect; + expect.push_back(pqrs_xml_compiler_get_symbol_map_value(p, "InputSource::CANADIAN")); + expect.push_back(pqrs_xml_compiler_get_symbol_map_value(p, "InputSource::ENGLISH")); - pqrs_xml_compiler_get_inputsourceid(p, - &inputsource, - "fr", - "com.apple.keylayout.French", - nullptr); - EXPECT_TRUE(inputsource != 0); + std::vector actual; + for (size_t i = 0; i < pqrs_xml_compiler_get_inputsource_vector_size(p); ++i) { + uint32_t inputsource = 0; + if (pqrs_xml_compiler_is_inputsource_matched(p, + &inputsource, + i, + "en", + "com.apple.keylayout.Canadian", + "")) { + actual.push_back(inputsource); + } + } + + EXPECT_EQ(expect, actual); } { - uint32_t inputsource; + std::vector expect; + + std::vector actual; + for (size_t i = 0; i < pqrs_xml_compiler_get_inputsource_vector_size(p); ++i) { + uint32_t inputsource = 0; + if (pqrs_xml_compiler_is_inputsource_matched(p, + &inputsource, + i, + nullptr, + nullptr, + nullptr)) { + actual.push_back(inputsource); + } + } - pqrs_xml_compiler_get_inputsourceid(p, - &inputsource, - nullptr, - nullptr, - nullptr); - EXPECT_TRUE(inputsource == 0); + EXPECT_EQ(expect, actual); } pqrs_xml_compiler_terminate(&p); @@ -647,8 +687,8 @@ TEST(pqrs_xml_compiler, reload_invalid_xml) { pqrs::xml_compiler xml_compiler("data/system_xml", "data/invalid_xml/dup_identifier"); xml_compiler.reload(); const char* message = "Duplicated identifier:\n" - "\n" - "private.swap_space_and_tab"; + "\n" + "private.swap_space_and_tab"; EXPECT_EQ(message, xml_compiler.get_error_information().get_message()); EXPECT_EQ(1, xml_compiler.get_error_information().get_count()); } @@ -668,8 +708,8 @@ TEST(pqrs_xml_compiler, reload_invalid_xml) { pqrs::xml_compiler xml_compiler("data/system_xml", "data/invalid_xml/invalid_identifier_place"); xml_compiler.reload(); const char* message = " must be placed directly under :\n" - "\n" - "private.swap_space_and_tab"; + "\n" + "private.swap_space_and_tab"; EXPECT_EQ(message, xml_compiler.get_error_information().get_message()); EXPECT_EQ(1, xml_compiler.get_error_information().get_count()); } @@ -677,8 +717,8 @@ TEST(pqrs_xml_compiler, reload_invalid_xml) { pqrs::xml_compiler xml_compiler("data/system_xml", "data/invalid_xml/invalid_identifier_place2"); xml_compiler.reload(); const char* message = " must be placed directly under :\n" - "\n" - "private.swap_space_and_tab"; + "\n" + "private.swap_space_and_tab"; EXPECT_EQ(message, xml_compiler.get_error_information().get_message()); EXPECT_EQ(1, xml_compiler.get_error_information().get_count()); } @@ -686,7 +726,7 @@ TEST(pqrs_xml_compiler, reload_invalid_xml) { pqrs::xml_compiler xml_compiler("data/system_xml", "data/invalid_xml/invalid_identifier_place3"); xml_compiler.reload(); const char* message = "You should not write in which has child nodes.\n" - "Remove private.invalid_identifier_place3."; + "Remove private.invalid_identifier_place3."; EXPECT_EQ(message, xml_compiler.get_error_information().get_message()); EXPECT_EQ(1, xml_compiler.get_error_information().get_count()); } @@ -697,8 +737,8 @@ TEST(pqrs_xml_compiler, reload_invalid_xml) { pqrs::xml_compiler xml_compiler("data/system_xml", "data/invalid_xml/unknown_autogen"); xml_compiler.reload(); const char* message = "Invalid :\n" - "\n" - "__KeyToKey2__ KeyCode::SPACE, VK_SHIFT, KeyCode::TAB"; + "\n" + "__KeyToKey2__ KeyCode::SPACE, VK_SHIFT, KeyCode::TAB"; EXPECT_EQ(message, xml_compiler.get_error_information().get_message()); EXPECT_EQ(1, xml_compiler.get_error_information().get_count()); @@ -771,8 +811,8 @@ TEST(pqrs_xml_compiler, reload_invalid_xml) { pqrs::xml_compiler xml_compiler("data/system_xml", "data/invalid_xml/autogen_invalid_pipe_type"); xml_compiler.reload(); const char* message = "Cannot connect(|) except ModifierFlag:\n" - "\n" - "KeyCode::SPACE|KeyCode::TAB"; + "\n" + "KeyCode::SPACE|KeyCode::TAB"; EXPECT_EQ(message, xml_compiler.get_error_information().get_message()); EXPECT_EQ(1, xml_compiler.get_error_information().get_count()); } @@ -877,8 +917,8 @@ TEST(pqrs_xml_compiler, reload_invalid_xml) { pqrs::xml_compiler xml_compiler("data/system_xml", "data/invalid_xml/symbol_map_xml_invalid_value"); xml_compiler.reload(); const char* message = "Invalid 'value' Attribute within :\n" - "\n" - ""; + "\n" + ""; EXPECT_EQ(message, xml_compiler.get_error_information().get_message()); EXPECT_EQ(1, xml_compiler.get_error_information().get_count()); } @@ -968,8 +1008,8 @@ TEST(pqrs_xml_compiler, reload_invalid_xml) { pqrs::xml_compiler xml_compiler("data/system_xml", "data/invalid_xml/devicevendordef_invalid_value"); xml_compiler.reload(); const char* message = "Invalid within :\n" - "\n" - "XXX"; + "\n" + "XXX"; EXPECT_EQ(message, std::string(xml_compiler.get_error_information().get_message())); EXPECT_EQ(1, xml_compiler.get_error_information().get_count()); } @@ -1004,8 +1044,8 @@ TEST(pqrs_xml_compiler, reload_invalid_xml) { pqrs::xml_compiler xml_compiler("data/system_xml", "data/invalid_xml/deviceproductdef_invalid_value"); xml_compiler.reload(); const char* message = "Invalid within :\n" - "\n" - "XXX"; + "\n" + "XXX"; EXPECT_EQ(message, std::string(xml_compiler.get_error_information().get_message())); EXPECT_EQ(1, xml_compiler.get_error_information().get_count()); } @@ -1192,8 +1232,12 @@ TEST(pqrs_xml_compiler_filter_vector, filter_vector) { " " " INPUTSOURCE1" " INPUTSOURCE2, INPUTSOURCE3" + " INPUTSOURCE1" + " INPUTSOURCE2, INPUTSOURCE3" " INPUTSOURCE1" " INPUTSOURCE2, INPUTSOURCE3" + " INPUTSOURCE1" + " INPUTSOURCE2, INPUTSOURCE3" " config1,config2" " config3" " ModifierFlag::MOD1 ||| ModifierFlag::MOD3" @@ -1297,6 +1341,17 @@ TEST(pqrs_xml_compiler_filter_vector, filter_vector) { expected.push_back(111); expected.push_back(112); + // InputSource::INPUTSOURCE1 + expected.push_back(2); // count + expected.push_back(BRIDGE_FILTERTYPE_INPUTSOURCE_ONLY); + expected.push_back(110); + + // InputSource::INPUTSOURCE2, InputSource::INPUTSOURCE3 + expected.push_back(3); // count + expected.push_back(BRIDGE_FILTERTYPE_INPUTSOURCE_NOT); + expected.push_back(111); + expected.push_back(112); + // INPUTSOURCE1 expected.push_back(2); // count expected.push_back(BRIDGE_FILTERTYPE_INPUTSOURCE_ONLY); @@ -1308,6 +1363,17 @@ TEST(pqrs_xml_compiler_filter_vector, filter_vector) { expected.push_back(111); expected.push_back(112); + // INPUTSOURCE1 + expected.push_back(2); // count + expected.push_back(BRIDGE_FILTERTYPE_INPUTSOURCE_ONLY); + expected.push_back(110); + + // INPUTSOURCE2, INPUTSOURCE3 + expected.push_back(3); // count + expected.push_back(BRIDGE_FILTERTYPE_INPUTSOURCE_NOT); + expected.push_back(111); + expected.push_back(112); + // config1,config2 expected.push_back(3); // count expected.push_back(BRIDGE_FILTERTYPE_CONFIG_ONLY);