summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/webstorage/storage_setitem.window.js
diff options
context:
space:
mode:
Diffstat (limited to 'testing/web-platform/tests/webstorage/storage_setitem.window.js')
-rw-r--r--testing/web-platform/tests/webstorage/storage_setitem.window.js215
1 files changed, 215 insertions, 0 deletions
diff --git a/testing/web-platform/tests/webstorage/storage_setitem.window.js b/testing/web-platform/tests/webstorage/storage_setitem.window.js
new file mode 100644
index 0000000000..97817da1d8
--- /dev/null
+++ b/testing/web-platform/tests/webstorage/storage_setitem.window.js
@@ -0,0 +1,215 @@
+["localStorage", "sessionStorage"].forEach(function(name) {
+ var test_error = { name: "test" };
+ var interesting_strs = ["\uD7FF", "\uD800", "\uDBFF", "\uDC00",
+ "\uDFFF", "\uE000", "\uFFFD", "\uFFFE", "\uFFFF",
+ "\uD83C\uDF4D", "\uD83Ca", "a\uDF4D",
+ "\uDBFF\uDFFF"];
+
+ for (var i = 0; i <= 0xFF; i++) {
+ interesting_strs.push(String.fromCharCode(i));
+ }
+
+ test(function() {
+ var storage = window[name];
+ storage.clear();
+
+ storage.setItem("name", "user1");
+ assert_equals(storage.length, 1, "localStorage.setItem")
+ }, name + ".setItem()");
+
+ test(function() {
+ var storage = window[name];
+ storage.clear();
+
+ storage["name"] = "user1";
+ assert_true("name" in storage);
+ assert_equals(storage.length, 1, "storage.length")
+ assert_equals(storage.getItem("name"), "user1");
+ assert_equals(storage["name"], "user1");
+ }, name + "[]");
+
+ test(function() {
+ var storage = window[name];
+ storage.clear();
+
+ storage["name"] = "user1";
+ storage["name"] = "user2";
+ assert_true("name" in storage);
+ assert_equals(storage.length, 1, "storage.length")
+ assert_equals(storage.getItem("name"), "user2");
+ assert_equals(storage["name"], "user2");
+ }, name + "[] update");
+
+ test(function() {
+ var storage = window[name];
+ storage.clear();
+
+ storage.setItem("age", null);
+ assert_true("age" in storage);
+ assert_equals(storage.length, 1, "storage.length")
+ assert_equals(storage.getItem("age"), "null");
+ assert_equals(storage["age"], "null");
+ }, name + ".setItem(_, null)");
+
+ test(function() {
+ var storage = window[name];
+ storage.clear();
+
+ storage["age"] = null;
+ assert_true("age" in storage);
+ assert_equals(storage.length, 1, "storage.length")
+ assert_equals(storage.getItem("age"), "null");
+ assert_equals(storage["age"], "null");
+ }, name + "[] = null");
+
+ test(function() {
+ var storage = window[name];
+ storage.clear();
+
+ storage.setItem("age", undefined);
+ assert_true("age" in storage);
+ assert_equals(storage.length, 1, "storage.length")
+ assert_equals(storage.getItem("age"), "undefined");
+ assert_equals(storage["age"], "undefined");
+ }, name + ".setItem(_, undefined)");
+
+ test(function() {
+ var storage = window[name];
+ storage.clear();
+
+ storage["age"] = undefined;
+ assert_true("age" in storage);
+ assert_equals(storage.length, 1, "storage.length")
+ assert_equals(storage.getItem("age"), "undefined");
+ assert_equals(storage["age"], "undefined");
+ }, name + "[] = undefined");
+
+ test(function() {
+ var storage = window[name];
+ storage.clear();
+
+ storage.setItem("age", "10");
+ assert_throws_exactly(test_error, function() {
+ storage.setItem("age",
+ { toString: function() { throw test_error; } });
+ });
+ assert_true("age" in storage);
+ assert_equals(storage.length, 1, "storage.length")
+ assert_equals(storage.getItem("age"), "10");
+ assert_equals(storage["age"], "10");
+ }, name + ".setItem({ throws })");
+
+ test(function() {
+ var storage = window[name];
+ storage.clear();
+
+ storage.setItem("age", "10");
+ assert_throws_exactly(test_error, function() {
+ storage["age"] =
+ { toString: function() { throw test_error; } };
+ });
+ assert_true("age" in storage);
+ assert_equals(storage.length, 1, "storage.length")
+ assert_equals(storage.getItem("age"), "10");
+ assert_equals(storage["age"], "10");
+ }, name + "[] = { throws }");
+
+ test(function() {
+ var storage = window[name];
+ storage.clear();
+
+ storage.setItem(undefined, "test");
+ assert_true("undefined" in storage);
+ assert_equals(storage.length, 1, "storage.length")
+ assert_equals(storage.getItem("undefined"), "test");
+ assert_equals(storage["undefined"], "test");
+ }, name + ".setItem(undefined, _)");
+
+ test(function() {
+ var storage = window[name];
+ storage.clear();
+
+ storage[undefined] = "test2";
+ assert_true("undefined" in storage);
+ assert_equals(storage.length, 1, "storage.length")
+ assert_equals(storage.getItem("undefined"), "test2");
+ assert_equals(storage["undefined"], "test2");
+ }, name + "[undefined]");
+
+ test(function() {
+ var storage = window[name];
+ storage.clear();
+
+ storage.setItem(null, "test");
+ assert_true("null" in storage);
+ assert_equals(storage.length, 1, "storage.length")
+ assert_equals(storage.getItem("null"), "test");
+ assert_equals(storage["null"], "test");
+ }, name + ".setItem(null, _)");
+
+ test(function() {
+ var storage = window[name];
+ storage.clear();
+
+ storage[null] = "test2";
+ assert_true("null" in storage);
+ assert_equals(storage.length, 1, "storage.length")
+ assert_equals(storage.getItem("null"), "test2");
+ assert_equals(storage["null"], "test2");
+ }, name + "[null]");
+
+ test(function() {
+ var storage = window[name];
+ storage.clear();
+
+ storage["foo\0bar"] = "user1";
+ assert_true("foo\0bar" in storage);
+ assert_false("foo\0" in storage);
+ assert_false("foo\0baz" in storage);
+ assert_false("foo" in storage);
+ assert_equals(storage.length, 1, "storage.length")
+ assert_equals(storage.getItem("foo\0bar"), "user1");
+ assert_equals(storage.getItem("foo\0"), null);
+ assert_equals(storage.getItem("foo\0baz"), null);
+ assert_equals(storage.getItem("foo"), null);
+ assert_equals(storage["foo\0bar"], "user1");
+ assert_equals(storage["foo\0"], undefined);
+ assert_equals(storage["foo\0baz"], undefined);
+ assert_equals(storage["foo"], undefined);
+ }, name + " key containing null");
+
+ test(function() {
+ var storage = window[name];
+ storage.clear();
+
+ storage["name"] = "foo\0bar";
+ assert_true("name" in storage);
+ assert_equals(storage.length, 1, "storage.length")
+ assert_equals(storage.getItem("name"), "foo\0bar");
+ assert_equals(storage["name"], "foo\0bar");
+ }, name + " value containing null");
+
+ for (i = 0; i < interesting_strs.length; i++) {
+ var str = interesting_strs[i];
+ test(function() {
+ var storage = window[name];
+ storage.clear();
+
+ storage[str] = "user1";
+ assert_true(str in storage);
+ assert_equals(storage.length, 1, "storage.length")
+ assert_equals(storage.getItem(str), "user1");
+ assert_equals(storage[str], "user1");
+ }, name + "[" + format_value(str) + "]");
+
+ test(function() {
+ var storage = window[name];
+ storage.clear();
+
+ storage["name"] = str;
+ assert_equals(storage.length, 1, "storage.length")
+ assert_equals(storage.getItem("name"), str);
+ assert_equals(storage["name"], str);
+ }, name + "[] = " + format_value(str));
+ }
+});