| Index: qunit/tests/prefs.js | 
| diff --git a/qunit/tests/prefs.js b/qunit/tests/prefs.js | 
| new file mode 100644 | 
| index 0000000000000000000000000000000000000000..f620ca9a555056d0a53856fb805a0cc64120011a | 
| --- /dev/null | 
| +++ b/qunit/tests/prefs.js | 
| @@ -0,0 +1,102 @@ | 
| +(function() | 
| +{ | 
| +  module("Preferences", | 
| +  { | 
| +    setup: function() | 
| +    { | 
| +      preparePrefs.call(this); | 
| +    }, | 
| + | 
| +    teardown: function() | 
| +    { | 
| +      restorePrefs.call(this); | 
| +    } | 
| +  }); | 
| + | 
| +  function checkPrefExists(name, expectedValue, description, assert) | 
| +  { | 
| +    let done = assert.async(); | 
| +    let key = "pref:" + name; | 
| +    chrome.storage.local.get(key, function(items) | 
| +    { | 
| +      equal(key in items, expectedValue, description); | 
| +      done(); | 
| +    }); | 
| +  } | 
| + | 
| +  function checkPref(name, expectedValue, description, assert) | 
| +  { | 
| +    let done = assert.async(); | 
| +    let key = "pref:" + name; | 
| +    chrome.storage.local.get(key, function(items) | 
| +    { | 
| +      deepEqual(items[key], expectedValue, description); | 
| +      done(); | 
| +    }); | 
| +  } | 
| + | 
| +  test("Numerical pref", function(assert) | 
| +  { | 
| +    Prefs.patternsbackups = 5; | 
| +    equal(Prefs.patternsbackups, 5, "Prefs object returns the correct value after setting pref to default value"); | 
| +    checkPrefExists("patternsbackups", false, "User-defined pref has been removed", assert); | 
| +    Prefs.patternsbackups = 12; | 
| +    equal(Prefs.patternsbackups, 12, "Prefs object returns the correct value after setting pref to non-default value"); | 
| +    checkPrefExists("patternsbackups", true, "User-defined pref has been created", assert); | 
| +    checkPref("patternsbackups", 12, "Value has been written", assert); | 
| +  }); | 
| + | 
| +  test("Boolean pref", function(assert) | 
| +  { | 
| +    Prefs.enabled = true; | 
| +    equal(Prefs.enabled, true, "Prefs object returns the correct value after setting pref to default value"); | 
| +    checkPrefExists("enabled", false, "User-defined pref has been removed", assert); | 
| +    Prefs.enabled = false; | 
| +    equal(Prefs.enabled, false, "Prefs object returns the correct value after setting pref to non-default value"); | 
| +    checkPrefExists("enabled", true, "User-defined pref has been created", assert); | 
| +    checkPref("enabled", false, "Value has been written", assert); | 
| +  }); | 
| + | 
| +  test("String pref", function(assert) | 
| +  { | 
| +    let defaultValue = "https://notification.adblockplus.org/notification.json"; | 
| +    Prefs.notificationurl = defaultValue; | 
| +    equal(Prefs.notificationurl, defaultValue, "Prefs object returns the correct value after setting pref to default value"); | 
| +    checkPrefExists("notificationurl", false, "User-defined pref has been removed", assert); | 
| + | 
| +    let newValue = "https://notification.adblockplus.org/foo\u1234bar.json"; | 
| +    Prefs.notificationurl = newValue; | 
| +    equal(Prefs.notificationurl, newValue, "Prefs object returns the correct value after setting pref to non-default value"); | 
| +    checkPrefExists("notificationurl", true, "User-defined pref has been created", assert); | 
| +    checkPref("notificationurl", newValue, "Value has been written", assert); | 
| +  }); | 
| + | 
| +  test("Object pref (complete replacement)", function(assert) | 
| +  { | 
| +    Prefs.notificationdata = {}; | 
| +    deepEqual(Prefs.notificationdata, {}, "Prefs object returns the correct value after setting pref to default value"); | 
| + | 
| +    let newValue = {foo:1, bar: "adsf\u1234"}; | 
| +    Prefs.notificationdata = newValue; | 
| +    equal(Prefs.notificationdata, newValue, "Prefs object returns the correct value after setting pref to non-default value"); | 
| +    checkPrefExists("notificationdata", true, "User-defined pref has been created", assert); | 
| +    checkPref("notificationdata", newValue, "Value has been written", assert); | 
| +  }); | 
| + | 
| +  test("Property-wise modification", function(assert) | 
| +  { | 
| +    Prefs.notificationdata = {}; | 
| + | 
| +    Prefs.notificationdata.foo = 1; | 
| +    Prefs.notificationdata.bar = 2; | 
| +    Prefs.notificationdata = JSON.parse(JSON.stringify(Prefs.notificationdata)); | 
| +    deepEqual(Prefs.notificationdata, {foo:1, bar: 2}, "Prefs object returns the correct value after setting pref to non-default value"); | 
| +    checkPrefExists("notificationdata", true, "User-defined pref has been created", assert); | 
| +    checkPref("notificationdata", {foo:1, bar: 2}, "Value has been written", assert); | 
| + | 
| +    delete Prefs.notificationdata.foo; | 
| +    delete Prefs.notificationdata.bar; | 
| +    Prefs.notificationdata = JSON.parse(JSON.stringify(Prefs.notificationdata)); | 
| +    deepEqual(Prefs.notificationdata, {}, "Prefs object returns the correct value after setting pref to default value"); | 
| +  }); | 
| +})(); | 
|  |