<html>
    <head>
        <script src="../../resources/js-test-pre.js"></script>
        <script src="resources/serialized-script-value.js"></script>
    </head>
    <body>
        <script>

const currentVersion = 0x09;

// Here's a little Q&D helper for future adventurers needing to rebaseline this.

function dec2hex(n) {
    var s = n.toString(16);
    if (s.length < 2)
        return "0x0" + s;
    return "0x" + s;
}

function dumpSerialization(obj)
{
    var serialized = internals.serializeObject(obj);
    var bufferView = new Uint8Array(serialized);

    var numbers = new Array();
    for (var i = 0; i < bufferView.length; ++i) {
        numbers.push(dec2hex(bufferView[i]));
    }
    var str = "";
    for (var i = 0; i < numbers.length; ++i) {
        if (i % 8 == 0)
            str += "\n    ";
        else
            str += " ";
        str += numbers[i];
        if (i != numbers.length - 1)
            str += ",";
    }
    debug(str);
}

function testSerialization(obj, values, oldFormat, serializeExceptionValue) {
    _testSerialization(1, obj, values, oldFormat, serializeExceptionValue);
}

testSerialization({foo: 'zoo', bar: {baz: 'myNewKey'}},
[
    currentVersion, 0x00, 0x00, 0x00, 0x02, 0x03, 0x00, 0x00,
    0x80, 0x66, 0x6f, 0x6f, 0x10, 0x03, 0x00, 0x00,
    0x80, 0x7a, 0x6f, 0x6f, 0x03, 0x00, 0x00, 0x80,
    0x62, 0x61, 0x72, 0x02, 0x03, 0x00, 0x00, 0x80,
    0x62, 0x61, 0x7a, 0x10, 0x08, 0x00, 0x00, 0x80,
    0x6d, 0x79, 0x4e, 0x65, 0x77, 0x4b, 0x65, 0x79,
    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
],
[
    0x03, 0x00, 0x00, 0x00, 0x02, 0x03, 0x00, 0x00,
    0x00, 0x66, 0x00, 0x6f, 0x00, 0x6f, 0x00, 0x10,
    0x03, 0x00, 0x00, 0x00, 0x7a, 0x00, 0x6f, 0x00,
    0x6f, 0x00, 0x03, 0x00, 0x00, 0x00, 0x62, 0x00,
    0x61, 0x00, 0x72, 0x00, 0x02, 0x03, 0x00, 0x00,
    0x00, 0x62, 0x00, 0x61, 0x00, 0x7a, 0x00, 0x10,
    0x08, 0x00, 0x00, 0x00, 0x6d, 0x00, 0x79, 0x00,
    0x4e, 0x00, 0x65, 0x00, 0x77, 0x00, 0x4b, 0x00,
    0x65, 0x00, 0x79, 0x00, 0xff, 0xff, 0xff, 0xff,
    0xff, 0xff, 0xff, 0xff
]);

testSerialization({foo: 'zoo', bar: 'myNewKey'},
[
    currentVersion, 0x00, 0x00, 0x00, 0x02, 0x03, 0x00, 0x00,
    0x80, 0x66, 0x6f, 0x6f, 0x10, 0x03, 0x00, 0x00,
    0x80, 0x7a, 0x6f, 0x6f, 0x03, 0x00, 0x00, 0x80,
    0x62, 0x61, 0x72, 0x10, 0x08, 0x00, 0x00, 0x80,
    0x6d, 0x79, 0x4e, 0x65, 0x77, 0x4b, 0x65, 0x79,
    0xff, 0xff, 0xff, 0xff
],
[
    currentVersion, 0x00, 0x00, 0x00, 0x02, 0x03, 0x00, 0x00,
    0x00, 0x66, 0x00, 0x6f, 0x00, 0x6f, 0x00, 0x10,
    0x03, 0x00, 0x00, 0x00, 0x7a, 0x00, 0x6f, 0x00,
    0x6f, 0x00, 0x03, 0x00, 0x00, 0x00, 0x62, 0x00,
    0x61, 0x00, 0x72, 0x00, 0x10, 0x08, 0x00, 0x00,
    0x00, 0x6d, 0x00, 0x79, 0x00, 0x4e, 0x00, 0x65,
    0x00, 0x77, 0x00, 0x4b, 0x00, 0x65, 0x00, 0x79,
    0x00, 0xff, 0xff, 0xff, 0xff
]);

