diff options
Diffstat (limited to 'testing/web-platform/tests/IndexedDB/idbfactory_open9.htm')
-rw-r--r-- | testing/web-platform/tests/IndexedDB/idbfactory_open9.htm | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/testing/web-platform/tests/IndexedDB/idbfactory_open9.htm b/testing/web-platform/tests/IndexedDB/idbfactory_open9.htm new file mode 100644 index 0000000000..36a9ef814c --- /dev/null +++ b/testing/web-platform/tests/IndexedDB/idbfactory_open9.htm @@ -0,0 +1,71 @@ +<!DOCTYPE html> +<title>IDBFactory.open() - errors in version argument</title> +<script src=/resources/testharness.js></script> +<script src=/resources/testharnessreport.js></script> + +<script> +function should_throw(val, name) { + if (!name) { + name = ((typeof val == "object" && val) ? "object" : format_value(val)) + } + test(function() { + assert_throws_js(TypeError, function() { + window.indexedDB.open('test', val); + }); + }, "Calling open() with version argument " + name + " should throw TypeError.") +} + +should_throw(-1) +should_throw(-0.5) +should_throw(0) +should_throw(0.5) +should_throw(0.8) +should_throw(0x20000000000000) // Number.MAX_SAFE_INTEGER + 1 +should_throw(NaN) +should_throw(Infinity) +should_throw(-Infinity) +should_throw("foo") +should_throw(null) +should_throw(false) + +should_throw({ + toString: function() { assert_unreached("toString should not be called for ToPrimitive [Number]"); }, + valueOf: function() { return 0; } +}) +should_throw({ + toString: function() { return 0; }, + valueOf: function() { return {}; } +}, 'object (second)') +should_throw({ + toString: function() { return {}; }, + valueOf: function() { return {}; }, +}, 'object (third)') + + +/* Valid */ + +function should_work(val, expected_version) { + var name = format_value(val); + var dbname = 'test-db-does-not-exist'; + async_test(function(t) { + window.indexedDB.deleteDatabase(dbname); + var rq = window.indexedDB.open(dbname, val); + rq.onupgradeneeded = t.step_func(function() { + var db = rq.result; + assert_equals(db.version, expected_version, 'version'); + rq.transaction.abort(); + }); + rq.onsuccess = t.unreached_func("open should fail"); + rq.onerror = t.step_func(function() { + t.done() + }); + }, "Calling open() with version argument " + name + " should not throw.") +} + +should_work(1.5, 1) +should_work(Number.MAX_SAFE_INTEGER, Number.MAX_SAFE_INTEGER) // 0x20000000000000 - 1 +should_work(undefined, 1) + +</script> + +<div id=log></div> |