Tizen 2.1 base
[external/enchant.git] / unittests / broker / enchant_broker_dict_exists_tests.i
1 #ifndef EnchantBrokerDictExistsTestFixture\r
2 #error EnchantBrokerDictExistsTestFixture must be defined as the testfixture class to run these tests against\r
3 #endif\r
4 \r
5 #ifndef DictionaryExistsMethodCalled\r
6 #error DictionaryExistsMethodCalled must be defined as the variable that is set when the method is called\r
7 #endif\r
8 \r
9 /**\r
10  * enchant_broker_dict_exists\r
11  * @broker: A non-null #EnchantBroker\r
12  * @tag: The non-null language tag you wish to request a dictionary for ("en_US", "de_DE", ...)\r
13  *\r
14  * language tags are normalized by stripping leading and trailing whitespace,\r
15  * removing '@' and any trailing characters, removing '.' and any trailing characters,\r
16  * and replacing '-' with '_'\r
17  *\r
18  * If no providers have the given language tag, enchant will fallback to the language code\r
19  * prefix (everything before the first "_")\r
20  *\r
21  * Return existance of the requested dictionary (1 == true, 0 == false)\r
22  */\r
23 \r
24 TEST_FIXTURE(EnchantBrokerDictExistsTestFixture, \r
25              EnchantBrokerDictExists_DictDoesNotExist_FalseOnlyAsksOnce)\r
26 {\r
27   CHECK_EQUAL(0, enchant_broker_dict_exists(_broker, "en"));\r
28   CHECK_EQUAL(1,DictionaryExistsMethodCalled);\r
29 }\r
30 \r
31 TEST_FIXTURE(EnchantBrokerDictExistsTestFixture, \r
32              EnchantBrokerDictExists_DictExists_TrueAsksOnce)\r
33 {\r
34   CHECK_EQUAL(1, enchant_broker_dict_exists(_broker, "en_GB"));\r
35   CHECK_EQUAL(1,DictionaryExistsMethodCalled);\r
36 }\r
37 \r
38 TEST_FIXTURE(EnchantBrokerDictExistsTestFixture, \r
39              EnchantBrokerDictExists_BaseDictExists_TrueAsksTwice)\r
40 {\r
41   CHECK_EQUAL(1, enchant_broker_dict_exists(_broker, "qaa_CA"));\r
42   CHECK_EQUAL(2,DictionaryExistsMethodCalled);\r
43 }\r
44 \r
45 TEST_FIXTURE(EnchantBrokerDictExistsTestFixture, \r
46              EnchantBrokerDictExists_ExtraStuffAfterSecondUnderscore_NotStrippedForComparison)\r
47 {\r
48   CHECK_EQUAL(0, enchant_broker_dict_exists(_broker, "en_GB_special"));\r
49 }\r
50 \r
51 TEST_FIXTURE(EnchantBrokerDictExistsTestFixture, \r
52              EnchantBrokerDictExists_WhitespaceSurroundingLanguageTag_Removed)\r
53 {\r
54   CHECK_EQUAL(1, enchant_broker_dict_exists(_broker, "\n\r en_GB \t\f"));\r
55 }\r
56 \r
57 /* Vertical tab is not considered to be whitespace in glib!\r
58     See bug# 59388 http://bugzilla.gnome.org/show_bug.cgi?id=59388\r
59 */\r
60 TEST_FIXTURE(EnchantBrokerDictExistsTestFixture, \r
61              EnchantBrokerDictExists_VerticalTabSurroundingLanguageTag_NotRemoved)\r
62 {\r
63   CHECK_EQUAL(0, enchant_broker_dict_exists(_broker, "\ven_GB"));\r
64   CHECK_EQUAL(0, enchant_broker_dict_exists(_broker, "en_GB\v"));\r
65 }\r
66 \r
67 TEST_FIXTURE(EnchantBrokerDictExistsTestFixture, \r
68              EnchantBrokerDictExists_AtSignInLanguageTag_RemovesToTail)\r
69 {\r
70   CHECK_EQUAL(1, enchant_broker_dict_exists(_broker, "en_GB@euro"));\r
71 }\r
72 \r
73 TEST_FIXTURE(EnchantBrokerDictExistsTestFixture, \r
74              EnchantBrokerDictExists_NothingLeftAfterNormalizingLanguageTag_DoesNotCallProvider)\r
75 {\r
76   CHECK_EQUAL(0, enchant_broker_dict_exists(_broker, "@euro"));\r
77   CHECK_EQUAL(0,DictionaryExistsMethodCalled);\r
78 }\r
79 \r
80 \r
81 TEST_FIXTURE(EnchantBrokerDictExistsTestFixture, \r
82              EnchantBrokerDictExists_PeriodInLanguageTag_RemovesToTail)\r
83 {\r
84   CHECK_EQUAL(1, enchant_broker_dict_exists(_broker, "en_GB.UTF-8"));\r
85 }\r
86 \r
87 TEST_FIXTURE(EnchantBrokerDictExistsTestFixture, \r
88              EnchantBrokerDictExists_HyphensInLanguageTag_SubstitutedWithUnderscore)\r
89 {\r
90   CHECK_EQUAL(1, enchant_broker_dict_exists(_broker, "en-GB"));\r
91 }\r
92 \r
93 TEST_FIXTURE(EnchantBrokerDictExistsTestFixture, \r
94              EnchantBrokerDictExists_CalledWhenDictionaryIsNotInUse_MakesCall)\r
95 {\r
96   DictionaryExistsMethodCalled = false;\r
97   enchant_broker_dict_exists(_broker, "en-GB");\r
98   CHECK_EQUAL(1,DictionaryExistsMethodCalled);\r
99 }\r
100 \r
101 TEST_FIXTURE(EnchantBrokerDictExistsTestFixture, \r
102              EnchantBrokerDictExists_DifferentCase_Finds)\r
103 {\r
104   CHECK_EQUAL(1, enchant_broker_dict_exists(_broker, "EN_gb"));\r
105 }\r
106 \r
107 TEST_FIXTURE(EnchantBrokerDictExistsTestFixture, \r
108              EnchantBrokerDictExists_DifferentCase_NoRegion_Finds)\r
109 {\r
110   CHECK_EQUAL(1, enchant_broker_dict_exists(_broker, "QAA"));\r
111 }\r
112 \r
113 \r
114 TEST_FIXTURE(EnchantBrokerDictExistsTestFixture, \r
115              EnchantBrokerDictExists_HasPreviousError_ErrorCleared)\r
116 {\r
117   SetErrorOnMockProvider("something bad happened");\r
118 \r
119   enchant_broker_dict_exists(_broker, "en_US");\r
120 \r
121   CHECK_EQUAL((void*)NULL, (void*)enchant_broker_get_error(_broker));\r
122 }\r
123 \r
124 /////////////////////////////////////////////////////////////////////////////\r
125 // Test Error Conditions\r
126 \r
127 TEST_FIXTURE(EnchantBrokerDictExistsTestFixture, \r
128                          EnchantBrokerDictExists_NullBroker_0)\r
129 {\r
130     CHECK_EQUAL(0, enchant_broker_dict_exists (NULL, "en_US"));\r
131 }\r
132 \r
133 TEST_FIXTURE(EnchantBrokerDictExistsTestFixture, \r
134              EnchantBrokerDictExists_NullTag_0)\r
135 {\r
136     CHECK_EQUAL(0, enchant_broker_dict_exists (_broker, NULL));\r
137 }\r
138 \r
139 TEST_FIXTURE(EnchantBrokerDictExistsTestFixture, \r
140              EnchantBrokerDictExists_EmptyTag_0)\r
141 {\r
142     CHECK_EQUAL(0, enchant_broker_dict_exists (_broker, ""));\r
143 }\r
144 \r
145 TEST_FIXTURE(EnchantBrokerDictExistsTestFixture, \r
146              EnchantBrokerDictExists_InvalidTag_0_ErrorSet)\r
147 {\r
148     CHECK_EQUAL(0, enchant_broker_dict_exists (_broker, "en~US"));\r
149     CHECK(NULL != enchant_broker_get_error(_broker));\r
150 }\r