Title: [97547] trunk/LayoutTests
Revision
97547
Author
[email protected]
Date
2011-10-15 00:19:16 -0700 (Sat, 15 Oct 2011)

Log Message

IndexedDB: some string keys not properly stored and retrieved
https://bugs.webkit.org/show_bug.cgi?id=62348

Patch by Joshua Bell <[email protected]> on 2011-10-15
Reviewed by Tony Chang.

Just adding Mark Pilgrim's test case from bug; this was fixed at some
point, presumably when we moved to LevelDB.

* storage/indexeddb/odd-strings-expected.txt: Added.
* storage/indexeddb/odd-strings.html: Added.

Modified Paths

Added Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (97546 => 97547)


--- trunk/LayoutTests/ChangeLog	2011-10-15 07:16:21 UTC (rev 97546)
+++ trunk/LayoutTests/ChangeLog	2011-10-15 07:19:16 UTC (rev 97547)
@@ -1,3 +1,16 @@
+2011-10-15  Joshua Bell  <[email protected]>
+
+        IndexedDB: some string keys not properly stored and retrieved
+        https://bugs.webkit.org/show_bug.cgi?id=62348
+
+        Reviewed by Tony Chang.
+
+        Just adding Mark Pilgrim's test case from bug; this was fixed at some
+        point, presumably when we moved to LevelDB.
+
+        * storage/indexeddb/odd-strings-expected.txt: Added.
+        * storage/indexeddb/odd-strings.html: Added.
+
 2011-10-15  Mark Pilgrim  <[email protected]>
 
         [FileSystem API] File readonly attributes test

Added: trunk/LayoutTests/storage/indexeddb/odd-strings-expected.txt (0 => 97547)


