diff options
Diffstat (limited to 'testing/web-platform/tests/IndexedDB/string-list-ordering.htm')
-rw-r--r-- | testing/web-platform/tests/IndexedDB/string-list-ordering.htm | 85 |
1 files changed, 85 insertions, 0 deletions
diff --git a/testing/web-platform/tests/IndexedDB/string-list-ordering.htm b/testing/web-platform/tests/IndexedDB/string-list-ordering.htm new file mode 100644 index 000000000..cc905e56e --- /dev/null +++ b/testing/web-platform/tests/IndexedDB/string-list-ordering.htm @@ -0,0 +1,85 @@ +<!-- +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> |