<!DOCTYPE html>
<meta charset=utf-8>
<title>IDBIndex.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", { autoIncrement: true })
        store.createIndex("myindex", "idx")

        for (var i = 0; i < 10; i++)
            store.add({ idx: "data_" + (i%2) });

        store.index("myindex").count("data_0").onsuccess = this.step_func(function(e) {
            assert_equals(e.target.result, 5, "count(data_0)")
            this.done()
        })
    }

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