mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
125 lines
3.0 KiB
JavaScript
125 lines
3.0 KiB
JavaScript
|
/* Any copyright is dedicated to the Public Domain.
|
||
|
* http://creativecommons.org/publicdomain/zero/1.0/ */
|
||
|
|
||
|
Cu.import("resource://services-common/storageservice.js");
|
||
|
|
||
|
function run_test() {
|
||
|
initTestLogging("Trace");
|
||
|
|
||
|
run_next_test();
|
||
|
}
|
||
|
|
||
|
add_test(function test_bso_constructor() {
|
||
|
_("Ensure created BSO instances are initialized properly.");
|
||
|
|
||
|
let bso = new BasicStorageObject();
|
||
|
do_check_eq(bso.id, null);
|
||
|
do_check_eq(bso.collection, null);
|
||
|
do_check_attribute_count(bso.data, 0);
|
||
|
do_check_eq(bso.payload, null);
|
||
|
do_check_eq(bso.modified, null);
|
||
|
do_check_eq(bso.sortindex, 0);
|
||
|
do_check_eq(bso.ttl, null);
|
||
|
|
||
|
let bso = new BasicStorageObject("foobar");
|
||
|
do_check_eq(bso.id, "foobar");
|
||
|
do_check_eq(bso.collection, null);
|
||
|
do_check_attribute_count(bso.data, 0);
|
||
|
|
||
|
let bso = new BasicStorageObject("foo", "coll");
|
||
|
do_check_eq(bso.id, "foo");
|
||
|
do_check_eq(bso.collection, "coll");
|
||
|
do_check_attribute_count(bso.data, 0);
|
||
|
|
||
|
run_next_test();
|
||
|
});
|
||
|
|
||
|
add_test(function test_bso_attributes() {
|
||
|
_("Ensure attribute getters and setters work.");
|
||
|
|
||
|
let bso = new BasicStorageObject("foobar");
|
||
|
bso.payload = "pay";
|
||
|
do_check_eq(bso.payload, "pay");
|
||
|
|
||
|
bso.modified = 35423;
|
||
|
do_check_eq(bso.modified, 35423);
|
||
|
|
||
|
bso.sortindex = 10;
|
||
|
do_check_eq(bso.sortindex, 10);
|
||
|
|
||
|
bso.ttl = 60;
|
||
|
do_check_eq(bso.ttl, 60);
|
||
|
|
||
|
run_next_test();
|
||
|
});
|
||
|
|
||
|
add_test(function test_bso_deserialize() {
|
||
|
_("Ensure that deserialize() works.");
|
||
|
|
||
|
_("A simple working test.");
|
||
|
let json = '{"id": "foobar", "payload": "pay", "modified": 1223145532}';
|
||
|
let bso = new BasicStorageObject();
|
||
|
bso.deserialize(json);
|
||
|
do_check_neq(bso, null);
|
||
|
do_check_eq(bso.id, "foobar");
|
||
|
do_check_eq(bso.payload, "pay");
|
||
|
do_check_eq(bso.modified, 1223145532);
|
||
|
|
||
|
_("Invalid JSON.");
|
||
|
let json = '{id: "foobar}';
|
||
|
let bso = new BasicStorageObject();
|
||
|
try {
|
||
|
bso.deserialize(json);
|
||
|
do_check_true(false);
|
||
|
} catch (ex) {
|
||
|
do_check_eq(ex.name, "SyntaxError");
|
||
|
}
|
||
|
|
||
|
_("Invalid key in JSON.");
|
||
|
let json = '{"id": "foo", "payload": "pay", "BADKEY": "irrelevant"}';
|
||
|
let bso = new BasicStorageObject();
|
||
|
try {
|
||
|
bso.deserialize(json);
|
||
|
do_check_true(false);
|
||
|
} catch (ex) {
|
||
|
do_check_eq(ex.name, "Error");
|
||
|
do_check_eq(ex.message.indexOf("Invalid key"), 0);
|
||
|
}
|
||
|
|
||
|
_("Loading native JS objects works.");
|
||
|
let bso = new BasicStorageObject();
|
||
|
bso.deserialize({id: "foo", payload: "pay"});
|
||
|
do_check_neq(bso, null);
|
||
|
do_check_eq(bso.id, "foo");
|
||
|
do_check_eq(bso.payload, "pay");
|
||
|
|
||
|
_("Passing invalid type is caught.");
|
||
|
let bso = new BasicStorageObject();
|
||
|
try {
|
||
|
bso.deserialize(["foo", "bar"]);
|
||
|
do_check_true(false);
|
||
|
} catch (ex) {
|
||
|
do_check_eq(ex.name, "Error");
|
||
|
}
|
||
|
|
||
|
run_next_test();
|
||
|
});
|
||
|
|
||
|
add_test(function test_bso_toJSON() {
|
||
|
_("Ensure JSON serialization works.");
|
||
|
|
||
|
let bso = new BasicStorageObject();
|
||
|
do_check_attribute_count(bso.toJSON(), 0);
|
||
|
|
||
|
bso.id = "foo";
|
||
|
bso.payload = "pay";
|
||
|
let json = bso.toJSON();
|
||
|
let original = json;
|
||
|
|
||
|
do_check_attribute_count(original, 2);
|
||
|
do_check_eq(original.id, "foo");
|
||
|
do_check_eq(original.payload, "pay");
|
||
|
|
||
|
run_next_test();
|
||
|
});
|