<!-- Test converted from WebKit: http://trac.webkit.org/browser/trunk/LayoutTests/storage/indexeddb/resources/list-ordering.js --> <!DOCTYPE html> <!-- Submitted from TestTWF Paris --> <meta charset=utf-8> <title>Test string list ordering in IndexedDB</title> <link rel=help href="http://dvcs.w3.org/hg/IndexedDB/raw-file/tip/Overview.html#widl-IDBDatabase-objectStoreNames"> <link rel=assert title="The list must be sorted in ascending order using the algorithm defined by step 4 of section 11.8.5, The Abstract Relational Comparison Algorithm of the ECMAScript Language Specification [ECMA-262]."> <link rel=author href="mailto:romain.huet@gmail.com" title="Romain Huet"> <script src=/resources/testharness.js></script> <script src=/resources/testharnessreport.js></script> <script src=support.js></script> <script> var expectedOrder = [ "", "\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, permutedOrder = expectedOrder.slice(); permutedOrder.reverse(); for (i = 0; i < permutedOrder.length - 2; i += 2) { tmp = permutedOrder[i]; permutedOrder[i] = permutedOrder[i + 1]; permutedOrder[i + 1] = tmp; } var objStore, db; var t = async_test(); // Check that the expected order is the canonical JS sort order. var sortedOrder = expectedOrder.slice(); sortedOrder.sort(); assert_array_equals(sortedOrder, expectedOrder); var request = createdb(t); request.onupgradeneeded = function(e) { db = e.target.result; // Object stores. for (var i = 0; i < permutedOrder.length; i++) { objStore = db.createObjectStore(permutedOrder[i]); } assert_array_equals(db.objectStoreNames, expectedOrder); // Indexes. for (var i = 0; i < permutedOrder.length; i++) { objStore.createIndex(permutedOrder[i], "keyPath"); } assert_array_equals(objStore.indexNames, expectedOrder); }; request.onsuccess = function(e) { // Object stores. assert_array_equals(db.objectStoreNames, expectedOrder); // Indexes. assert_array_equals(objStore.indexNames, expectedOrder); t.done(); }; </script> <div id=log></div>