blob: f6808b8f5bc3d10e625d140e35ab21adae98c737 [file] [log] [blame]
function shouldBe(actual, expected) {
if (actual !== expected)
throw new Error('bad value: ' + actual);
}
function shouldThrow(func, message) {
var error = null;
try {
func();
} catch (e) {
error = e;
}
if (!error)
throw new Error("not thrown.");
if (String(error) !== message)
throw new Error("bad error: " + String(error));
}
(function regExpLastIndex() {
var regexp = new RegExp('Cocoa');
regexp.lastIndex = 'Hello';
shouldBe(Reflect.get(regexp, 'lastIndex'), 'Hello');
regexp.lastIndex = 42;
shouldBe(Reflect.get(regexp, 'lastIndex'), 42);
regexp.lastIndex = "Hello";
shouldBe(Reflect.get(regexp, 'lastIndex'), 'Hello');
shouldBe(Reflect.defineProperty(regexp, 'lastIndex', {
value: 42,
writable: false
}), true);
shouldBe(Reflect.get(regexp, 'lastIndex'), 42);
shouldThrow(function () {
'use strict';
regexp.lastIndex = 'NG';
}, `TypeError: Attempted to assign to readonly property.`);
shouldBe(Reflect.get(regexp, 'lastIndex'), 42);
shouldThrow(function () {
'use strict';
regexp.lastIndex = "NG";
}, `TypeError: Attempted to assign to readonly property.`);
shouldThrow(function () {
'use strict';
Object.defineProperty(regexp, 'lastIndex', {
value: 'NG'
});
}, `TypeError: Attempting to change value of a readonly property.`);
shouldBe(Reflect.get(regexp, 'lastIndex'), 42);
}());