REGRESSION (r183373): ASSERT failed in wtf/SHA1.h
[WebKit-https.git] / Source / JavaScriptCore / tests / stress / template-literal-line-terminators.js
1 //@ skip
2
3 function test(actual, expected) {
4     if (actual !== expected)
5         throw new Error("bad value: " + actual);
6 }
7
8 function testEval(script, expected) {
9     test(eval(script), expected);
10 }
11
12 function testEvalLineNumber(script, expected, lineNum) {
13     testEval(script, expected);
14
15     var error = null;
16     var actualLine;
17     try {
18         eval(script + ';throw new Error("line");');
19     } catch (error) {
20         actualLine = error.line;
21     }
22     test(actualLine, lineNum);
23 }
24
25 test(`Hello`, "Hello");
26 test(`Hello World`, "Hello World");
27 test(`
28 `, "\n");
29 test(`Hello
30 World`, "Hello\nWorld");
31
32 testEvalLineNumber("`Hello World`", "Hello World", 1);
33
34 testEvalLineNumber("`Hello\rWorld`", "Hello\nWorld", 2);
35 testEvalLineNumber("`Hello\nWorld`", "Hello\nWorld", 2);
36
37 testEvalLineNumber("`Hello\r\rWorld`", "Hello\n\nWorld", 3);
38 testEvalLineNumber("`Hello\r\nWorld`", "Hello\nWorld", 2);
39 testEvalLineNumber("`Hello\n\nWorld`", "Hello\n\nWorld", 3);
40 testEvalLineNumber("`Hello\n\rWorld`", "Hello\n\nWorld", 2);
41
42 testEvalLineNumber("`Hello\n\r\nWorld`", "Hello\n\nWorld", 3);
43 testEvalLineNumber("`Hello\r\n\rWorld`", "Hello\n\nWorld", 3);
44 testEvalLineNumber("`Hello\n\n\nWorld`", "Hello\n\n\nWorld", 4);
45
46 testEvalLineNumber("`Hello\n\r\n\rWorld`", "Hello\n\n\nWorld", 3);
47 testEvalLineNumber("`Hello\n\r\n\nWorld`", "Hello\n\n\nWorld", 4);
48 testEvalLineNumber("`Hello\r\n\n\nWorld`", "Hello\n\n\nWorld", 4);
49
50 testEvalLineNumber("`Hello\\\n\r\rWorld`", "Hello\n\nWorld", 3);
51 testEvalLineNumber("`Hello\\\r\n\n\nWorld`", "Hello\n\nWorld", 4);
52 testEvalLineNumber("`Hello\\\n\r\n\nWorld`", "Hello\n\nWorld", 4);
53 testEvalLineNumber("`Hello\\\n\r\r\nWorld`", "Hello\n\nWorld", 3);
54
55 testEvalLineNumber("`\u2028`", "\u2028", 2);
56 testEvalLineNumber("`\u2029`", "\u2029", 2);
57 testEvalLineNumber("`\\u2028`", "\u2028", 1);
58 testEvalLineNumber("`\\u2029`", "\u2029", 1);