<!DOCTYPE html>
<meta charset="utf-8">
<title>IDBIndex.get() - attempt to retrieve a record that doesn't exist </title>
<link rel="author" title="Microsoft" href="http://www.microsoft.com">
<script src="../../../resources/testharness.js"></script>
<script src="../../../resources/testharnessreport.js"></script>
<script src="support.js"></script>

<script>
    var db,
      t = async_test();

    var open_rq = createdb(t);
    open_rq.onupgradeneeded = function(e) {
        db = e.target.result;
        var rq = db.createObjectStore("test", { keyPath: "key" })
                   .createIndex("index", "indexedProperty")
                   .get(1);

        rq.onsuccess = t.step_func(function(e) {
            assert_equals(e.target.result, undefined);
            t.done();
        });
    };
</script>

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