--- trunk/LayoutTests/storage/indexeddb/odd-strings-expected.txt	                        (rev 0)
+++ trunk/LayoutTests/storage/indexeddb/odd-strings-expected.txt	2011-10-15 07:19:16 UTC (rev 97547)
@@ -0,0 +1,148 @@
+Test IndexedDB odd value datatypes
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+indexedDB = window.indexedDB || window.webkitIndexedDB || window.mozIndexedDB;
+PASS indexedDB == null is false
+IDBDatabaseException = window.IDBDatabaseException || window.webkitIDBDatabaseException;
+PASS IDBDatabaseException == null is false
+IDBCursor = window.IDBCursor || window.webkitIDBCursor;
+PASS IDBCursor == null is false
+IDBKeyRange = window.IDBKeyRange || window.webkitIDBKeyRange;
+PASS IDBKeyRange == null is false
+opening a database named null
+indexedDB.open(testData[nextToOpen].name, testData[nextToOpen].description)
+db = event.target.result
+request = db.setVersion('1')
+Deleted all object stores.
+objectStore = db.createObjectStore(testData[nextToOpen].name);
+key = testData[nextToOpen].name
+request = objectStore.add(key, key);
+db.close()
+
+opening a database named faihu
+indexedDB.open(testData[nextToOpen].name, testData[nextToOpen].description)
+db = event.target.result
+request = db.setVersion('1')
+Deleted all object stores.
+objectStore = db.createObjectStore(testData[nextToOpen].name);
+key = testData[nextToOpen].name
+request = objectStore.add(key, key);
+db.close()
+
+opening a database named unpaired surrogate
+indexedDB.open(testData[nextToOpen].name, testData[nextToOpen].description)
+db = event.target.result
+request = db.setVersion('1')
+Deleted all object stores.
+objectStore = db.createObjectStore(testData[nextToOpen].name);
+key = testData[nextToOpen].name
+request = objectStore.add(key, key);
+db.close()
+
+opening a database named fffe
+indexedDB.open(testData[nextToOpen].name, testData[nextToOpen].description)
+db = event.target.result
+request = db.setVersion('1')
+Deleted all object stores.
+objectStore = db.createObjectStore(testData[nextToOpen].name);
+key = testData[nextToOpen].name
+request = objectStore.add(key, key);
+db.close()
+
+opening a database named ffff
+indexedDB.open(testData[nextToOpen].name, testData[nextToOpen].description)
+db = event.target.result
+request = db.setVersion('1')
+Deleted all object stores.
+objectStore = db.createObjectStore(testData[nextToOpen].name);
+key = testData[nextToOpen].name
+request = objectStore.add(key, key);
+db.close()
+
+opening a database named line separator
+indexedDB.open(testData[nextToOpen].name, testData[nextToOpen].description)
+db = event.target.result
+request = db.setVersion('1')
+Deleted all object stores.
+objectStore = db.createObjectStore(testData[nextToOpen].name);
+key = testData[nextToOpen].name
+request = objectStore.add(key, key);
+db.close()
+
+reopening a database named null
+indexedDB.open(testData[nextToOpen].name, testData[nextToOpen].description)
+db = event.target.result
+request = db.setVersion('1')
+trans = event.target.result
+objectStore = trans.objectStore(testData[nextToOpen].name);
+key = testData[nextToOpen].name
+request = objectStore.openCursor();
+cursor = event.target.result;
+PASS cursor.key is testData[nextToOpen].name
+PASS cursor.value is testData[nextToOpen].name
+
+reopening a database named faihu
+indexedDB.open(testData[nextToOpen].name, testData[nextToOpen].description)
+db = event.target.result
+request = db.setVersion('1')
+trans = event.target.result
+objectStore = trans.objectStore(testData[nextToOpen].name);
+key = testData[nextToOpen].name
+request = objectStore.openCursor();
+cursor = event.target.result;
+PASS cursor.key is testData[nextToOpen].name
+PASS cursor.value is testData[nextToOpen].name
+
+reopening a database named unpaired surrogate
+indexedDB.open(testData[nextToOpen].name, testData[nextToOpen].description)
+db = event.target.result
+request = db.setVersion('1')
+trans = event.target.result
+objectStore = trans.objectStore(testData[nextToOpen].name);
+key = testData[nextToOpen].name
+request = objectStore.openCursor();
+cursor = event.target.result;
+PASS cursor.key is testData[nextToOpen].name
+PASS cursor.value is testData[nextToOpen].name
+
+reopening a database named fffe
+indexedDB.open(testData[nextToOpen].name, testData[nextToOpen].description)
+db = event.target.result
+request = db.setVersion('1')
+trans = event.target.result
+objectStore = trans.objectStore(testData[nextToOpen].name);
+key = testData[nextToOpen].name
+request = objectStore.openCursor();
+cursor = event.target.result;
+PASS cursor.key is testData[nextToOpen].name
+PASS cursor.value is testData[nextToOpen].name
+
+reopening a database named ffff
+indexedDB.open(testData[nextToOpen].name, testData[nextToOpen].description)
+db = event.target.result
+request = db.setVersion('1')
+trans = event.target.result
+objectStore = trans.objectStore(testData[nextToOpen].name);
+key = testData[nextToOpen].name
+request = objectStore.openCursor();
+cursor = event.target.result;
+PASS cursor.key is testData[nextToOpen].name
+PASS cursor.value is testData[nextToOpen].name
+
+reopening a database named line separator
+indexedDB.open(testData[nextToOpen].name, testData[nextToOpen].description)
+db = event.target.result
+request = db.setVersion('1')
+trans = event.target.result
+objectStore = trans.objectStore(testData[nextToOpen].name);
+key = testData[nextToOpen].name
+request = objectStore.openCursor();
+cursor = event.target.result;
+PASS cursor.key is testData[nextToOpen].name
+PASS cursor.value is testData[nextToOpen].name
+PASS successfullyParsed is true
+
+TEST COMPLETE
+

Added: trunk/LayoutTests/storage/indexeddb/odd-strings.html (0 => 97547)


