<!DOCTYPE html>
<meta charset="utf-8">
<title>Recursive value</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 recursive_value(desc, value) {
    var db, t = async_test(document.title + " - " + desc);

    createdb(t).onupgradeneeded = function(e) {
        db = e.target.result
        db.createObjectStore("store")
          .add(value, 1);

        e.target.onsuccess = t.step_func(function(e) {
            db.transaction('store')
              .objectStore('store')
              .get(1)
              .onsuccess = t.step_func(function(e)
            {

                try
                {
                    var fresh_value = JSON.stringify(value);
                    assert_unreached("Testcase is written wrongly, must supply something recursive (that JSON won't stringify).");
                }
                catch (e)
                {
                    if (e.name == 'TypeError')
                    {
                        try
                        {
                            JSON.stringify(e.target.result);
                            assert_unreached("Expected a non-JSON-serializable value back, didn't get that.");
                        }
                        catch (e)
                        {
                            t.done();
                            return;
                        }
                    }
                    else
                        throw e;
                }
            });
        });
    };
}

var recursive = [];
recursive.push(recursive);
recursive_value('array directly contains self', recursive);

var recursive2 = [];
recursive2.push([recursive2]);
recursive_value('array indirectly contains self', recursive2);

var recursive3 = [recursive];
recursive_value('array member contains self', recursive3);

</script>

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