test262/implementation-contributed/javascriptcore/stress/template-literal-line-terminators.js
test262-automation e9a5a7f918 [javascriptcore-test262-automation] changes from git@github.com:WebKit/webkit.git at sha 949e26452cfa153a7f4afe593da97e2fe9e1b706 on Tue Jul 03 2018 14:35:15 GMT-0400 (Eastern Daylight Time) (#1620)
* [javascriptcore-test262-automation] changes from git@github.com:WebKit/webkit.git at sha 949e26452cfa153a7f4afe593da97e2fe9e1b706 on Tue Jul 03 2018 14:35:15 GMT-0400 (Eastern Daylight Time)
2018-07-03 15:59:58 -04:00

58 lines
1.8 KiB
JavaScript

function test(actual, expected) {
if (actual !== expected)
throw new Error("bad value: actual: " + actual + ", expected: " + expected);
}
function testEval(script, expected) {
test(eval(script), expected);
}
function testEvalLineNumber(script, expected, lineNum) {
testEval(script, expected);
var error = null;
var actualLine;
try {
eval(script + ';throw new Error("line");');
} catch (error) {
actualLine = error.line;
}
test(actualLine, lineNum);
}
test(`Hello`, "Hello");
test(`Hello World`, "Hello World");
test(`
`, "\n");
test(`Hello
World`, "Hello\nWorld");
testEvalLineNumber("`Hello World`", "Hello World", 1);
testEvalLineNumber("`Hello\rWorld`", "Hello\nWorld", 2);
testEvalLineNumber("`Hello\nWorld`", "Hello\nWorld", 2);
testEvalLineNumber("`Hello\r\rWorld`", "Hello\n\nWorld", 3);
testEvalLineNumber("`Hello\r\nWorld`", "Hello\nWorld", 2);
testEvalLineNumber("`Hello\n\nWorld`", "Hello\n\nWorld", 3);
testEvalLineNumber("`Hello\n\rWorld`", "Hello\n\nWorld", 3);
testEvalLineNumber("`Hello\n\r\nWorld`", "Hello\n\nWorld", 3);
testEvalLineNumber("`Hello\r\n\rWorld`", "Hello\n\nWorld", 3);
testEvalLineNumber("`Hello\n\n\nWorld`", "Hello\n\n\nWorld", 4);
testEvalLineNumber("`Hello\n\r\n\rWorld`", "Hello\n\n\nWorld", 4);
testEvalLineNumber("`Hello\n\r\n\nWorld`", "Hello\n\n\nWorld", 4);
testEvalLineNumber("`Hello\r\n\n\nWorld`", "Hello\n\n\nWorld", 4);
testEvalLineNumber("`Hello\\\n\r\rWorld`", "Hello\n\nWorld", 4);
testEvalLineNumber("`Hello\\\r\n\n\nWorld`", "Hello\n\nWorld", 4);
testEvalLineNumber("`Hello\\\n\r\n\nWorld`", "Hello\n\nWorld", 4);
testEvalLineNumber("`Hello\\\n\r\r\nWorld`", "Hello\n\nWorld", 4);
testEvalLineNumber("`\u2028`", "\u2028", 2);
testEvalLineNumber("`\u2029`", "\u2029", 2);
testEvalLineNumber("`\\u2028`", "\u2028", 1);
testEvalLineNumber("`\\u2029`", "\u2029", 1);