<!DOCTYPE html>
<meta charset="utf-8">
<title>IDBObjectStore.createIndex() - index can be valid keys</title>
<link rel="author" href="mailto:odinho@opera.com" title="Odin Hørthe Omdal">
<meta name=timeout content=long>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="support.js"></script>

<script>
    var db,
      t = async_test(),
      now = new Date(),
      mar18 = new Date(1111111111111),
      ar = ["Yay", 2, -Infinity],
      num = 1337

    var open_rq = createdb(t);
    open_rq.onupgradeneeded = function(e) {
        db = e.target.result;
        var txn = e.target.transaction,
          objStore = db.createObjectStore("store", { keyPath: 'key' });

        objStore.add({ key: "now",    i: now   });
        objStore.add({ key: "mar18",  i: mar18 });
        objStore.add({ key: "array",  i: ar    });
        objStore.add({ key: "number", i: num   });

        var idx = objStore.createIndex("index", "i")

        idx.get(now).onsuccess = t.step_func(function(e) {
            assert_equals(e.target.result.key, 'now', 'key');
            assert_equals(e.target.result.i.getTime(), now.getTime(), 'getTime');
        });
        idx.get(mar18).onsuccess = t.step_func(function(e) {
            assert_equals(e.target.result.key, 'mar18', 'key');
            assert_equals(e.target.result.i.getTime(), mar18.getTime(), 'getTime');
        });
        idx.get(ar).onsuccess = t.step_func(function(e) {
            assert_equals(e.target.result.key, 'array', 'key');
            assert_array_equals(e.target.result.i, ar, 'array is the same');
        });
        idx.get(num).onsuccess = t.step_func(function(e) {
            assert_equals(e.target.result.key, 'number', 'key');
            assert_equals(e.target.result.i, num, 'number is the same');
        });
    }

    open_rq.onsuccess = function() {
        t.done();
    }
</script>

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