<!DOCTYPE html>
<meta charset=utf-8>
<title>createObjectStore: Invalid optionalParameters</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>
    function invalid_optionalParameters(desc, params) {
        var t = async_test(document.title + " - " + desc);

        createdb(t).onupgradeneeded = function(e) {
            assert_throws(null, function() {
                e.target.result.createObjectStore("store", params);
            });

            this.done();
        };
    }

    invalid_optionalParameters("autoInc and empty keyPath", {autoIncrement: true, keyPath: ""});
    invalid_optionalParameters("autoInc and keyPath array", {autoIncrement: true, keyPath: []});
    invalid_optionalParameters("autoInc and keyPath array 2", {autoIncrement: true, keyPath: ["hey"]});
    invalid_optionalParameters("autoInc and keyPath object", {autoIncrement: true, keyPath: {a:"hey", b:2}});

</script>

<div id=log></div>
