MCPcopy Index your code
hub / github.com/nodejs/node / test

Function test

deps/v8/test/mjsunit/string-external-cached.js:31–116  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

29// Test data pointer caching of external strings.
30
31function test() {
32 // Test string.charAt.
33 var charat_str = new Array(5);
34 charat_str[0] = createExternalizableString('0123456789ABCDEF0123456789ABCDEF\
350123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF\
360123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF\
370123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF\
380123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF');
39 charat_str[1] = createExternalizableString('0123456789ABCDEF');
40 for (var i = 0; i < 6; i++) charat_str[1] += charat_str[1];
41 try { // String can only be externalized once
42 externalizeString(charat_str[0]);
43 externalizeString(charat_str[1]);
44 } catch (ex) { }
45 charat_str[2] = charat_str[0].slice(0, -1);
46 charat_str[3] = charat_str[1].slice(0, -1);
47 charat_str[4] = charat_str[0] + charat_str[0];
48
49 for (var i = 0; i < 5; i++) {
50 assertEquals('B', charat_str[i].charAt(6*16 + 11));
51 assertEquals('C', charat_str[i].charAt(6*16 + 12));
52 assertEquals('A', charat_str[i].charAt(3*16 + 10));
53 assertEquals('B', charat_str[i].charAt(3*16 + 11));
54 }
55
56 charat_short = createExternalizableString('01234');
57 try { // String can only be externalized once
58 externalizeString(charat_short);
59 } catch (ex) { }
60 assertEquals("1", charat_short.charAt(1));
61
62 // Test regexp and short substring.
63 var re = /(A|B)/;
64 var rere = /(T.{1,3}B)/u;
65 var ascii = createExternalizableString('ABCDEFGHIJKLMNOPQRST');
66 var twobyte = createExternalizableString('_ABCDEFGHIJKLMNOPQRST🤓');
67 try { // String can only be externalized once
68 externalizeString(ascii);
69 externalizeString(twobyte);
70 } catch (ex) { }
71 assertTrue(isOneByteString(ascii));
72 assertFalse(isOneByteString(twobyte));
73 var ascii_slice = ascii.slice(1,-1);
74 var twobyte_slice = twobyte.slice(2,-1);
75 var ascii_cons = ascii + ascii;
76 var twobyte_cons = twobyte + twobyte;
77 for (var i = 0; i < 2; i++) {
78 assertEquals(["A", "A"], re.exec(ascii));
79 assertEquals(["B", "B"], re.exec(ascii_slice));
80 assertEquals(["TAB", "TAB"], rere.exec(ascii_cons));
81 assertEquals(["A", "A"], re.exec(twobyte));
82 assertEquals(["B", "B"], re.exec(twobyte_slice));
83 assertEquals(["T🤓_AB", "T🤓_AB"], rere.exec(twobyte_cons));
84 assertEquals("DEFG", ascii_slice.substr(2, 4));
85 assertEquals("DEFG", twobyte_slice.substr(2, 4));
86 assertEquals("DEFG", ascii_cons.substr(3, 4));
87 assertEquals("DEFG", twobyte_cons.substr(4, 4));
88 }

Callers 1

Calls 5

assertTrueFunction · 0.70
sliceMethod · 0.65
assertEqualsFunction · 0.50
assertFalseFunction · 0.50
execMethod · 0.45

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…