| <!DOCTYPE html> |
| <title>IDBFactory.open() - errors in version argument</title> |
| <script src=/resources/testharness.js></script> |
| <script src=/resources/testharnessreport.js></script> |
| <script src=support.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(undefined) |
| 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) { |
| var name = format_value(val); |
| var t = async_test("Calling open() with version argument " + name + " should not throw.") |
| var rq = createdb(t, val) |
| rq.onupgradeneeded = function() { |
| t.done() |
| } |
| } |
| |
| should_work(1.5) |
| should_work(Number.MAX_SAFE_INTEGER) // 0x20000000000000 - 1 |
| |
| </script> |
| |
| <div id=log></div> |