Source code

Revision control

Copy as Markdown

Other Tools

Test Info:

"use strict";
add_task(async function () {
const store1 = new Storage("prefix1");
const store2 = new Storage("prefix2");
// Make sure values return null before being set
Assert.equal(await store1.getItem("key"), null);
Assert.equal(await store2.getItem("key"), null);
// Set values to check
await store1.setItem("key", "value1");
await store2.setItem("key", "value2");
// Check that they are available
Assert.equal(await store1.getItem("key"), "value1");
Assert.equal(await store2.getItem("key"), "value2");
// Remove them, and check they are gone
await store1.removeItem("key");
await store2.removeItem("key");
Assert.equal(await store1.getItem("key"), null);
Assert.equal(await store2.getItem("key"), null);
// Check that numbers are stored as numbers (not strings)
await store1.setItem("number", 42);
Assert.equal(await store1.getItem("number"), 42);
// Check complex types work
const complex = { a: 1, b: [2, 3], c: { d: 4 } };
await store1.setItem("complex", complex);
Assert.deepEqual(await store1.getItem("complex"), complex);
// Check that clearing the storage removes data from multiple
// prefixes.
await store1.setItem("removeTest", 1);
await store2.setItem("removeTest", 2);
Assert.equal(await store1.getItem("removeTest"), 1);
Assert.equal(await store2.getItem("removeTest"), 2);
await Storage.clearAllStorage();
Assert.equal(await store1.getItem("removeTest"), null);
Assert.equal(await store2.getItem("removeTest"), null);
});