testSerialization([],
[
    currentVersion, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
    0x00, 0xff, 0xff, 0xff, 0xff
],
[
    0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
    0x00, 0xff, 0xff, 0xff, 0xff
]);
testSerialization({foo: "zoo"},
[
    currentVersion, 0x00, 0x00, 0x00, 0x02, 0x03, 0x00, 0x00,
    0x80, 0x66, 0x6f, 0x6f, 0x10, 0x03, 0x00, 0x00,
    0x80, 0x7a, 0x6f, 0x6f, 0xff, 0xff, 0xff, 0xff
],
[
    0x03, 0x00, 0x00, 0x00, 0x02, 0x03, 0x00, 0x00,
    0x00, 0x66, 0x00, 0x6f, 0x00, 0x6f, 0x00, 0x10,
    0x03, 0x00, 0x00, 0x00, 0x7a, 0x00, 0x6f, 0x00,
    0x6f, 0x00, 0xff, 0xff, 0xff, 0xff
]);
testSerialization({foo: null},
[
    currentVersion, 0x00, 0x00, 0x00, 0x02, 0x03, 0x00, 0x00,
    0x80, 0x66, 0x6f, 0x6f, 0x04, 0xff, 0xff, 0xff,
    0xff
],
[
    0x03, 0x00, 0x00, 0x00, 0x02, 0x03, 0x00, 0x00,
    0x00, 0x66, 0x00, 0x6f, 0x00, 0x6f, 0x00, 0x04,
    0xff, 0xff, 0xff, 0xff
]);

testSerialization({},
[
    currentVersion, 0x00, 0x00, 0x00, 0x02, 0xff, 0xff, 0xff,
    0xff
],
[
    0x03, 0x00, 0x00, 0x00, 0x02, 0xff, 0xff, 0xff,
    0xff
]);

