OLD | NEW |
1 // Copyright 2009 the V8 project authors. All rights reserved. | 1 // Copyright 2009 the V8 project authors. All rights reserved. |
2 // Redistribution and use in source and binary forms, with or without | 2 // Redistribution and use in source and binary forms, with or without |
3 // modification, are permitted provided that the following conditions are | 3 // modification, are permitted provided that the following conditions are |
4 // met: | 4 // met: |
5 // | 5 // |
6 // * Redistributions of source code must retain the above copyright | 6 // * Redistributions of source code must retain the above copyright |
7 // notice, this list of conditions and the following disclaimer. | 7 // notice, this list of conditions and the following disclaimer. |
8 // * Redistributions in binary form must reproduce the above | 8 // * Redistributions in binary form must reproduce the above |
9 // copyright notice, this list of conditions and the following | 9 // copyright notice, this list of conditions and the following |
10 // disclaimer in the documentation and/or other materials provided | 10 // disclaimer in the documentation and/or other materials provided |
(...skipping 18 matching lines...) Expand all Loading... |
29 assertEquals(8, eval("8")); | 29 assertEquals(8, eval("8")); |
30 | 30 |
31 assertEquals(null, eval("null")); | 31 assertEquals(null, eval("null")); |
32 | 32 |
33 assertEquals("abc", eval("'abc'")); | 33 assertEquals("abc", eval("'abc'")); |
34 | 34 |
35 assertEquals(8, eval("6;'abc';8")); | 35 assertEquals(8, eval("6;'abc';8")); |
36 | 36 |
37 // Characters just outside the ranges of hex-escapes. | 37 // Characters just outside the ranges of hex-escapes. |
38 // "/" comes just before "0". | 38 // "/" comes just before "0". |
39 assertEquals("x1/", "\x1/"); | 39 assertThrows('"\\x1/"'); |
40 assertEquals("u111/", "\u111/"); | 40 assertThrows('"\\u111/"'); |
41 assertEquals("\\x1/", RegExp("\\x1/").source); | 41 assertEquals("\\x1/", RegExp("\\x1/").source); |
42 assertEquals("\\u111/", RegExp("\\u111/").source); | 42 assertEquals("\\u111/", RegExp("\\u111/").source); |
43 | 43 |
44 // ":" comes just after "9". | 44 // ":" comes just after "9". |
45 assertEquals("x1:", "\x1:"); | 45 assertThrows('"\\x1:"'); |
46 assertEquals("u111:", "\u111:"); | 46 assertThrows('"\\u111:"'); |
47 assertEquals("\\x1:", /\x1:/.source); | 47 assertEquals("\\x1:", /\x1:/.source); |
48 assertEquals("\\u111:", /\u111:/.source); | 48 assertEquals("\\u111:", /\u111:/.source); |
49 | 49 |
50 // "`" comes just before "a". | 50 // "`" comes just before "a". |
51 assertEquals("x1`", "\x1`"); | 51 assertThrows('"\\x1`"'); |
52 assertEquals("u111`", "\u111`"); | 52 assertThrows('"\\u111`"'); |
53 assertEquals("\\x1`", /\x1`/.source); | 53 assertEquals("\\x1`", /\x1`/.source); |
54 assertEquals("\\u111`", /\u111`/.source); | 54 assertEquals("\\u111`", /\u111`/.source); |
55 | 55 |
56 // "g" comes just before "f". | 56 // "g" comes just before "f". |
57 assertEquals("x1g", "\x1g"); | 57 assertThrows('"\\x1g"'); |
58 assertEquals("u111g", "\u111g"); | 58 assertThrows('"\\u111g"'); |
59 assertEquals("\\x1g", /\x1g/.source); | 59 assertEquals("\\x1g", /\x1g/.source); |
60 assertEquals("\\u111g", /\u111g/.source); | 60 assertEquals("\\u111g", /\u111g/.source); |
61 | 61 |
62 // "@" comes just before "A". | 62 // "@" comes just before "A". |
63 assertEquals("x1@", "\x1@"); | 63 assertThrows('"\\x1@"'); |
64 assertEquals("u111@", "\u111@"); | 64 assertThrows('"\\u111@"'); |
65 assertEquals("\\x1@", /\x1@/.source); | 65 assertEquals("\\x1@", /\x1@/.source); |
66 assertEquals("\\u111@", /\u111@/.source); | 66 assertEquals("\\u111@", /\u111@/.source); |
67 | 67 |
68 // "G" comes just after "F". | 68 // "G" comes just after "F". |
69 assertEquals("x1G", "\x1G"); | 69 assertThrows('"\\x1G"'); |
70 assertEquals("u111G", "\u111G"); | 70 assertThrows('"\\u111G"'); |
71 assertEquals("\\x1G", /\x1G/.source); | 71 assertEquals("\\x1G", /\x1G/.source); |
72 assertEquals("\\u111G", /\u111G/.source); | 72 assertEquals("\\u111G", /\u111G/.source); |
73 | 73 |
74 // Test some materialized array literals. | 74 // Test some materialized array literals. |
75 assertEquals([1,2,3,4], eval('[1,2,3,4]')); | 75 assertEquals([1,2,3,4], eval('[1,2,3,4]')); |
76 assertEquals([[1,2],3,4], eval('[[1,2],3,4]')); | 76 assertEquals([[1,2],3,4], eval('[[1,2],3,4]')); |
77 assertEquals([1,[2,3,4]], eval('[1,[2,3,4]]')); | 77 assertEquals([1,[2,3,4]], eval('[1,[2,3,4]]')); |
78 | 78 |
79 assertEquals([1,2,3,4], eval('var a=1, b=2; [a,b,3,4]')) | 79 assertEquals([1,2,3,4], eval('var a=1, b=2; [a,b,3,4]')) |
80 assertEquals([1,2,3,4], eval('var a=1, b=2, c = [a,b,3,4]; c')); | 80 assertEquals([1,2,3,4], eval('var a=1, b=2, c = [a,b,3,4]; c')); |
81 | 81 |
82 function double(x) { return x + x; } | 82 function double(x) { return x + x; } |
83 var s = 'var a = 1, b = 2; [double(a), double(b), double(3), double(4)]'; | 83 var s = 'var a = 1, b = 2; [double(a), double(b), double(3), double(4)]'; |
84 assertEquals([2,4,6,8], eval(s)); | 84 assertEquals([2,4,6,8], eval(s)); |
85 | 85 |
86 // Test array literals in effect context. | 86 // Test array literals in effect context. |
87 assertEquals(17, eval('[1,2,3,4]; 17')); | 87 assertEquals(17, eval('[1,2,3,4]; 17')); |
88 assertEquals(19, eval('var a=1, b=2; [a,b,3,4]; 19')); | 88 assertEquals(19, eval('var a=1, b=2; [a,b,3,4]; 19')); |
89 assertEquals(23, eval('var a=1, b=2; c=23; [a,b,3,4]; c')); | 89 assertEquals(23, eval('var a=1, b=2; c=23; [a,b,3,4]; c')); |
90 | 90 |
91 // Test that literals work for non-smi indices. | 91 // Test that literals work for non-smi indices. |
92 // Ensure hash-map collision if using value as hash. | 92 // Ensure hash-map collision if using value as hash. |
93 var o = {"2345678901" : 42, "2345678901" : 30}; | 93 var o = {"2345678901" : 42, "2345678901" : 30}; |
OLD | NEW |