Commit | Line | Data |
---|---|---|
80383c14 NR |
1 | package be.nikiroo.utils.test; |
2 | ||
3 | import java.io.File; | |
e9ca6bb8 NR |
4 | import java.util.ArrayList; |
5 | import java.util.List; | |
80383c14 NR |
6 | |
7 | import be.nikiroo.utils.IOUtils; | |
8 | import be.nikiroo.utils.resources.Bundle; | |
9 | import be.nikiroo.utils.resources.Bundles; | |
10 | import be.nikiroo.utils.resources.Meta; | |
11 | ||
32ae2079 | 12 | class BundleTest extends TestLauncher { |
80383c14 NR |
13 | private File tmp; |
14 | private B b = new B(); | |
15 | ||
80383c14 NR |
16 | public BundleTest(String[] args) { |
17 | this("Bundle test", args); | |
18 | } | |
19 | ||
20 | protected BundleTest(String name, String[] args) { | |
21 | super(name, args); | |
22 | ||
e9ca6bb8 NR |
23 | for (TestCase test : getSimpleTests()) { |
24 | addTest(test); | |
25 | } | |
80383c14 | 26 | |
e9ca6bb8 NR |
27 | addSeries(new TestLauncher("After saving/reloading the resources", args) { |
28 | { | |
29 | for (TestCase test : getSimpleTests()) { | |
30 | addTest(test); | |
80383c14 | 31 | } |
e9ca6bb8 | 32 | } |
80383c14 | 33 | |
e9ca6bb8 NR |
34 | @Override |
35 | protected void start() throws Exception { | |
36 | tmp = File.createTempFile("nikiroo-utils", ".test"); | |
37 | tmp.delete(); | |
38 | tmp.mkdir(); | |
39 | b.updateFile(tmp.getAbsolutePath()); | |
40 | Bundles.setDirectory(tmp.getAbsolutePath()); | |
41 | b.reload(false); | |
42 | } | |
43 | ||
44 | @Override | |
45 | protected void stop() { | |
46 | IOUtils.deltree(tmp); | |
47 | } | |
48 | }); | |
49 | ||
50 | addSeries(new TestLauncher("Read/Write support", args) { | |
51 | { | |
52 | addTest(new TestCase("Reload") { | |
53 | @Override | |
54 | public void test() throws Exception { | |
e9ca6bb8 | 55 | String def = b.getString(E.ONE); |
487926f7 NR |
56 | String val = "Something"; |
57 | ||
58 | b.setString(E.ONE, val); | |
59 | b.updateFile(); | |
60 | b.reload(true); | |
61 | ||
62 | assertEquals("We should have reset the bundle", def, | |
63 | b.getString(E.ONE)); | |
64 | ||
e9ca6bb8 NR |
65 | b.reload(false); |
66 | ||
e9ca6bb8 | 67 | assertEquals("We should have reloaded the same files", |
487926f7 | 68 | val, b.getString(E.ONE)); |
e9ca6bb8 NR |
69 | |
70 | // reset values for next tests | |
487926f7 NR |
71 | b.reload(true); |
72 | b.updateFile(); | |
e9ca6bb8 NR |
73 | } |
74 | }); | |
75 | ||
76 | addTest(new TestCase("Set/Get") { | |
77 | @Override | |
78 | public void test() throws Exception { | |
79 | String val = "Newp"; | |
80 | b.setString(E.ONE, val); | |
81 | String setGet = b.getString(E.ONE); | |
82 | ||
83 | assertEquals(val, setGet); | |
84 | ||
85 | // reset values for next tests | |
487926f7 | 86 | b.restoreSnapshot(null); |
e9ca6bb8 NR |
87 | } |
88 | }); | |
89 | ||
90 | addTest(new TestCase("Snapshots") { | |
91 | @Override | |
92 | public void test() throws Exception { | |
93 | String val = "Newp"; | |
94 | String def = b.getString(E.ONE); | |
95 | ||
96 | b.setString(E.ONE, val); | |
487926f7 | 97 | Object snap = b.takeSnapshot(); |
e9ca6bb8 | 98 | |
487926f7 | 99 | b.restoreSnapshot(null); |
e9ca6bb8 NR |
100 | assertEquals( |
101 | "restoreChanges(null) should clear the changes", | |
102 | def, b.getString(E.ONE)); | |
487926f7 | 103 | b.restoreSnapshot(snap); |
e9ca6bb8 NR |
104 | assertEquals( |
105 | "restoreChanges(snapshot) should restore the changes", | |
106 | val, b.getString(E.ONE)); | |
107 | ||
108 | // reset values for next tests | |
487926f7 | 109 | b.restoreSnapshot(null); |
e9ca6bb8 NR |
110 | } |
111 | }); | |
112 | ||
113 | addTest(new TestCase("updateFile with changes") { | |
114 | @Override | |
115 | public void test() throws Exception { | |
116 | String val = "Go to disk! (UTF-8 test: 日本語)"; | |
117 | ||
118 | String def = b.getString(E.ONE); | |
119 | b.setString(E.ONE, val); | |
120 | b.updateFile(tmp.getAbsolutePath()); | |
121 | b.reload(false); | |
122 | ||
123 | assertEquals(val, b.getString(E.ONE)); | |
124 | ||
125 | // reset values for next tests | |
126 | b.setString(E.ONE, def); | |
127 | b.updateFile(tmp.getAbsolutePath()); | |
128 | b.reload(false); | |
129 | } | |
130 | }); | |
131 | } | |
132 | ||
133 | @Override | |
134 | protected void start() throws Exception { | |
135 | tmp = File.createTempFile("nikiroo-utils", ".test"); | |
136 | tmp.delete(); | |
137 | tmp.mkdir(); | |
138 | b.updateFile(tmp.getAbsolutePath()); | |
139 | Bundles.setDirectory(tmp.getAbsolutePath()); | |
140 | b.reload(false); | |
141 | } | |
142 | ||
143 | @Override | |
144 | protected void stop() { | |
145 | IOUtils.deltree(tmp); | |
146 | } | |
147 | }); | |
80383c14 NR |
148 | } |
149 | ||
e9ca6bb8 | 150 | private List<TestCase> getSimpleTests() { |
80383c14 NR |
151 | String pre = ""; |
152 | ||
e9ca6bb8 NR |
153 | List<TestCase> list = new ArrayList<TestCase>(); |
154 | ||
155 | list.add(new TestCase(pre + "getString simple") { | |
80383c14 NR |
156 | @Override |
157 | public void test() throws Exception { | |
158 | assertEquals("un", b.getString(E.ONE)); | |
159 | } | |
160 | }); | |
161 | ||
e9ca6bb8 | 162 | list.add(new TestCase(pre + "getStringX with null suffix") { |
80383c14 NR |
163 | @Override |
164 | public void test() throws Exception { | |
165 | assertEquals("un", b.getStringX(E.ONE, null)); | |
166 | } | |
167 | }); | |
168 | ||
e9ca6bb8 | 169 | list.add(new TestCase(pre + "getStringX with empty suffix") { |
80383c14 NR |
170 | @Override |
171 | public void test() throws Exception { | |
172 | assertEquals(null, b.getStringX(E.ONE, "")); | |
173 | } | |
174 | }); | |
175 | ||
e9ca6bb8 | 176 | list.add(new TestCase(pre + "getStringX with existing suffix") { |
80383c14 NR |
177 | @Override |
178 | public void test() throws Exception { | |
179 | assertEquals("un + suffix", b.getStringX(E.ONE, "suffix")); | |
180 | } | |
181 | }); | |
182 | ||
e9ca6bb8 | 183 | list.add(new TestCase(pre + "getStringX with not existing suffix") { |
80383c14 NR |
184 | @Override |
185 | public void test() throws Exception { | |
186 | assertEquals(null, b.getStringX(E.ONE, "fake")); | |
187 | } | |
188 | }); | |
189 | ||
e9ca6bb8 | 190 | list.add(new TestCase(pre + "getString with UTF-8 content") { |
80383c14 NR |
191 | @Override |
192 | public void test() throws Exception { | |
193 | assertEquals("日本語 Nihongo", b.getString(E.JAPANESE)); | |
194 | } | |
195 | }); | |
e9ca6bb8 NR |
196 | |
197 | return list; | |
80383c14 NR |
198 | } |
199 | ||
200 | /** | |
201 | * {@link Bundle}. | |
202 | * | |
203 | * @author niki | |
204 | */ | |
205 | private class B extends Bundle<E> { | |
206 | protected B() { | |
db31c358 | 207 | super(E.class, N.bundle_test, null); |
80383c14 NR |
208 | } |
209 | ||
e9ca6bb8 NR |
210 | @Override |
211 | // ...and make it public | |
487926f7 NR |
212 | public Object takeSnapshot() { |
213 | return super.takeSnapshot(); | |
e9ca6bb8 NR |
214 | } |
215 | ||
216 | @Override | |
217 | // ...and make it public | |
487926f7 NR |
218 | public void restoreSnapshot(Object snap) { |
219 | super.restoreSnapshot(snap); | |
e9ca6bb8 | 220 | } |
80383c14 NR |
221 | } |
222 | ||
223 | /** | |
224 | * Key enum for the {@link Bundle}. | |
225 | * | |
226 | * @author niki | |
227 | */ | |
228 | private enum E { | |
db31c358 | 229 | @Meta |
80383c14 | 230 | ONE, // |
db31c358 | 231 | @Meta |
80383c14 | 232 | ONE_SUFFIX, // |
db31c358 | 233 | @Meta |
80383c14 | 234 | TWO, // |
db31c358 | 235 | @Meta |
80383c14 NR |
236 | JAPANESE |
237 | } | |
238 | ||
239 | /** | |
240 | * Name enum for the {@link Bundle}. | |
241 | * | |
242 | * @author niki | |
243 | */ | |
244 | private enum N { | |
245 | bundle_test | |
246 | } | |
247 | } |