testSerialization(undefined,
[
    currentVersion, 0x00, 0x00, 0x00, 0x03
],
[
    0x03, 0x00, 0x00, 0x00, 0x03
]);
testSerialization(true,
[
    currentVersion, 0x00, 0x00, 0x00, 0x09
],
[
    0x03, 0x00, 0x00, 0x00, 0x09
]);
testSerialization(false,
[
    currentVersion, 0x00, 0x00, 0x00, 0x08
],
[
    0x03, 0x00, 0x00, 0x00, 0x08
]);
testSerialization(new Array(100),
[
    currentVersion, 0x00, 0x00, 0x00, 0x01, 0x64, 0x00, 0x00,
    0x00, 0xff, 0xff, 0xff, 0xff
],
[
    0x03, 0x00, 0x00, 0x00, 0x01, 0x64, 0x00, 0x00,
    0x00, 0xff, 0xff, 0xff, 0xff
]);
testSerialization(10,
[
    currentVersion, 0x00, 0x00, 0x00, 0x05, 0x0a, 0x00, 0x00,
    0x00
],
[
    0x03, 0x00, 0x00, 0x00, 0x05, 0x0a, 0x00, 0x00,
    0x00
]);
testSerialization(-10,
[
    currentVersion, 0x00, 0x00, 0x00, 0x05, 0xf6, 0xff, 0xff,
    0xff
],
[
    0x03, 0x00, 0x00, 0x00, 0x05, 0xf6, 0xff, 0xff,
    0xff
]);
testSerialization(Math.pow(2,30),
[
    currentVersion, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00,
    0x40
],
[
    0x03, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00,
    0x40
]);
testSerialization(Math.pow(2,55),
[
    currentVersion, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x60, 0x43,
],
[
    0x03, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x60, 0x43,
]);
testSerialization(1.23,
[
    currentVersion, 0x00, 0x00, 0x00, 0x0a, 0xae, 0x47, 0xe1,
    0x7a, 0x14, 0xae, 0xf3, 0x3f
],
[
    0x03, 0x00, 0x00, 0x00, 0x0a, 0xae, 0x47, 0xe1,
    0x7a, 0x14, 0xae, 0xf3, 0x3f
]);
testSerialization("",
[
    currentVersion, 0x00, 0x00, 0x00, 0x11
],
[
    0x03, 0x00, 0x00, 0x00, 0x11
]);
testSerialization("abc",
[
    currentVersion, 0x00, 0x00, 0x00, 0x10, 0x03, 0x00, 0x00,
    0x80, 0x61, 0x62, 0x63
],
[
    0x03, 0x00, 0x00, 0x00, 0x10, 0x03, 0x00, 0x00,
    0x00, 0x61, 0x00, 0x62, 0x00, 0x63, 0x00
]);
testSerialization({integer: 123},
[
    currentVersion, 0x00, 0x00, 0x00, 0x02, 0x07, 0x00, 0x00,
    0x80, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x65, 0x72,
    0x05, 0x7b, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff,
    0xff
],
[
    0x03, 0x00, 0x00, 0x00, 0x02, 0x07, 0x00, 0x00,
    0x00, 0x69, 0x00, 0x6e, 0x00, 0x74, 0x00, 0x65,
    0x00, 0x67, 0x00, 0x65, 0x00, 0x72, 0x00, 0x05,
    0x7b, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff
]);
testSerialization({string: "str"},
[
    currentVersion, 0x00, 0x00, 0x00, 0x02, 0x06, 0x00, 0x00,
    0x80, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x10,
    0x03, 0x00, 0x00, 0x80, 0x73, 0x74, 0x72, 0xff,
    0xff, 0xff, 0xff
],
[
    0x03, 0x00, 0x00, 0x00, 0x02, 0x06, 0x00, 0x00,
    0x00, 0x73, 0x00, 0x74, 0x00, 0x72, 0x00, 0x69,
    0x00, 0x6e, 0x00, 0x67, 0x00, 0x10, 0x03, 0x00,
    0x00, 0x00, 0x73, 0x00, 0x74, 0x00, 0x72, 0x00,
    0xff, 0xff, 0xff, 0xff
]);
testSerialization({list: [1,2,3]},
[
    currentVersion, 0x00, 0x00, 0x00, 0x02, 0x04, 0x00, 0x00,
    0x80, 0x6c, 0x69, 0x73, 0x74, 0x01, 0x03, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x01,
    0x00, 0x00, 0x00, 0x05, 0x02, 0x00, 0x00, 0x00,
    0x02, 0x00, 0x00, 0x00, 0x05, 0x03, 0x00, 0x00,
    0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
    0xff
],
[
    0x03, 0x00, 0x00, 0x00, 0x02, 0x04, 0x00, 0x00,
    0x00, 0x6c, 0x00, 0x69, 0x00, 0x73, 0x00, 0x74,
    0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x07, 0x01, 0x00, 0x00, 0x00, 0x05,
    0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
    0x05, 0x03, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff,
    0xff, 0xff, 0xff, 0xff, 0xff
]);
testSerialization(null,
[
    currentVersion, 0x00, 0x00, 0x00, 0x04
],
[
    0x03, 0x00, 0x00, 0x00, 0x04
]);
testSerialization(/abc/,
[
    currentVersion, 0x00, 0x00, 0x00, 0x12, 0x03, 0x00, 0x00,
    0x80, 0x61, 0x62, 0x63, 0x00, 0x00, 0x00, 0x80
],
[
    0x03, 0x00, 0x00, 0x00, 0x12, 0x03, 0x00, 0x00,
    0x00, 0x61, 0x00, 0x62, 0x00, 0x63, 0x00, 0x00,
    0x00, 0x00, 0x00
]);

