| <!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(new 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> |