--- trunk/LayoutTests/storage/indexeddb/odd-strings.html	                        (rev 0)
+++ trunk/LayoutTests/storage/indexeddb/odd-strings.html	2011-10-15 07:19:16 UTC (rev 97547)
@@ -0,0 +1,124 @@
+<!DOCTYPE html>
+<html>
+<head>
+<link rel="stylesheet" href=""
+<script src=""
+<script src=""
+<script src=""
+</head>
+<body>
+<p id="description"></p>
+<div id="console"></div>
+<script>
+
+description("Test IndexedDB odd value datatypes");
+if (window.layoutTestController)
+    layoutTestController.waitUntilDone();
+
+function test()
+{
+    indexedDB = evalAndLog("indexedDB = window.indexedDB || window.webkitIndexedDB || window.mozIndexedDB;");
+    shouldBeFalse("indexedDB == null");
+    IDBDatabaseException = evalAndLog("IDBDatabaseException = window.IDBDatabaseException || window.webkitIDBDatabaseException;");
+    shouldBeFalse("IDBDatabaseException == null");
+    IDBCursor = evalAndLog("IDBCursor = window.IDBCursor || window.webkitIDBCursor;");
+    shouldBeFalse("IDBCursor == null");
+    IDBKeyRange = evalAndLog("IDBKeyRange = window.IDBKeyRange || window.webkitIDBKeyRange;");
+    shouldBeFalse("IDBKeyRange == null");
+
+    testData = [{ description: 'null',               name: '\u0000' },
+                { description: 'faihu',              name: '\ud800\udf46' },
+                { description: 'unpaired surrogate', name: '\ud800' },
+                { description: 'fffe',               name: '\ufffe' },
+                { description: 'ffff',               name: '\uffff' },
+                { description: 'line separator',     name: '\u2028' }
+    ];
+    nextToOpen = 0;
+    openNextDatabase();
+}
+
+function openNextDatabase()
+{
+    debug("opening a database named " + testData[nextToOpen].description);
+    request = evalAndLog("indexedDB.open(testData[nextToOpen].name, testData[nextToOpen].description)");
+    request._onerror_ = unexpectedErrorCallback;
+    request._onsuccess_ = openSuccess;
+}
+
+function openSuccess()
+{
+    db = evalAndLog("db = event.target.result");
+    request = evalAndLog("request = db.setVersion('1')");
+    request._onsuccess_ = addAKey;
+    request._onerror_ = unexpectedErrorCallback;
+}
+
+function addAKey()
+{
+    deleteAllObjectStores(db);
+
+    objectStore = evalAndLog("objectStore = db.createObjectStore(testData[nextToOpen].name);");
+    key = evalAndLog("key = testData[nextToOpen].name");
+    request = evalAndLog("request = objectStore.add(key, key);");
+    request._onsuccess_ = closeDatabase;
+    request._onerror_ = unexpectedErrorCallback;
+}
+
+function closeDatabase()
+{
+    evalAndLog("db.close()");
+    debug("");
+    if (++nextToOpen < testData.length) {
+        openNextDatabase();
+    } else {
+        nextToOpen = 0;
+        verifyNextDatabase();
+    }
+}
+
+function verifyNextDatabase()
+{
+    debug("reopening a database named " + testData[nextToOpen].description);
+    request = evalAndLog("indexedDB.open(testData[nextToOpen].name, testData[nextToOpen].description)");
+    request._onerror_ = unexpectedErrorCallback;
+    request._onsuccess_ = openSuccess2;
+}
+
+function openSuccess2()
+{
+    db = evalAndLog("db = event.target.result");
+    request = evalAndLog("request = db.setVersion('1')");
+    request._onerror_ = unexpectedErrorCallback;
+    request._onsuccess_ = getAKey;
+}
+
+function getAKey()
+{
+    trans = evalAndLog("trans = event.target.result");
+    objectStore = evalAndLog("objectStore = trans.objectStore(testData[nextToOpen].name);");
+    key = evalAndLog("key = testData[nextToOpen].name");
+    request = evalAndLog("request = objectStore.openCursor();");
+    request._onerror_ = unexpectedErrorCallback;
+    request._onsuccess_ = openCursorSuccess;
+}
+
+function openCursorSuccess()
+{
+    cursor = evalAndLog("cursor = event.target.result;");
+    shouldBe("cursor.key", "testData[nextToOpen].name");
+    shouldBe("cursor.value", "testData[nextToOpen].name");
+    if (++nextToOpen < testData.length) {
+        debug("");
+        verifyNextDatabase();
+    } else {
+        done();
+    }
+}
+
+var successfullyParsed = true;
+
+test();
+
+</script>
+</body>
+</html>
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to