<!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>
