|
1 /* Any copyright is dedicated to the Public Domain. |
|
2 * http://creativecommons.org/publicdomain/zero/1.0/ */ |
|
3 |
|
4 const {classes: Cc, interfaces: Ci, results: Cr, utils: Cu, manager: Cm} = Components; |
|
5 |
|
6 Cu.import("resource://gre/modules/Preferences.jsm"); |
|
7 |
|
8 function run_test() { |
|
9 run_next_test(); |
|
10 } |
|
11 |
|
12 add_test(function test_set_get_pref() { |
|
13 Preferences.set("test_set_get_pref.integer", 1); |
|
14 do_check_eq(Preferences.get("test_set_get_pref.integer"), 1); |
|
15 |
|
16 Preferences.set("test_set_get_pref.string", "foo"); |
|
17 do_check_eq(Preferences.get("test_set_get_pref.string"), "foo"); |
|
18 |
|
19 Preferences.set("test_set_get_pref.boolean", true); |
|
20 do_check_eq(Preferences.get("test_set_get_pref.boolean"), true); |
|
21 |
|
22 // Clean up. |
|
23 Preferences.resetBranch("test_set_get_pref."); |
|
24 |
|
25 run_next_test(); |
|
26 }); |
|
27 |
|
28 add_test(function test_set_get_branch_pref() { |
|
29 let prefs = new Preferences("test_set_get_branch_pref."); |
|
30 |
|
31 prefs.set("something", 1); |
|
32 do_check_eq(prefs.get("something"), 1); |
|
33 do_check_false(Preferences.has("something")); |
|
34 |
|
35 // Clean up. |
|
36 prefs.reset("something"); |
|
37 |
|
38 run_next_test(); |
|
39 }); |
|
40 |
|
41 add_test(function test_set_get_multiple_prefs() { |
|
42 Preferences.set({ "test_set_get_multiple_prefs.integer": 1, |
|
43 "test_set_get_multiple_prefs.string": "foo", |
|
44 "test_set_get_multiple_prefs.boolean": true }); |
|
45 |
|
46 let [i, s, b] = Preferences.get(["test_set_get_multiple_prefs.integer", |
|
47 "test_set_get_multiple_prefs.string", |
|
48 "test_set_get_multiple_prefs.boolean"]); |
|
49 |
|
50 do_check_eq(i, 1); |
|
51 do_check_eq(s, "foo"); |
|
52 do_check_eq(b, true); |
|
53 |
|
54 // Clean up. |
|
55 Preferences.resetBranch("test_set_get_multiple_prefs."); |
|
56 |
|
57 run_next_test(); |
|
58 }); |
|
59 |
|
60 add_test(function test_get_multiple_prefs_with_default_value() { |
|
61 Preferences.set({ "test_get_multiple_prefs_with_default_value.a": 1, |
|
62 "test_get_multiple_prefs_with_default_value.b": 2 }); |
|
63 |
|
64 let [a, b, c] = Preferences.get(["test_get_multiple_prefs_with_default_value.a", |
|
65 "test_get_multiple_prefs_with_default_value.b", |
|
66 "test_get_multiple_prefs_with_default_value.c"], |
|
67 0); |
|
68 |
|
69 do_check_eq(a, 1); |
|
70 do_check_eq(b, 2); |
|
71 do_check_eq(c, 0); |
|
72 |
|
73 // Clean up. |
|
74 Preferences.resetBranch("test_get_multiple_prefs_with_default_value."); |
|
75 |
|
76 run_next_test(); |
|
77 }); |
|
78 |
|
79 add_test(function test_set_get_unicode_pref() { |
|
80 Preferences.set("test_set_get_unicode_pref", String.fromCharCode(960)); |
|
81 do_check_eq(Preferences.get("test_set_get_unicode_pref"), String.fromCharCode(960)); |
|
82 |
|
83 // Clean up. |
|
84 Preferences.reset("test_set_get_unicode_pref"); |
|
85 |
|
86 run_next_test(); |
|
87 }); |
|
88 |
|
89 add_test(function test_set_null_pref() { |
|
90 try { |
|
91 Preferences.set("test_set_null_pref", null); |
|
92 // We expect this to throw, so the test is designed to fail if it doesn't. |
|
93 do_check_true(false); |
|
94 } |
|
95 catch(ex) {} |
|
96 |
|
97 run_next_test(); |
|
98 }); |
|
99 |
|
100 add_test(function test_set_undefined_pref() { |
|
101 try { |
|
102 Preferences.set("test_set_undefined_pref"); |
|
103 // We expect this to throw, so the test is designed to fail if it doesn't. |
|
104 do_check_true(false); |
|
105 } |
|
106 catch(ex) {} |
|
107 |
|
108 run_next_test(); |
|
109 }); |
|
110 |
|
111 add_test(function test_set_unsupported_pref() { |
|
112 try { |
|
113 Preferences.set("test_set_unsupported_pref", new Array()); |
|
114 // We expect this to throw, so the test is designed to fail if it doesn't. |
|
115 do_check_true(false); |
|
116 } |
|
117 catch(ex) {} |
|
118 |
|
119 run_next_test(); |
|
120 }); |
|
121 |
|
122 // Make sure that we can get a string pref that we didn't set ourselves |
|
123 // (i.e. that the way we get a string pref using getComplexValue doesn't |
|
124 // hork us getting a string pref that wasn't set using setComplexValue). |
|
125 add_test(function test_get_string_pref() { |
|
126 let svc = Cc["@mozilla.org/preferences-service;1"]. |
|
127 getService(Ci.nsIPrefService). |
|
128 getBranch(""); |
|
129 svc.setCharPref("test_get_string_pref", "a normal string"); |
|
130 do_check_eq(Preferences.get("test_get_string_pref"), "a normal string"); |
|
131 |
|
132 // Clean up. |
|
133 Preferences.reset("test_get_string_pref"); |
|
134 |
|
135 run_next_test(); |
|
136 }); |
|
137 |
|
138 add_test(function test_set_get_number_pref() { |
|
139 Preferences.set("test_set_get_number_pref", 5); |
|
140 do_check_eq(Preferences.get("test_set_get_number_pref"), 5); |
|
141 |
|
142 // Non-integer values get converted to integers. |
|
143 Preferences.set("test_set_get_number_pref", 3.14159); |
|
144 do_check_eq(Preferences.get("test_set_get_number_pref"), 3); |
|
145 |
|
146 // Values outside the range -(2^31-1) to 2^31-1 overflow. |
|
147 try { |
|
148 Preferences.set("test_set_get_number_pref", Math.pow(2, 31)); |
|
149 // We expect this to throw, so the test is designed to fail if it doesn't. |
|
150 do_check_true(false); |
|
151 } |
|
152 catch(ex) {} |
|
153 |
|
154 // Clean up. |
|
155 Preferences.reset("test_set_get_number_pref"); |
|
156 |
|
157 run_next_test(); |
|
158 }); |
|
159 |
|
160 add_test(function test_reset_pref() { |
|
161 Preferences.set("test_reset_pref", 1); |
|
162 Preferences.reset("test_reset_pref"); |
|
163 do_check_eq(Preferences.get("test_reset_pref"), undefined); |
|
164 |
|
165 run_next_test(); |
|
166 }); |
|
167 |
|
168 add_test(function test_reset_pref_branch() { |
|
169 Preferences.set("test_reset_pref_branch.foo", 1); |
|
170 Preferences.set("test_reset_pref_branch.bar", 2); |
|
171 Preferences.resetBranch("test_reset_pref_branch."); |
|
172 do_check_eq(Preferences.get("test_reset_pref_branch.foo"), undefined); |
|
173 do_check_eq(Preferences.get("test_reset_pref_branch.bar"), undefined); |
|
174 |
|
175 run_next_test(); |
|
176 }); |
|
177 |
|
178 // Make sure the module doesn't throw an exception when asked to reset |
|
179 // a nonexistent pref. |
|
180 add_test(function test_reset_nonexistent_pref() { |
|
181 Preferences.reset("test_reset_nonexistent_pref"); |
|
182 |
|
183 run_next_test(); |
|
184 }); |
|
185 |
|
186 // Make sure the module doesn't throw an exception when asked to reset |
|
187 // a nonexistent pref branch. |
|
188 add_test(function test_reset_nonexistent_pref_branch() { |
|
189 Preferences.resetBranch("test_reset_nonexistent_pref_branch."); |
|
190 |
|
191 run_next_test(); |
|
192 }); |
|
193 |
|
194 add_test(function test_observe_prefs_function() { |
|
195 let observed = false; |
|
196 let observer = function() { observed = !observed }; |
|
197 |
|
198 Preferences.observe("test_observe_prefs_function", observer); |
|
199 Preferences.set("test_observe_prefs_function", "something"); |
|
200 do_check_true(observed); |
|
201 |
|
202 Preferences.ignore("test_observe_prefs_function", observer); |
|
203 Preferences.set("test_observe_prefs_function", "something else"); |
|
204 do_check_true(observed); |
|
205 |
|
206 // Clean up. |
|
207 Preferences.reset("test_observe_prefs_function"); |
|
208 |
|
209 run_next_test(); |
|
210 }); |
|
211 |
|
212 add_test(function test_observe_prefs_object() { |
|
213 let observer = { |
|
214 observed: false, |
|
215 observe: function() { |
|
216 this.observed = !this.observed; |
|
217 } |
|
218 }; |
|
219 |
|
220 Preferences.observe("test_observe_prefs_object", observer.observe, observer); |
|
221 Preferences.set("test_observe_prefs_object", "something"); |
|
222 do_check_true(observer.observed); |
|
223 |
|
224 Preferences.ignore("test_observe_prefs_object", observer.observe, observer); |
|
225 Preferences.set("test_observe_prefs_object", "something else"); |
|
226 do_check_true(observer.observed); |
|
227 |
|
228 // Clean up. |
|
229 Preferences.reset("test_observe_prefs_object"); |
|
230 |
|
231 run_next_test(); |
|
232 }); |
|
233 |
|
234 add_test(function test_observe_prefs_nsIObserver() { |
|
235 let observer = { |
|
236 observed: false, |
|
237 observe: function(subject, topic, data) { |
|
238 this.observed = !this.observed; |
|
239 do_check_true(subject instanceof Ci.nsIPrefBranch); |
|
240 do_check_eq(topic, "nsPref:changed"); |
|
241 do_check_eq(data, "test_observe_prefs_nsIObserver"); |
|
242 } |
|
243 }; |
|
244 |
|
245 Preferences.observe("test_observe_prefs_nsIObserver", observer); |
|
246 Preferences.set("test_observe_prefs_nsIObserver", "something"); |
|
247 do_check_true(observer.observed); |
|
248 |
|
249 Preferences.ignore("test_observe_prefs_nsIObserver", observer); |
|
250 Preferences.set("test_observe_prefs_nsIObserver", "something else"); |
|
251 do_check_true(observer.observed); |
|
252 |
|
253 // Clean up. |
|
254 Preferences.reset("test_observe_prefs_nsIObserver"); |
|
255 |
|
256 run_next_test(); |
|
257 }); |
|
258 |
|
259 /* |
|
260 add_test(function test_observe_exact_pref() { |
|
261 let observed = false; |
|
262 let observer = function() { observed = !observed }; |
|
263 |
|
264 Preferences.observe("test_observe_exact_pref", observer); |
|
265 Preferences.set("test_observe_exact_pref.sub-pref", "something"); |
|
266 do_check_false(observed); |
|
267 |
|
268 // Clean up. |
|
269 Preferences.ignore("test_observe_exact_pref", observer); |
|
270 Preferences.reset("test_observe_exact_pref.sub-pref"); |
|
271 |
|
272 run_next_test(); |
|
273 }); |
|
274 */ |
|
275 |
|
276 add_test(function test_observe_value_of_set_pref() { |
|
277 let observer = function(newVal) { do_check_eq(newVal, "something") }; |
|
278 |
|
279 Preferences.observe("test_observe_value_of_set_pref", observer); |
|
280 Preferences.set("test_observe_value_of_set_pref", "something"); |
|
281 |
|
282 // Clean up. |
|
283 Preferences.ignore("test_observe_value_of_set_pref", observer); |
|
284 Preferences.reset("test_observe_value_of_set_pref"); |
|
285 |
|
286 run_next_test(); |
|
287 }); |
|
288 |
|
289 add_test(function test_observe_value_of_reset_pref() { |
|
290 let observer = function(newVal) { do_check_true(typeof newVal == "undefined") }; |
|
291 |
|
292 Preferences.set("test_observe_value_of_reset_pref", "something"); |
|
293 Preferences.observe("test_observe_value_of_reset_pref", observer); |
|
294 Preferences.reset("test_observe_value_of_reset_pref"); |
|
295 |
|
296 // Clean up. |
|
297 Preferences.ignore("test_observe_value_of_reset_pref", observer); |
|
298 |
|
299 run_next_test(); |
|
300 }); |
|
301 |
|
302 add_test(function test_has_pref() { |
|
303 do_check_false(Preferences.has("test_has_pref")); |
|
304 Preferences.set("test_has_pref", "foo"); |
|
305 do_check_true(Preferences.has("test_has_pref")); |
|
306 |
|
307 Preferences.set("test_has_pref.foo", "foo"); |
|
308 Preferences.set("test_has_pref.bar", "bar"); |
|
309 let [hasFoo, hasBar, hasBaz] = Preferences.has(["test_has_pref.foo", |
|
310 "test_has_pref.bar", |
|
311 "test_has_pref.baz"]); |
|
312 do_check_true(hasFoo); |
|
313 do_check_true(hasBar); |
|
314 do_check_false(hasBaz); |
|
315 |
|
316 // Clean up. |
|
317 Preferences.resetBranch("test_has_pref"); |
|
318 |
|
319 run_next_test(); |
|
320 }); |
|
321 |
|
322 add_test(function test_isSet_pref() { |
|
323 // Use a pref that we know has a default value but no user-set value. |
|
324 // This feels dangerous; perhaps we should create some other default prefs |
|
325 // that we can use for testing. |
|
326 do_check_false(Preferences.isSet("toolkit.defaultChromeURI")); |
|
327 Preferences.set("toolkit.defaultChromeURI", "foo"); |
|
328 do_check_true(Preferences.isSet("toolkit.defaultChromeURI")); |
|
329 |
|
330 // Clean up. |
|
331 Preferences.reset("toolkit.defaultChromeURI"); |
|
332 |
|
333 run_next_test(); |
|
334 }); |
|
335 |
|
336 /* |
|
337 add_test(function test_lock_prefs() { |
|
338 // Use a pref that we know has a default value. |
|
339 // This feels dangerous; perhaps we should create some other default prefs |
|
340 // that we can use for testing. |
|
341 do_check_false(Preferences.locked("toolkit.defaultChromeURI")); |
|
342 Preferences.lock("toolkit.defaultChromeURI"); |
|
343 do_check_true(Preferences.locked("toolkit.defaultChromeURI")); |
|
344 Preferences.unlock("toolkit.defaultChromeURI"); |
|
345 do_check_false(Preferences.locked("toolkit.defaultChromeURI")); |
|
346 |
|
347 let val = Preferences.get("toolkit.defaultChromeURI"); |
|
348 Preferences.set("toolkit.defaultChromeURI", "test_lock_prefs"); |
|
349 do_check_eq(Preferences.get("toolkit.defaultChromeURI"), "test_lock_prefs"); |
|
350 Preferences.lock("toolkit.defaultChromeURI"); |
|
351 do_check_eq(Preferences.get("toolkit.defaultChromeURI"), val); |
|
352 Preferences.unlock("toolkit.defaultChromeURI"); |
|
353 do_check_eq(Preferences.get("toolkit.defaultChromeURI"), "test_lock_prefs"); |
|
354 |
|
355 // Clean up. |
|
356 Preferences.reset("toolkit.defaultChromeURI"); |
|
357 |
|
358 run_next_test(); |
|
359 }); |
|
360 */ |