1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
|
package com.anysoftkeyboard.dictionaries.prefsprovider;
import com.anysoftkeyboard.AnySoftKeyboardRobolectricTestRunner;
import com.anysoftkeyboard.base.utils.OptionalCompat;
import com.anysoftkeyboard.dictionaries.UserDictionary;
import com.anysoftkeyboard.prefs.backup.PrefItem;
import com.anysoftkeyboard.prefs.backup.PrefsRoot;
import com.anysoftkeyboard.test.TestUtils;
import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.robolectric.RuntimeEnvironment;
import java.util.Arrays;
import java.util.List;
@RunWith(AnySoftKeyboardRobolectricTestRunner.class)
public class UserDictionaryPrefsProviderTest {
@Test
public void testHappyPath() throws Exception {
UserDictionary enUserDictionary = new UserDictionary(RuntimeEnvironment.application, "en");
enUserDictionary.loadDictionary();
enUserDictionary.addWord("hello", 1);
enUserDictionary.addWord("yo", 2);
enUserDictionary.addWord("shalom", 3);
Assert.assertTrue(enUserDictionary.isValidWord("hello"));
enUserDictionary.close();
UserDictionary frUserDictionary = new UserDictionary(RuntimeEnvironment.application, "fr");
frUserDictionary.loadDictionary();
frUserDictionary.addWord("Avoir", 1);
frUserDictionary.addWord("Faire", 2);
frUserDictionary.addWord("Demander", 3);
Assert.assertTrue(frUserDictionary.isValidWord("Demander"));
frUserDictionary.close();
UserDictionary nullUserDictionary = new UserDictionary(RuntimeEnvironment.application, null);
nullUserDictionary.loadDictionary();
nullUserDictionary.addWord("WHAT", 1);
nullUserDictionary.addWord("IS", 2);
nullUserDictionary.addWord("NULL", 3);
Assert.assertTrue(nullUserDictionary.isValidWord("NULL"));
nullUserDictionary.close();
UserDictionaryPrefsProvider underTest = new UserDictionaryPrefsProvider(RuntimeEnvironment.application, Arrays.asList(OptionalCompat.of("en"), OptionalCompat.of("fr"), OptionalCompat.of(null)));
final PrefsRoot prefsRoot = underTest.getPrefsRoot();
Assert.assertEquals(1, prefsRoot.getVersion());
final List<PrefItem> localeItems = TestUtils.convertToList(prefsRoot.getChildren());
Assert.assertEquals(3, localeItems.size());
//deleting storage
enUserDictionary = new UserDictionary(RuntimeEnvironment.application, "en");
enUserDictionary.loadDictionary();
enUserDictionary.deleteWord("hello");
enUserDictionary.deleteWord("yo");
enUserDictionary.deleteWord("shalom");
Assert.assertFalse(enUserDictionary.isValidWord("hello"));
enUserDictionary.close();
frUserDictionary = new UserDictionary(RuntimeEnvironment.application, "fr");
frUserDictionary.loadDictionary();
frUserDictionary.deleteWord("Avoir");
frUserDictionary.deleteWord("Faire");
frUserDictionary.deleteWord("Demander");
Assert.assertFalse(frUserDictionary.isValidWord("Demander"));
frUserDictionary.close();
nullUserDictionary = new UserDictionary(RuntimeEnvironment.application, null);
nullUserDictionary.loadDictionary();
nullUserDictionary.deleteWord("WHAT");
nullUserDictionary.deleteWord("IS");
nullUserDictionary.deleteWord("NULL");
Assert.assertFalse(nullUserDictionary.isValidWord("NULL"));
nullUserDictionary.close();
underTest.storePrefsRoot(prefsRoot);
enUserDictionary = new UserDictionary(RuntimeEnvironment.application, "en");
enUserDictionary.loadDictionary();
Assert.assertTrue(enUserDictionary.isValidWord("hello"));
Assert.assertTrue(enUserDictionary.isValidWord("yo"));
Assert.assertTrue(enUserDictionary.isValidWord("shalom"));
enUserDictionary.close();
verifyLocale("en", "hello", "Avoir");
verifyLocale("fr", "Avoir", "shalom");
verifyLocale(null, "WHAT", "Avoir");
}
private void verifyLocale(String locale, String validWord, String invalidWord) {
UserDictionary userDictionary = new UserDictionary(RuntimeEnvironment.application, locale);
userDictionary.loadDictionary();
Assert.assertTrue(userDictionary.isValidWord(validWord));
Assert.assertFalse(userDictionary.isValidWord(invalidWord));
userDictionary.close();
}
}
|