<!DOCTYPE html>
<meta charset="utf-8">
<title>Values</title>
<link rel="author" href="mailto:odinho@opera.com" title="Odin Hørthe Omdal">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="support.js"></script>

<script>
function value(value, _instanceof) {
    var t = async_test(document.title + " - " + _instanceof.name);
    t.step(function() {
        assert_true(value instanceof _instanceof, "TEST ERROR, instanceof");
    });

    createdb(t).onupgradeneeded = function(e) {
        e.target.result
                .createObjectStore("store")
                .add(value, 1);

        e.target.onsuccess = t.step_func(function(e) {
            e.target.result
                    .transaction("store")
                    .objectStore("store")
                    .get(1)
                    .onsuccess = t.step_func(function(e)
            {
                assert_true(e.target.result instanceof _instanceof, "instanceof")
                t.done();
            });
        });
    };
}

value(new Date(), Date);
value(new Array(), Array);

</script>

<div id="log"></div>