var innerObject = {hello: "there"};
var outerObject = {inner: innerObject};
outerObject['outer'] = innerObject;
testSerialization(outerObject,
[
    currentVersion, 0x00, 0x00, 0x00, 0x02, 0x05, 0x00, 0x00,
    0x80, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x02, 0x05,
    0x00, 0x00, 0x80, 0x68, 0x65, 0x6c, 0x6c, 0x6f,
    0x10, 0x05, 0x00, 0x00, 0x80, 0x74, 0x68, 0x65,
    0x72, 0x65, 0xff, 0xff, 0xff, 0xff, 0x05, 0x00,
    0x00, 0x80, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x13,
    0x01, 0xff, 0xff, 0xff, 0xff
],
[
    0x03, 0x00, 0x00, 0x00, 0x02, 0x05, 0x00, 0x00,
    0x00, 0x69, 0x00, 0x6e, 0x00, 0x6e, 0x00, 0x65,
    0x00, 0x72, 0x00, 0x02, 0x05, 0x00, 0x00, 0x00,
    0x68, 0x00, 0x65, 0x00, 0x6c, 0x00, 0x6c, 0x00,
    0x6f, 0x00, 0x10, 0x05, 0x00, 0x00, 0x00, 0x74,
    0x00, 0x68, 0x00, 0x65, 0x00, 0x72, 0x00, 0x65,
    0x00, 0xff, 0xff, 0xff, 0xff, 0x05, 0x00, 0x00,
    0x00, 0x6f, 0x00, 0x75, 0x00, 0x74, 0x00, 0x65,
    0x00, 0x72, 0x00, 0x13, 0x01, 0xff, 0xff, 0xff,
    0xff
]);
testSerialization(innerObject,
[
    currentVersion, 0x00, 0x00, 0x00, 0x02, 0x05, 0x00, 0x00,
    0x80, 0x68, 0x65, 0x6c, 0x6c, 0x6f, 0x10, 0x05,
    0x00, 0x00, 0x80, 0x74, 0x68, 0x65, 0x72, 0x65,
    0xff, 0xff, 0xff, 0xff
],
[
    0x03, 0x00, 0x00, 0x00, 0x02, 0x05, 0x00, 0x00,
    0x00, 0x68, 0x00, 0x65, 0x00, 0x6c, 0x00, 0x6c,
    0x00, 0x6f, 0x00, 0x10, 0x05, 0x00, 0x00, 0x00,
    0x74, 0x00, 0x68, 0x00, 0x65, 0x00, 0x72, 0x00,
    0x65, 0x00, 0xff, 0xff, 0xff, 0xff
]);

var unicodeObject = {a: 'a', u: String.fromCharCode(0x03B1,0x03B2), d: 42};
testSerialization(unicodeObject,
[
    currentVersion, 0x00, 0x00, 0x00, 0x02, 0x01, 0x00, 0x00,
    0x80, 0x61, 0x10, 0xfe, 0xff, 0xff, 0xff, 0x00,
    0x01, 0x00, 0x00, 0x80, 0x75, 0x10, 0x02, 0x00,
    0x00, 0x00, 0xb1, 0x03, 0xb2, 0x03, 0x01, 0x00,
    0x00, 0x80, 0x64, 0x05, 0x2a, 0x00, 0x00, 0x00,
    0xff, 0xff, 0xff, 0xff
],
[
    0x03, 0x00, 0x00, 0x00, 0x02, 0x01, 0x00, 0x00,
    0x00, 0x61, 0x00, 0x10, 0xfe, 0xff, 0xff, 0xff,
    0x00, 0x01, 0x00, 0x00, 0x00, 0x75, 0x00, 0x10,
    0x02, 0x00, 0x00, 0x00, 0xb1, 0x03, 0xb2, 0x03,
    0x01, 0x00, 0x00, 0x00, 0x64, 0x00, 0x05, 0x2a,
    0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff
]);
unicodeObject.a = 'ab';
testSerialization(unicodeObject,
[
    currentVersion, 0x00, 0x00, 0x00, 0x02, 0x01, 0x00, 0x00,
    0x80, 0x61, 0x10, 0x02, 0x00, 0x00, 0x80, 0x61,
    0x62, 0x01, 0x00, 0x00, 0x80, 0x75, 0x10, 0x02,
    0x00, 0x00, 0x00, 0xb1, 0x03, 0xb2, 0x03, 0x01,
    0x00, 0x00, 0x80, 0x64, 0x05, 0x2a, 0x00, 0x00,
    0x00, 0xff, 0xff, 0xff, 0xff
],
[
    0x03, 0x00, 0x00, 0x00, 0x02, 0x01, 0x00, 0x00,
    0x00, 0x61, 0x00, 0x10, 0x02, 0x00, 0x00, 0x00,
    0x61, 0x00, 0x62, 0x00, 0x01, 0x00, 0x00, 0x00,
    0x75, 0x00, 0x10, 0x02, 0x00, 0x00, 0x00, 0xb1,
    0x03, 0xb2, 0x03, 0x01, 0x00, 0x00, 0x00, 0x64,
    0x00, 0x05, 0x2a, 0x00, 0x00, 0x00, 0xff, 0xff,
    0xff, 0xff
]);

