44 lines
1.6 KiB
JavaScript
44 lines
1.6 KiB
JavaScript
description(
|
|
"This test checks the behavior of computed property names in object literals."
|
|
);
|
|
var a = "propertyName"
|
|
function runTest(test)
|
|
{
|
|
test = "(" + test + ")"
|
|
shouldBeTrue(test);
|
|
shouldBeTrue("'use strict';"+test);
|
|
shouldBeTrue("(function(){'use strict';return "+test+"})()");
|
|
}
|
|
|
|
runTest("{[a]: true}.propertyName")
|
|
runTest("{[(1,a)]: true}.propertyName")
|
|
runTest("{[a+1]: true}.propertyName1")
|
|
runTest("{propertyName: false, [a]: true}.propertyName")
|
|
runTest("{[a]: false, propertyName: true}.propertyName")
|
|
runTest("{get propertyName(){ return false; }, [a]: true}.propertyName")
|
|
runTest("{[a]: false, get propertyName(){ return true; }}.propertyName")
|
|
runTest("{__proto__: {get propertyName(){ return false; }}, [a]: true}.propertyName")
|
|
runTest("{__proto__: {get propertyName(){ return false; }}, propertyName: true}.propertyName")
|
|
a = 0;
|
|
runTest("{[a]: true}[0]")
|
|
runTest("{[a+1]: true}[1]")
|
|
runTest("{0: false, [a]: true}[0]")
|
|
runTest("{[a]: false, 0: true}[0]")
|
|
runTest("{get '0'(){ return false; }, [a]: true}[0]")
|
|
runTest("{[a]: false, get '0'(){ return true; }}[0]")
|
|
runTest("{__proto__: {get '0'(){ return false; }}, [a]: true}[0]")
|
|
|
|
function runTestThrow(test)
|
|
{
|
|
test = "(" + test + ")"
|
|
shouldThrow(test);
|
|
shouldThrow("'use strict';"+test);
|
|
shouldThrow("(function(){'use strict';return "+test+"})()");
|
|
}
|
|
|
|
a = "propertyName"
|
|
runTestThrow("{[1,a]: true}.propertyName")
|
|
runTestThrow("{propertyName: false, [1,a]: true}.propertyName")
|
|
runTestThrow("{[1,a]: false, propertyName: true}.propertyName")
|
|
runTestThrow("{get propertyName(){ return false; }, [1,a]: true}.propertyName")
|