Web Inspector: Styles Redesign: Editing selector should not hide the rule
[WebKit-https.git] / LayoutTests / inspector / unit-tests / string-utilities.html
1 <!doctype html>
2 <html>
3 <head>
4 <meta charset="utf-8">
5 <script src="../../http/tests/inspector/resources/inspector-test.js"></script>
6 <script>
7 function test()
8 {
9     let suite = InspectorTest.createSyncSuite("StringUtilities");
10
11     suite.addTestCase({
12         name: "String.format",
13         test() {
14             InspectorTest.expectThat("%f".format(1.23456789) === "1.234568", "float format specifier with no sub-specifier should show 6 decimal digits");
15             InspectorTest.expectThat("%.0f".format(1.23456789) === "1", "float format specifier with precision 0 should show 0 decimal digits");
16             InspectorTest.expectThat("%.1f".format(1.23456789) === "1.2", "float format specifier with precision 1 should show 1 decimal digit");
17             InspectorTest.expectThat("%.2f".format(1.23456789) === "1.23", "float format specifier with precision 2 should show 2 decimal digits");
18             InspectorTest.expectThat("%.3f".format(1.23456789) === "1.235", "float format specifier with precision 3 should show 3 decimal digits");
19             InspectorTest.expectThat("%.4f".format(1.23456789) === "1.2346", "float format specifier with precision 4 should show 4 decimal digits");
20             InspectorTest.expectThat("%.5f".format(1.23456789) === "1.23457", "float format specifier with precision 5 should show 5 decimal digits");
21             InspectorTest.expectThat("%.6f".format(1.23456789) === "1.234568", "float format specifier with precision 6 should show 6 decimal digits");
22             InspectorTest.expectThat("%.7f".format(1.23456789) === "1.2345679", "float format specifier with precision 7 should show 7 decimal digits");
23             InspectorTest.expectThat("%.8f".format(1.23456789) === "1.23456789", "float format specifier with precision 8 should show 8 decimal digits");
24             InspectorTest.expectThat("%.9f".format(1.23456789) === "1.234567890", "float format specifier with precision 9 should show 9 decimal digits");
25             InspectorTest.expectThat("%f".format("1.23456789") === "1.234568", "float format specifier with string argument should attempt conversion to float");
26             InspectorTest.expectThat("%f".format(Infinity) === "\u221E", "float format specifier with Infinity argument should show \"\u221E\"");
27             InspectorTest.expectThat("%f".format(NaN) === "NaN", "float format specifier with NaN argument should show \"NaN\"");
28
29             InspectorTest.expectThat("%d".format(137.1) === "137", "integer format specifier with float argument should convert to integer");
30             InspectorTest.expectThat("%d".format("137") === "137", "integer format specifier with string argument should attempt conversion to integer");
31             InspectorTest.expectThat("%d".format(Infinity) === "NaN", "integer format specifier with Infinity argument should show \"NaN\"");
32             InspectorTest.expectThat("%d".format(NaN) === "NaN", "integer format specifier with NaN argument should show \"NaN\"");
33             return true;
34         }
35     });
36
37     suite.addTestCase({
38         name: "String.prototype.extendedLocaleCompare",
39         test() {
40             InspectorTest.expectEqual("1".extendedLocaleCompare("2"), -1, `"1" < "2"`);
41             InspectorTest.expectEqual("2".extendedLocaleCompare("1"), 1, `"2" > "1"`);
42             InspectorTest.expectEqual("2".extendedLocaleCompare("10"), -1, `"2" < "10"`);
43             InspectorTest.expectEqual("10".extendedLocaleCompare("2"), 1, `"10" > "2"`);
44             InspectorTest.expectEqual("1".extendedLocaleCompare("10"), -1, `"1" < "10"`);
45             InspectorTest.expectEqual("10".extendedLocaleCompare("1"), 1, `"10" > "1"`);
46
47             InspectorTest.expectEqual("a1".extendedLocaleCompare("a2"), -1, `"a1" < "a2"`);
48             InspectorTest.expectEqual("a2".extendedLocaleCompare("a1"), 1, `"a2" > "a1"`);
49             InspectorTest.expectEqual("a2".extendedLocaleCompare("a10"), -1, `"a2" < "a10"`);
50             InspectorTest.expectEqual("a10".extendedLocaleCompare("a2"), 1, `"a10" > "a2"`);
51             InspectorTest.expectEqual("a1".extendedLocaleCompare("a10"), -1, `"a1" < "a10"`);
52             InspectorTest.expectEqual("a10".extendedLocaleCompare("a1"), 1, `"a10" > "a1"`);
53             return true;
54         }
55     });
56
57     suite.addTestCase({
58         name: "String.prototype.get lineCount",
59         test() {
60             InspectorTest.expectEqual("1\n2\n3".lineCount, 3, "A string with two line breaks should have three lines.");
61             InspectorTest.expectEqual("1\n\n3".lineCount, 3, "A string with two consecutive line breaks should have three lines.");
62             InspectorTest.expectEqual("1\n".lineCount, 2, "A string with a traling line breaks should have two lines.");
63             InspectorTest.expectEqual("".lineCount, 1, "An empty string is one line.");
64
65             return true;
66         }
67     });
68
69     suite.addTestCase({
70         name: "String.prototype.get lastLine",
71         test() {
72             InspectorTest.expectEqual("single line".lastLine, "single line", "Last line of one line string is the same string.");
73             InspectorTest.expectEqual("1\n2\n3".lastLine, "3", "Last line of a three line string should be the third line.");
74             InspectorTest.expectEqual("1\n".lastLine, "", "Last line of a string with a traling line break should be empty.");
75             InspectorTest.expectEqual("".lastLine, "", "Last line of an empty string is the same empty string.");
76
77             return true;
78         }
79     });
80
81     suite.addTestCase({
82         name: "String.prototype.truncateStart",
83         test() {
84             const ellipsis = "\u2026";
85             InspectorTest.expectEqual("abcdef".truncateStart(6), "abcdef", "String stays the same.");
86             InspectorTest.expectEqual("abcdef".truncateStart(5), ellipsis + "cdef", "Ellipsis is inserted before the third character.");
87             InspectorTest.expectEqual("abcdef".truncateStart(4), ellipsis + "def", "Ellipsis is inserted before the fourth character.");
88             return true;
89         }
90     });
91
92     suite.addTestCase({
93         name: "String.prototype.truncateMiddle",
94         test() {
95             const ellipsis = "\u2026";
96             InspectorTest.expectEqual("abcdef".truncateMiddle(6), "abcdef", "String stays the same.");
97             InspectorTest.expectEqual("abcdef".truncateMiddle(5), `ab${ellipsis}ef`, "Ellipsis is inserted in the middle.");
98             InspectorTest.expectEqual("abcdef".truncateMiddle(4), `ab${ellipsis}f`, "Ellipsis is inserted after the second character.");
99             return true;
100         }
101     });
102
103     suite.addTestCase({
104         name: "String.prototype.truncateEnd",
105         test() {
106             const ellipsis = "\u2026";
107             InspectorTest.expectEqual("abcdef".truncateEnd(6), "abcdef", "String stays the same.");
108             InspectorTest.expectEqual("abcdef".truncateEnd(5), "abcd" + ellipsis, "Ellipsis is inserted after the fourth character.");
109             InspectorTest.expectEqual("abcdef".truncateEnd(4), "abc" + ellipsis, "Ellipsis is inserted after the third character.");
110             return true;
111         }
112     });
113
114     suite.addTestCase({
115         name: "String.prototype.escapeCharacters",
116         test() {
117             InspectorTest.expectEqual("abcdef".escapeCharacters(), "abcdef", "String stays the same with no escape characters.");
118             InspectorTest.expectEqual("abcdef".escapeCharacters(""), "abcdef", "String stays the same with empty escape characters.");
119             InspectorTest.expectEqual("abcdef".escapeCharacters("g"), "abcdef", "String stays the same with no matching escape characters.");
120             InspectorTest.expectEqual("abcdef".escapeCharacters("c"), "ab\\cdef", "The letter 'c' is escaped.");
121             InspectorTest.expectEqual("abcdef".escapeCharacters("ce"), "ab\\cd\\ef", "The letter 'c' and 'e' are escaped.");
122             InspectorTest.expectEqual("abcdef".escapeCharacters("cee"), "ab\\cd\\ef", "The letter 'c' and 'e' are escaped.");
123             InspectorTest.expectEqual("abcdef".escapeCharacters("ced"), "ab\\c\\d\\ef", "The letter 'c', 'd', and 'e' are escaped.");
124             return true;
125         }
126     });
127
128     suite.runTestCasesAndFinish();
129 }
130 </script>
131 </head>
132 <body onLoad="runTest()">
133 </body>
134 </html>