Wed, 31 Dec 2014 06:09:35 +0100
Cloned upstream origin tor-browser at tor-browser-31.3.0esr-4.5-1-build1
revision ID fc1c9ff7c1b2defdbc039f12214767608f46423f for hacking purpose.
1 /* Any copyright is dedicated to the Public Domain.
2 * http://creativecommons.org/publicdomain/zero/1.0/ */
4 Cu.import("resource://services-common/storageservice.js");
6 function run_test() {
7 initTestLogging("Trace");
9 run_next_test();
10 }
12 add_test(function test_bso_constructor() {
13 _("Ensure created BSO instances are initialized properly.");
15 let bso = new BasicStorageObject();
16 do_check_eq(bso.id, null);
17 do_check_eq(bso.collection, null);
18 do_check_attribute_count(bso.data, 0);
19 do_check_eq(bso.payload, null);
20 do_check_eq(bso.modified, null);
21 do_check_eq(bso.sortindex, 0);
22 do_check_eq(bso.ttl, null);
24 let bso = new BasicStorageObject("foobar");
25 do_check_eq(bso.id, "foobar");
26 do_check_eq(bso.collection, null);
27 do_check_attribute_count(bso.data, 0);
29 let bso = new BasicStorageObject("foo", "coll");
30 do_check_eq(bso.id, "foo");
31 do_check_eq(bso.collection, "coll");
32 do_check_attribute_count(bso.data, 0);
34 run_next_test();
35 });
37 add_test(function test_bso_attributes() {
38 _("Ensure attribute getters and setters work.");
40 let bso = new BasicStorageObject("foobar");
41 bso.payload = "pay";
42 do_check_eq(bso.payload, "pay");
44 bso.modified = 35423;
45 do_check_eq(bso.modified, 35423);
47 bso.sortindex = 10;
48 do_check_eq(bso.sortindex, 10);
50 bso.ttl = 60;
51 do_check_eq(bso.ttl, 60);
53 run_next_test();
54 });
56 add_test(function test_bso_deserialize() {
57 _("Ensure that deserialize() works.");
59 _("A simple working test.");
60 let json = '{"id": "foobar", "payload": "pay", "modified": 1223145532}';
61 let bso = new BasicStorageObject();
62 bso.deserialize(json);
63 do_check_neq(bso, null);
64 do_check_eq(bso.id, "foobar");
65 do_check_eq(bso.payload, "pay");
66 do_check_eq(bso.modified, 1223145532);
68 _("Invalid JSON.");
69 let json = '{id: "foobar}';
70 let bso = new BasicStorageObject();
71 try {
72 bso.deserialize(json);
73 do_check_true(false);
74 } catch (ex) {
75 do_check_eq(ex.name, "SyntaxError");
76 }
78 _("Invalid key in JSON.");
79 let json = '{"id": "foo", "payload": "pay", "BADKEY": "irrelevant"}';
80 let bso = new BasicStorageObject();
81 try {
82 bso.deserialize(json);
83 do_check_true(false);
84 } catch (ex) {
85 do_check_eq(ex.name, "Error");
86 do_check_eq(ex.message.indexOf("Invalid key"), 0);
87 }
89 _("Loading native JS objects works.");
90 let bso = new BasicStorageObject();
91 bso.deserialize({id: "foo", payload: "pay"});
92 do_check_neq(bso, null);
93 do_check_eq(bso.id, "foo");
94 do_check_eq(bso.payload, "pay");
96 _("Passing invalid type is caught.");
97 let bso = new BasicStorageObject();
98 try {
99 bso.deserialize(["foo", "bar"]);
100 do_check_true(false);
101 } catch (ex) {
102 do_check_eq(ex.name, "Error");
103 }
105 run_next_test();
106 });
108 add_test(function test_bso_toJSON() {
109 _("Ensure JSON serialization works.");
111 let bso = new BasicStorageObject();
112 do_check_attribute_count(bso.toJSON(), 0);
114 bso.id = "foo";
115 bso.payload = "pay";
116 let json = bso.toJSON();
117 let original = json;
119 do_check_attribute_count(original, 2);
120 do_check_eq(original.id, "foo");
121 do_check_eq(original.payload, "pay");
123 run_next_test();
124 });