blob: d1b78c38e5f7e2656fc01139f78cd0758475dd64 [file] [log] [blame]
function shouldBe(actual, expected) {
if (actual !== expected)
throw new Error('bad value: ' + actual);
}
var object = {
test001: 42
};
Object.defineProperty(object, "test001", {
writable: false
});
function sd(obj) {
let data = $vm.getStructureTransitionList(obj)
let result = []
if (!data)
return result
function kind(kind)
{
switch (kind) {
case 1:
return "added"
case 2:
return "deleted"
case 3:
return "attribute"
default:
return "unknown";
}
}
for (let i = 0; i < data.length/5; ++i) {
result.push({ offset: data[i*5+1], max: data[i*5+2], property: data[i*5+3], type: kind(data[i*5+4]) })
}
return result
}
shouldBe(JSON.stringify(sd(object)), `[{"offset":-1,"max":-1,"property":null,"type":"unknown"},{"offset":0,"max":0,"property":"test001","type":"added"},{"offset":0,"max":0,"property":"test001","type":"attribute"}]`);
delete object.test001;
shouldBe(JSON.stringify(sd(object)), `[{"offset":-1,"max":-1,"property":null,"type":"unknown"},{"offset":0,"max":0,"property":"test001","type":"added"},{"offset":0,"max":0,"property":"test001","type":"attribute"},{"offset":0,"max":0,"property":"test001","type":"deleted"}]`);
function lastStructureID()
{
var object = {
test001: 42
};
Object.defineProperty(object, "test001", {
writable: false
});
var list = $vm.getStructureTransitionList(object);
return list[list.length - 5];
}
var structureID = lastStructureID();
shouldBe(structureID, lastStructureID()); // Transition is traced.
var object = {
test001: 42
};
Object.defineProperty(object, "test001", {
writable: false
});
// Make it Dictionary.
for (var i = 0; i < 1000; ++i)
object["test" + i] = i;
shouldBe(object.test001, 42);
shouldBe(JSON.stringify(Object.getOwnPropertyDescriptor(object, "test001")), `{"value":42,"writable":false,"enumerable":true,"configurable":true}`);
Object.defineProperty(object, "test001", {
enumerable: false
});
shouldBe(JSON.stringify(Object.getOwnPropertyDescriptor(object, "test001")), `{"value":42,"writable":false,"enumerable":false,"configurable":true}`);
shouldBe(JSON.stringify(sd(object)), `[{"offset":-1,"max":1062,"property":null,"type":"unknown"},{"offset":0,"max":1062,"property":"test001","type":"attribute"}]`);