<!DOCTYPE html>
<meta charset=utf-8>
<title>IDBObjectStore.count() - returns the number of records that have keys with the key</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>
    var db

    createdb(async_test()).onupgradeneeded = function(e) {
        db = e.target.result

        var store = db.createObjectStore("store", { keyPath: "k" })

        for (var i = 0; i < 5; i++)
            store.add({ k: "key_" + i });

        store.count("key_2").onsuccess = this.step_func(function(e) {
            assert_equals(e.target.result, 1, "count(key_2)")

            store.count("key_").onsuccess = this.step_func(function(e) {
                assert_equals(e.target.result, 0, "count(key_)")
                this.done()
            })
        })
    }

</script>
<div id=log></div>
