blob: cc905e56ecf83ea4cd4f1fe2ccfac425cdc5f9d0 [file] [log] [blame]
<!--
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>