28 lines
711 B
JavaScript
28 lines
711 B
JavaScript
function shouldBe(actual, expected) {
|
|
if (actual !== expected)
|
|
throw new Error(`Bad value: ${actual}!`);
|
|
}
|
|
|
|
function shouldThrow(func, errorMessage) {
|
|
let errorThrown = false;
|
|
try {
|
|
func();
|
|
} catch (error) {
|
|
errorThrown = true;
|
|
if (String(error) !== errorMessage)
|
|
throw new Error(`Bad error: ${error}`);
|
|
}
|
|
if (!errorThrown)
|
|
throw new Error("Didn't throw!");
|
|
}
|
|
|
|
(function stringLength() {
|
|
let str = "foo";
|
|
|
|
for (let i = 0; i < 1e5; i++) {
|
|
str.length = 0;
|
|
shouldBe(str.length, 3);
|
|
shouldThrow(() => { "use strict"; "bar".length = 3; }, "TypeError: Attempted to assign to readonly property.");
|
|
}
|
|
})();
|