| if (this.importScripts) { |
| importScripts('../../../resources/js-test.js'); |
| importScripts('shared.js'); |
| } |
| |
| description("Test string list ordering in IndexedDB."); |
| |
| var expected_order = [ |
| "", |
| "\x00", // 'NULL' (U+0000) |
| "0", |
| "1", |
| "A", |
| "B", |
| "a", |
| "b", |
| "\x7F", // 'DELETE' (U+007F) |
| "\xC0", // 'LATIN CAPITAL LETTER A WITH GRAVE' (U+00C0) |
| "\xC1", // 'LATIN CAPITAL LETTER A WITH ACUTE' (U+00C1) |
| "\xE0", // 'LATIN SMALL LETTER A WITH GRAVE' (U+00E0) |
| "\xE1", // 'LATIN SMALL LETTER A WITH ACUTE' (U+00E1) |
| "\xFF", // 'LATIN SMALL LETTER Y WITH DIAERESIS' (U+00FF) |
| "\u0100", // 'LATIN CAPITAL LETTER A WITH MACRON' (U+0100) |
| "\u1000", // 'MYANMAR LETTER KA' (U+1000) |
| "\uD834\uDD1E", // 'MUSICAL SYMBOL G-CLEF' (U+1D11E), UTF-16 surrogate pairs |
| "\uFFFD" // 'REPLACEMENT CHARACTER' (U+FFFD) |
| ]; |
| var i, tmp, permuted_order = expected_order.slice(); permuted_order.reverse(); |
| for (i = 0; i < permuted_order.length - 2; i += 2) { |
| tmp = permuted_order[i]; |
| permuted_order[i] = permuted_order[i + 1]; |
| permuted_order[i + 1] = tmp; |
| } |
| |
| indexedDBTest(prepareDatabase, finishJSTest); |
| function prepareDatabase() |
| { |
| db = event.target.result; |
| event.target.transaction.onabort = unexpectedAbortCallback; |
| debug("check that the expected order is the canonical JS sort order:"); |
| evalAndLog("sorted_order = expected_order.slice(); sorted_order.sort()"); |
| shouldBeTrue("areArraysEqual(sorted_order, expected_order)"); |
| |
| debug(""); |
| debug("Object stores:"); |
| permuted_order.forEach(function (name) { |
| evalAndLog("db.createObjectStore(" + JSON.stringify(name) +")"); |
| }); |
| |
| shouldBeTrue("areArraysEqual(db.objectStoreNames, expected_order)"); |
| |
| debug(""); |
| debug("Indexes:"); |
| store = evalAndLog("store = db.createObjectStore('store')"); |
| permuted_order.forEach(function (name) { |
| evalAndLog("store.createIndex(" + JSON.stringify(name) +", 'keyPath')"); |
| }); |
| |
| shouldBeTrue("areArraysEqual(store.indexNames, expected_order)"); |
| } |