Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(7)

Side by Side Diff: test/mjsunit/harmony/computed-property-names.js

Issue 795573005: ES6 computed property names (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 6 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright 2014 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 // Flags: --harmony-computed-property-names --allow-natives-syntax
6
7
8 (function TestBasicsString() {
9 var object = {
10 a: 'A',
11 ['b']: 'B',
12 c: 'C',
13 ['d']: 'D',
14 };
15 assertEquals('A', object.a);
16 assertEquals('B', object.b);
17 assertEquals('C', object.c);
18 assertEquals('D', object.d);
19 assertArrayEquals(['a', 'b', 'c', 'd'], Object.keys(object));
20 })();
21
22
23 (function TestBasicsNumber() {
24 var object = {
25 a: 'A',
26 [1]: 'B',
27 c: 'C',
28 [2]: 'D',
29 };
30 assertEquals('A', object.a);
31 assertEquals('B', object[1]);
32 assertEquals('C', object.c);
33 assertEquals('D', object[2]);
34 // Array indexes first.
35 assertArrayEquals(['1', '2', 'a', 'c'], Object.keys(object));
36 })();
37
38
39 (function TestBasicsSymbol() {
40 var sym = Symbol();
41 var sym2 = Symbol();
42 var object = {
43 a: 'A',
44 [sym]: 'B',
45 c: 'C',
46 [sym2]: 'D',
47 };
48 assertEquals('A', object.a);
49 assertEquals('B', object[sym]);
50 assertEquals('C', object.c);
51 assertEquals('D', object[sym2]);
52 assertArrayEquals(['a', 'c'], Object.keys(object));
53 assertArrayEquals([sym, sym2], Object.getOwnPropertySymbols(object));
54 })();
55
56
57 (function TestToNameSideEffects() {
58 var counter = 0;
59 var key1 = {
60 toString: function() {
61 assertEquals(0, counter++);
62 return 'b';
63 }
64 };
65 var key2 = {
66 toString: function() {
67 assertEquals(1, counter++);
68 return 'd';
69 }
70 };
71 var object = {
72 a: 'A',
73 [key1]: 'B',
74 c: 'C',
75 [key2]: 'D',
76 };
77 assertEquals(2, counter);
78 assertEquals('A', object.a);
79 assertEquals('B', object.b);
80 assertEquals('C', object.c);
81 assertEquals('D', object.d);
82 assertArrayEquals(['a', 'b', 'c', 'd'], Object.keys(object));
83 })();
84
85
86 (function TestToNameSideEffects2() {
87 var counter = 0;
88 var key1 = {
89 valueOf: function() {
90 assertEquals(0, counter++);
91 return 1;
92 },
93 toString: null
94 };
95 var key2 = {
96 valueOf: function() {
97 assertEquals(1, counter++);
98 return 2;
99 },
100 toString: null
101 };
102
103 var object = {
104 a: 'A',
105 [key1]: 'B',
106 c: 'C',
107 [key2]: 'D',
108 };
109 assertEquals(2, counter);
110 assertEquals('A', object.a);
111 assertEquals('B', object[1]);
112 assertEquals('C', object.c);
113 assertEquals('D', object[2]);
114 // Array indexes first.
115 assertArrayEquals(['1', '2', 'a', 'c'], Object.keys(object));
116 })();
OLDNEW
« src/typing.cc ('K') | « test/cctest/test-parsing.cc ('k') | test/mjsunit/mjsunit.status » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698