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);