1 /* Copyright (c) 2007 Eric Scott Albright
\r
3 * Permission is hereby granted, free of charge, to any person obtaining a copy
\r
4 * of this software and associated documentation files (the "Software"), to deal
\r
5 * in the Software without restriction, including without limitation the rights
\r
6 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
\r
7 * copies of the Software, and to permit persons to whom the Software is
\r
8 * furnished to do so, subject to the following conditions:
\r
10 * The above copyright notice and this permission notice shall be included in
\r
11 * all copies or substantial portions of the Software.
\r
13 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
\r
14 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
\r
15 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
\r
16 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
\r
17 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
\r
18 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
\r
22 #include <UnitTest++.h>
\r
23 #include <enchant.h>
\r
25 #include "../EnchantBrokerTestFixture.h"
\r
27 static bool mock1ProviderRequestDictionaryCalled;
\r
28 static bool mock2ProviderRequestDictionaryCalled;
\r
30 static EnchantDict * RequestDictionary1 (EnchantProvider *me, const char *tag)
\r
32 mock1ProviderRequestDictionaryCalled = true;
\r
33 return MockEnGbAndQaaProviderRequestDictionary(me, tag);
\r
35 static EnchantDict * RequestDictionary2 (EnchantProvider *me, const char *tag)
\r
37 mock2ProviderRequestDictionaryCalled = true;
\r
38 return MockEnGbAndQaaProviderRequestDictionary(me, tag);
\r
41 MockProvider1Identify (EnchantProvider *)
\r
47 MockProvider2Identify (EnchantProvider *)
\r
51 static void Request_Dictionary_ProviderConfiguration1 (EnchantProvider * me, const char *)
\r
53 me->request_dict = RequestDictionary1;
\r
54 me->dispose_dict = MockProviderDisposeDictionary;
\r
55 me->identify = MockProvider1Identify;
\r
57 static void Request_Dictionary_ProviderConfiguration2 (EnchantProvider * me, const char *)
\r
59 me->request_dict = RequestDictionary2;
\r
60 me->dispose_dict = MockProviderDisposeDictionary;
\r
61 me->identify = MockProvider2Identify;
\r
65 enum ProviderOrder {
\r
69 ErrorNeitherCalled=4
\r
72 struct EnchantBrokerSetOrdering_TestFixture : EnchantBrokerTestFixture
\r
75 EnchantBrokerSetOrdering_TestFixture():
\r
76 EnchantBrokerTestFixture(Request_Dictionary_ProviderConfiguration1,Request_Dictionary_ProviderConfiguration2)
\r
79 mock1ProviderRequestDictionaryCalled = false;
\r
80 mock2ProviderRequestDictionaryCalled = false;
\r
83 ProviderOrder GetProviderOrder(const std::string & languageTag)
\r
85 ProviderOrder result = ErrorBothCalled;
\r
87 EnchantDict* dict = enchant_broker_request_dict(_broker, languageTag.c_str());
\r
89 if(mock2ProviderRequestDictionaryCalled && !mock1ProviderRequestDictionaryCalled)
\r
91 result = Mock2ThenMock1;
\r
93 else if(mock1ProviderRequestDictionaryCalled && !mock2ProviderRequestDictionaryCalled)
\r
95 result = Mock1ThenMock2;
\r
97 else if(!mock2ProviderRequestDictionaryCalled && !mock1ProviderRequestDictionaryCalled)
\r
99 result = ErrorNeitherCalled;
\r
102 FreeDictionary(dict);
\r
104 mock1ProviderRequestDictionaryCalled = false;
\r
105 mock2ProviderRequestDictionaryCalled = false;
\r
111 struct EnchantBrokerFileSetOrdering_TestFixture: EnchantBrokerSetOrdering_TestFixture
\r
113 std::string _tempPath;
\r
115 EnchantBrokerFileSetOrdering_TestFixture()
\r
117 if(_broker){ // this is now freed so that individual tests can set up the file state they
\r
118 // need before calling _broker = enchant_broker_init ();
\r
119 enchant_broker_free (_broker);
\r
122 _tempPath = GetTemporaryFilename("");
\r
125 ~EnchantBrokerFileSetOrdering_TestFixture()
\r
127 DeleteDirAndFiles(_tempPath);
\r
130 static void WriteStringToOrderingFile(const std::string& path, const std::string& contents)
\r
132 CreateDirectory(path);
\r
133 std::ofstream file(AddToPath(path, "enchant.ordering").c_str());
\r
141 * enchant_broker_set_ordering
\r
142 * @broker: A non-null #EnchantBroker
\r
143 * @tag: A non-null language tag (en_US)
\r
144 * @ordering: A non-null ordering (aspell,myspell,ispell,uspell,hspell)
\r
146 * Declares a preference of dictionaries to use for the language
\r
147 * described/referred to by @tag. The ordering is a comma delimited
\r
148 * list of provider names. As a special exception, the "*" tag can
\r
149 * be used as a language tag to declare a default ordering for any
\r
150 * language that does not explictly declare an ordering.
\r
154 /////////////////////////////////////////////////////////////////////////////
\r
155 // Test Normal Operation
\r
156 TEST_FIXTURE(EnchantBrokerSetOrdering_TestFixture,
\r
157 EnchantBrokerSetOrdering_AsteriskForLanguage_SetsDefaultOrdering)
\r
159 enchant_broker_set_ordering(_broker, "*", "mock2,mock1");
\r
160 CHECK_EQUAL(Mock2ThenMock1, GetProviderOrder("qaa"));
\r
162 enchant_broker_set_ordering(_broker, "*", "mock1,mock2");
\r
163 CHECK_EQUAL(Mock1ThenMock2, GetProviderOrder("qaa"));
\r
166 TEST_FIXTURE(EnchantBrokerSetOrdering_TestFixture,
\r
167 EnchantBrokerSetOrdering_NoSpaces)
\r
169 enchant_broker_set_ordering(_broker, "qaa", "mock2,mock1");
\r
170 CHECK_EQUAL(Mock2ThenMock1, GetProviderOrder("qaa"));
\r
173 TEST_FIXTURE(EnchantBrokerSetOrdering_TestFixture,
\r
174 EnchantBrokerSetOrdering_WhitespaceAroundProvider)
\r
176 enchant_broker_set_ordering(_broker, "qaa", "\n\f\t\r mock2\n \f\t\r,mock1");
\r
177 CHECK_EQUAL(Mock2ThenMock1, GetProviderOrder("qaa"));
\r
180 TEST_FIXTURE(EnchantBrokerSetOrdering_TestFixture,
\r
181 EnchantBrokerSetOrdering_WhitespaceAroundProviderAfterComma)
\r
183 enchant_broker_set_ordering(_broker, "qaa", "aspell,\n\f\t \rmock2\n\f \r\t,mock1");
\r
184 CHECK_EQUAL(Mock2ThenMock1, GetProviderOrder("qaa"));
\r
187 /* Vertical tab is not considered to be whitespace in glib!
\r
188 See bug# 59388 http://bugzilla.gnome.org/show_bug.cgi?id=59388
\r
190 TEST_FIXTURE(EnchantBrokerSetOrdering_TestFixture,
\r
191 EnchantBrokerSetOrdering_VerticalTabSurroundingProvider_NotRemoved)
\r
193 enchant_broker_set_ordering(_broker, "qaa", "\vmock2,mock1");
\r
194 CHECK_EQUAL(Mock1ThenMock2, GetProviderOrder("qaa"));
\r
196 enchant_broker_set_ordering(_broker, "qaa", "mock2\v,mock1");
\r
197 CHECK_EQUAL(Mock1ThenMock2, GetProviderOrder("qaa"));
\r
199 enchant_broker_set_ordering(_broker, "qaa", "aspell,\vmock2,mock1");
\r
200 CHECK_EQUAL(Mock1ThenMock2, GetProviderOrder("qaa"));
\r
202 enchant_broker_set_ordering(_broker, "qaa", "aspell,mock2\v,mock1");
\r
203 CHECK_EQUAL(Mock1ThenMock2, GetProviderOrder("qaa"));
\r
207 TEST_FIXTURE(EnchantBrokerSetOrdering_TestFixture,
\r
208 EnchantBrokerSetOrdering_SpecificLanguage_SetsOrderingForSpecific)
\r
210 enchant_broker_set_ordering(_broker, "qaa", "mock2,mock1");
\r
211 CHECK_EQUAL(Mock2ThenMock1, GetProviderOrder("qaa"));
\r
213 enchant_broker_set_ordering(_broker, "qaa", "mock1,mock2");
\r
214 CHECK_EQUAL(Mock1ThenMock2, GetProviderOrder("qaa"));
\r
217 TEST_FIXTURE(EnchantBrokerSetOrdering_TestFixture,
\r
218 EnchantBrokerSetOrdering_UnknownProvider_Ignored)
\r
220 enchant_broker_set_ordering(_broker, "qaa", "unknown,mock2,mock1");
\r
221 CHECK_EQUAL(Mock2ThenMock1, GetProviderOrder("qaa"));
\r
225 TEST_FIXTURE(EnchantBrokerSetOrdering_TestFixture,
\r
226 EnchantBrokerSetOrdering_WhitespaceSurroundingLanguageTag_Removed)
\r
228 enchant_broker_set_ordering(_broker, "\n\r qaa \t\f", "mock2,mock1");
\r
229 CHECK_EQUAL(Mock2ThenMock1, GetProviderOrder("qaa"));
\r
232 /* Vertical tab is not considered to be whitespace in glib!
\r
233 See bug# 59388 http://bugzilla.gnome.org/show_bug.cgi?id=59388
\r
235 TEST_FIXTURE(EnchantBrokerSetOrdering_TestFixture,
\r
236 EnchantBrokerSetOrdering_VerticalTabPreceedingLanguageTag_NotRemoved)
\r
238 enchant_broker_set_ordering(_broker, "*", "mock1,mock2");
\r
239 enchant_broker_set_ordering(_broker, "\vqaa", "mock2,mock1");
\r
240 CHECK_EQUAL(Mock1ThenMock2, GetProviderOrder("qaa"));
\r
243 /* Vertical tab is not considered to be whitespace in glib!
\r
244 See bug# 59388 http://bugzilla.gnome.org/show_bug.cgi?id=59388
\r
246 TEST_FIXTURE(EnchantBrokerSetOrdering_TestFixture,
\r
247 EnchantBrokerSetOrdering_VerticalTabFollowingLanguageTag_NotRemoved)
\r
249 enchant_broker_set_ordering(_broker, "*", "mock1,mock2");
\r
250 enchant_broker_set_ordering(_broker, "qaa\v", "mock2,mock1");
\r
251 CHECK_EQUAL(Mock1ThenMock2, GetProviderOrder("qaa"));
\r
254 TEST_FIXTURE(EnchantBrokerSetOrdering_TestFixture,
\r
255 EnchantBrokerSetOrdering_AtSignInLanguageTag_RemovesToTail)
\r
257 enchant_broker_set_ordering(_broker, "en_GB@euro", "mock2,mock1");
\r
258 CHECK_EQUAL(Mock2ThenMock1, GetProviderOrder("en_GB"));
\r
261 TEST_FIXTURE(EnchantBrokerSetOrdering_TestFixture,
\r
262 EnchantBrokerDictExists_PeriodInLanguageTag_RemovesToTail)
\r
264 enchant_broker_set_ordering(_broker, "en_GB.UTF-8", "unknown,mock2,mock1");
\r
265 CHECK_EQUAL(Mock2ThenMock1, GetProviderOrder("en_GB"));
\r
268 TEST_FIXTURE(EnchantBrokerSetOrdering_TestFixture,
\r
269 EnchantBrokerSetOrdering_HyphensInLanguageTag_SubstitutedWithUnderscore)
\r
271 enchant_broker_set_ordering(_broker, "en-GB", "mock2,mock1");
\r
272 CHECK_EQUAL(Mock2ThenMock1, GetProviderOrder("en_GB"));
\r
275 TEST_FIXTURE(EnchantBrokerSetOrdering_TestFixture,
\r
276 EnchantBrokerSetOrdering_DifferentCaseInLanguageTag_SubstitutedWithCorrectCase)
\r
278 enchant_broker_set_ordering(_broker, "EN-gb", "mock2,mock1");
\r
279 CHECK_EQUAL(Mock2ThenMock1, GetProviderOrder("en_GB"));
\r
282 TEST_FIXTURE(EnchantBrokerSetOrdering_TestFixture,
\r
283 EnchantBrokerSetOrdering_DifferentCaseInLanguageTagNoRegion_SubstitutedWithCorrectCase)
\r
285 enchant_broker_set_ordering(_broker, "QAA", "mock2,mock1");
\r
286 CHECK_EQUAL(Mock2ThenMock1, GetProviderOrder("qaa"));
\r
289 TEST_FIXTURE(EnchantBrokerSetOrdering_TestFixture,
\r
290 EnchantBrokerSetOrdering_HasPreviousError_ErrorCleared)
\r
292 SetErrorOnMockProvider("something bad happened");
\r
294 enchant_broker_set_ordering(_broker, "qaa", "mock2,mock1");
\r
296 CHECK_EQUAL((void*)NULL, (void*)enchant_broker_get_error(_broker));
\r
299 /////////////////////////////////////////////////////////////////////////////
\r
300 // Test Error Conditions
\r
301 TEST_FIXTURE(EnchantBrokerSetOrdering_TestFixture,
\r
302 EnchantBrokerSetOrdering_NullBroker_DoNothing)
\r
304 enchant_broker_set_ordering(_broker, "qaa", "mock2,mock1");
\r
305 enchant_broker_set_ordering(NULL, "qaa", "mock1,mock2");
\r
306 CHECK_EQUAL(Mock2ThenMock1, GetProviderOrder("qaa"));
\r
309 TEST_FIXTURE(EnchantBrokerSetOrdering_TestFixture,
\r
310 EnchantBrokerSetOrdering_NullLanguageTag_DoNothing)
\r
312 enchant_broker_set_ordering(_broker, "*", "mock2,mock1");
\r
313 enchant_broker_set_ordering(_broker, NULL, "mock1,mock2");
\r
314 CHECK_EQUAL(Mock2ThenMock1, GetProviderOrder("qaa"));
\r
317 TEST_FIXTURE(EnchantBrokerSetOrdering_TestFixture,
\r
318 EnchantBrokerSetOrdering_EmptyAfterNormalization_DoNothing)
\r
321 enchant_broker_set_ordering(_broker, " @ ", "mock1,mock2");
\r
324 TEST_FIXTURE(EnchantBrokerSetOrdering_TestFixture,
\r
325 EnchantBrokerSetOrdering_EmptyLanguageTag_DoNothing)
\r
328 enchant_broker_set_ordering(_broker, "", "aspell,myspell,ispell");
\r
331 TEST_FIXTURE(EnchantBrokerSetOrdering_TestFixture,
\r
332 EnchantBrokerSetOrdering_NullOrdering_DoNothing)
\r
335 enchant_broker_set_ordering(_broker, "en_GB", NULL);
\r
338 TEST_FIXTURE(EnchantBrokerSetOrdering_TestFixture,
\r
339 EnchantBrokerSetOrdering_EmptyOrdering_DoNothing)
\r
342 enchant_broker_set_ordering(_broker, "en_GB", "");
\r
347 * Ordering can also be set in enchant.ordering file:
\r
348 * Language_Tag : Provider1, Provider2, ProviderN
\r
350 * The enchant.ordering file is discovered by first looking in the user's
\r
351 * config directory, then in the .enchant directory in the user's home directory.
\r
353 * The user's config directory is located at share/enchant
\r
354 * in the module directory (that libenchant is in)
\r
355 * but it can be overridden using the registry setting
\r
356 * HKEY_CURRENT_USER\Software\Enchant\Config\Data_Dir
\r
357 * or HKEY_LOCAL_MACHINE\Software\Enchant\Config\Data_Dir
\r
359 * The user's home directory on windows can be overridden using the registry
\r
360 * setting HKEY_CURRENT_USER\Software\Enchant\Config\Home_Dir
\r
362 * The module directory can be overridden using the registry setting
\r
363 * HKEY_CURRENT_USER\Software\Enchant\Config\Module_Dir
\r
364 * or HKEY_LOCAL_MACHINE\Software\Enchant\Config\Module_Dir
\r
367 /////////////////////////////////////////////////////////////////////////////
\r
368 // Test Normal Operation
\r
370 TEST_FIXTURE(EnchantBrokerFileSetOrdering_TestFixture,
\r
371 EnchantBrokerFileOrderingMock1ThenMock2_DefaultConfigDirectory)
\r
373 WriteStringToOrderingFile(GetEnchantConfigDir(),"en_GB:mock1,mock2");
\r
374 InitializeBroker();
\r
376 CHECK_EQUAL(Mock1ThenMock2, GetProviderOrder("en_GB"));
\r
379 TEST_FIXTURE(EnchantBrokerFileSetOrdering_TestFixture,
\r
380 EnchantBrokerFileOrderingMock2ThenMock1_DefaultConfigDirectory)
\r
382 WriteStringToOrderingFile(GetEnchantConfigDir(),"en_GB:mock2,mock1");
\r
383 InitializeBroker();
\r
385 CHECK_EQUAL(Mock2ThenMock1, GetProviderOrder("en_GB"));
\r
388 TEST_FIXTURE(EnchantBrokerFileSetOrdering_TestFixture,
\r
389 EnchantBrokerFileOrderingMock1ThenMock2_UserOverriddenConfigDirectory)
\r
391 WriteStringToOrderingFile(_tempPath, "en_GB:mock1,mock2");
\r
392 SetUserRegistryConfigDir(_tempPath);
\r
393 InitializeBroker();
\r
395 CHECK_EQUAL(Mock1ThenMock2, GetProviderOrder("en_GB"));
\r
398 TEST_FIXTURE(EnchantBrokerFileSetOrdering_TestFixture,
\r
399 EnchantBrokerFileOrderingMock2ThenMock1_UserOverriddenConfigDirectory)
\r
401 WriteStringToOrderingFile(_tempPath, "en_GB:mock2,mock1");
\r
402 SetUserRegistryConfigDir(_tempPath);
\r
403 InitializeBroker();
\r
405 CHECK_EQUAL(Mock2ThenMock1, GetProviderOrder("en_GB"));
\r
408 TEST_FIXTURE(EnchantBrokerFileSetOrdering_TestFixture,
\r
409 EnchantBrokerFileOrderingMock1ThenMock2_MachineOverriddenConfigDirectory)
\r
411 WriteStringToOrderingFile(_tempPath, "en_GB:mock1,mock2");
\r
412 SetMachineRegistryConfigDir(_tempPath);
\r
413 InitializeBroker();
\r
415 CHECK_EQUAL(Mock1ThenMock2, GetProviderOrder("en_GB"));
\r
418 TEST_FIXTURE(EnchantBrokerFileSetOrdering_TestFixture,
\r
419 EnchantBrokerFileOrderingMock2ThenMock1_MachineOverriddenConfigDirectory)
\r
421 WriteStringToOrderingFile(_tempPath, "en_GB:mock2,mock1");
\r
422 SetMachineRegistryConfigDir(_tempPath);
\r
423 InitializeBroker();
\r
425 CHECK_EQUAL(Mock2ThenMock1, GetProviderOrder("en_GB"));
\r
428 // if config registry "" global from share/enchant
\r
429 TEST_FIXTURE(EnchantBrokerFileSetOrdering_TestFixture,
\r
430 EnchantBrokerFileOrdering_OverriddenConfigDirectoryIsBlank_UsesSettingsFromDefaultConfigDirectory_Mock1Then2)
\r
432 WriteStringToOrderingFile(GetEnchantConfigDir(),"en_GB:mock1,mock2");
\r
433 SetMachineRegistryConfigDir("");
\r
434 InitializeBroker();
\r
436 CHECK_EQUAL(Mock1ThenMock2, GetProviderOrder("en_GB"));
\r
439 TEST_FIXTURE(EnchantBrokerFileSetOrdering_TestFixture,
\r
440 EnchantBrokerFileOrdering_OverriddenConfigDirectoryIsBlank_UsesSettingsFromDefaultConfigDirectory_Mock2Then1)
\r
442 WriteStringToOrderingFile(GetEnchantConfigDir(),"en_GB:mock2,mock1");
\r
443 SetMachineRegistryConfigDir("");
\r
444 InitializeBroker();
\r
446 CHECK_EQUAL(Mock2ThenMock1, GetProviderOrder("en_GB"));
\r
449 TEST_FIXTURE(EnchantBrokerFileSetOrdering_TestFixture,
\r
450 EnchantBrokerFileOrdering_ExtraSpacesAndTabs_Mock1Then2)
\r
452 WriteStringToOrderingFile(GetEnchantConfigDir(),"\t en_GB\f \t:\r\t mock1\t , \tmock2\t ");
\r
453 InitializeBroker();
\r
455 CHECK_EQUAL(Mock1ThenMock2, GetProviderOrder("en_GB"));
\r
458 TEST_FIXTURE(EnchantBrokerFileSetOrdering_TestFixture,
\r
459 EnchantBrokerFileOrdering_ExtraSpaces_Mock2Then1)
\r
461 WriteStringToOrderingFile(GetEnchantConfigDir()," \ten_GB\t \f:\r \tmock2 \t,\t mock1 \t");
\r
462 InitializeBroker();
\r
464 CHECK_EQUAL(Mock2ThenMock1, GetProviderOrder("en_GB"));
\r
467 TEST_FIXTURE(EnchantBrokerFileSetOrdering_TestFixture,
\r
468 EnchantBrokerFileOrdering_ExtraNewLines_Mock1Then2)
\r
470 WriteStringToOrderingFile(GetEnchantConfigDir(),"\nen_GB:mock1,mock2\n\nqaa:mock2,mock1\n*:mock2\n");
\r
471 InitializeBroker();
\r
473 CHECK_EQUAL(Mock1ThenMock2, GetProviderOrder("en_GB"));
\r
476 TEST_FIXTURE(EnchantBrokerFileSetOrdering_TestFixture,
\r
477 EnchantBrokerFileOrdering_ExtraNewLines_Mock2Then1)
\r
479 WriteStringToOrderingFile(GetEnchantConfigDir(),"\nen_GB:mock2,mock1\n\nqaa:mock2,mock1\n*:mock2\n");
\r
480 InitializeBroker();
\r
482 CHECK_EQUAL(Mock2ThenMock1, GetProviderOrder("en_GB"));
\r
486 TEST_FIXTURE(EnchantBrokerFileSetOrdering_TestFixture,
\r
487 EnchantBrokerFileOrdering_HomeAndGlobal_HomeMergedWithGlobal_HomeTakesPrecedence_Mock1Then2)
\r
489 WriteStringToOrderingFile(GetEnchantConfigDir(),"en_GB:mock2,mock1\nqaa:mock1,mock2");
\r
490 WriteStringToOrderingFile(_tempPath, "en_GB:mock1,mock2");
\r
491 SetUserRegistryConfigDir(_tempPath);
\r
493 InitializeBroker();
\r
495 CHECK_EQUAL(Mock1ThenMock2, GetProviderOrder("en_GB"));
\r
496 CHECK_EQUAL(Mock1ThenMock2, GetProviderOrder("qaa"));
\r
499 TEST_FIXTURE(EnchantBrokerFileSetOrdering_TestFixture,
\r
500 EnchantBrokerFileOrdering_HomeAndGlobal_HomeMergedWithGlobal_HomeTakesPrecedence_Mock2Then1)
\r
502 WriteStringToOrderingFile(GetEnchantConfigDir(),"en_GB:mock1,mock2\nqaa:mock2,mock1");
\r
503 WriteStringToOrderingFile(_tempPath, "en_GB:mock2,mock1");
\r
504 SetUserRegistryConfigDir(_tempPath);
\r
506 InitializeBroker();
\r
508 CHECK_EQUAL(Mock2ThenMock1, GetProviderOrder("en_GB"));
\r
509 CHECK_EQUAL(Mock2ThenMock1, GetProviderOrder("qaa"));
\r
512 /////////////////////////////////////////////////////////////////////////////
\r
513 // Test Error Conditions
\r
514 TEST_FIXTURE(EnchantBrokerFileSetOrdering_TestFixture,
\r
515 EnchantBrokerFileOrdering_EmptyFile)
\r
517 WriteStringToOrderingFile(GetEnchantConfigDir(),"");
\r
519 InitializeBroker();
\r
522 TEST_FIXTURE(EnchantBrokerFileSetOrdering_TestFixture,
\r
523 EnchantBrokerFileOrdering_NoLanguageTag)
\r
525 WriteStringToOrderingFile(GetEnchantConfigDir(),":mock1,mock2");
\r
527 InitializeBroker();
\r
530 TEST_FIXTURE(EnchantBrokerFileSetOrdering_TestFixture,
\r
531 EnchantBrokerFileOrdering_NoColon)
\r
533 WriteStringToOrderingFile(GetEnchantConfigDir(),"en_GB mock1,mock2");
\r
535 InitializeBroker();
\r
538 TEST_FIXTURE(EnchantBrokerFileSetOrdering_TestFixture,
\r
539 EnchantBrokerFileOrdering_NoProviders_DoesNotOverridePreviousOrdering_Mock1Then2)
\r
541 WriteStringToOrderingFile(GetEnchantConfigDir(),"en_GB:");
\r
542 WriteStringToOrderingFile(_tempPath, "en_GB:mock1,mock2");
\r
543 SetUserRegistryConfigDir(_tempPath);
\r
545 InitializeBroker();
\r
547 CHECK_EQUAL(Mock1ThenMock2, GetProviderOrder("en_GB"));
\r
550 TEST_FIXTURE(EnchantBrokerFileSetOrdering_TestFixture,
\r
551 EnchantBrokerFileOrdering_NoProviders_DoesNotOverridePreviousOrdering_Mock2Then1)
\r
553 WriteStringToOrderingFile(GetEnchantConfigDir(),"en_GB:");
\r
554 WriteStringToOrderingFile(_tempPath, "en_GB:mock2,mock1");
\r
555 SetUserRegistryConfigDir(_tempPath);
\r
557 InitializeBroker();
\r
558 CHECK_EQUAL(Mock2ThenMock1, GetProviderOrder("en_GB"));
\r
561 TEST_FIXTURE(EnchantBrokerFileSetOrdering_TestFixture,
\r
562 EnchantBrokerFileOrdering_ListedTwice_LastTakesPrecedence_Mock1ThenMock2)
\r
564 WriteStringToOrderingFile(GetEnchantConfigDir(),"en_GB:mock2,mock1\nen_GB:mock1,mock2");
\r
565 InitializeBroker();
\r
567 CHECK_EQUAL(Mock1ThenMock2, GetProviderOrder("en_GB"));
\r
570 TEST_FIXTURE(EnchantBrokerFileSetOrdering_TestFixture,
\r
571 EnchantBrokerFileOrdering_ListedTwice_LastTakesPrecedence_Mock2ThenMock1)
\r
573 WriteStringToOrderingFile(GetEnchantConfigDir(),"en_GB:mock1,mock2\nen_GB:mock2,mock1");
\r
574 InitializeBroker();
\r
576 CHECK_EQUAL(Mock2ThenMock1, GetProviderOrder("en_GB"));
\r