var arrayObject = [];
arrayObject['a'] = true;
arrayObject['b'] = false;
arrayObject['foo'] = 123;
arrayObject['bar'] = 456;
arrayObject[''] = null;
testSerialization(arrayObject,
[
    currentVersion, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
    0x00, 0xfd, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00,
    0x80, 0x61, 0x09, 0x01, 0x00, 0x00, 0x80, 0x62,
    0x08, 0x03, 0x00, 0x00, 0x80, 0x66, 0x6f, 0x6f,
    0x05, 0x7b, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00,
    0x80, 0x62, 0x61, 0x72, 0x05, 0xc8, 0x01, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x80, 0x04, 0xff, 0xff,
    0xff, 0xff
]);

arrayObject[0] = 'foo';
arrayObject[1] = 'bar';
testSerialization(arrayObject,
[
    currentVersion, 0x00, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x03, 0x00,
    0x00, 0x80, 0x66, 0x6f, 0x6f, 0x01, 0x00, 0x00,
    0x00, 0x10, 0x03, 0x00, 0x00, 0x80, 0x62, 0x61,
    0x72, 0xfd, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00,
    0x80, 0x61, 0x09, 0x01, 0x00, 0x00, 0x80, 0x62,
    0x08, 0xfe, 0xff, 0xff, 0xff, 0x00, 0x05, 0x7b,
    0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x01,
    0x05, 0xc8, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x80, 0x04, 0xff, 0xff, 0xff, 0xff
]);

var mapObject = new Map;
mapObject.set(1,2)
mapObject.set(1.5, {})
mapObject.set(mapObject, "foo")
mapObject.set("bar", new String("bar"))
mapObject.expando = {};

testSerialization(mapObject,
[
    currentVersion, 0x00, 0x00, 0x00, 0x1e, 0x07, 0x05, 0x02,
    0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0xf8, 0x3f, 0x02, 0xff, 0xff, 0xff,
    0xff, 0x13, 0x00, 0x10, 0x03, 0x00, 0x00, 0x80,
    0x66, 0x6f, 0x6f, 0x10, 0x03, 0x00, 0x00, 0x80,
    0x62, 0x61, 0x72, 0x1a, 0xfe, 0xff, 0xff, 0xff,
    0x01, 0x1f, 0x07, 0x00, 0x00, 0x80, 0x65, 0x78,
    0x70, 0x61, 0x6e, 0x64, 0x6f, 0x02, 0xff, 0xff,
    0xff, 0xff, 0xff, 0xff, 0xff, 0xff
]);

var setObject = new Set;
setObject.add(1)
setObject.add(1.5)
setObject.add(setObject)
setObject.add("bar")
setObject.add(new String("bar"))
setObject.expando = {};

testSerialization(setObject,
[
    currentVersion, 0x00, 0x00, 0x00, 0x1d, 0x07, 0x0a, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x3f, 0x13,
    0x00, 0x10, 0x03, 0x00, 0x00, 0x80, 0x62, 0x61,
    0x72, 0x1a, 0xfe, 0xff, 0xff, 0xff, 0x00, 0x20,
    0x07, 0x00, 0x00, 0x80, 0x65, 0x78, 0x70, 0x61,
    0x6e, 0x64, 0x6f, 0x02, 0xff, 0xff, 0xff, 0xff,
    0xff, 0xff, 0xff, 0xff
]);

testSerialization(function(){}, [], null, DOMException.DATA_CLONE_ERR);

successfullyParsed = true;
        </script>
        <script src="../../resources/js-test-post.js"></script>
    </body>
</html>
