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

const currentVersion = 15;

// 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, 0xff, 0xff, 0xff, 0xff
],
[
    0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
    0x00, 0xff, 0xff, 0xff, 0xff, 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, 0xff, 0xff, 0xff, 0xff
],
[
    0x03, 0x00, 0x00, 0x00, 0x01, 0x64, 0x00, 0x00,
    0x00, 0xff, 0xff, 0xff, 0xff, 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, 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, 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, 0xff, 0xff, 0xff, 0xff, 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, 0xff, 0xff, 0xff, 0xff, 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>
