Chromium Code Reviews| Index: test/mjsunit/harmony/symbols.js |
| diff --git a/test/mjsunit/harmony/symbols.js b/test/mjsunit/harmony/symbols.js |
| index 3fcd06dfdca985fcd81abd8630cb8ededa8fe0d7..ce02a05ace787196eb5971e416d6601beafa55c7 100644 |
| --- a/test/mjsunit/harmony/symbols.js |
| +++ b/test/mjsunit/harmony/symbols.js |
| @@ -273,7 +273,7 @@ function TestKeyGet(obj) { |
| } |
| -function TestKeyHas() { |
| +function TestKeyHas(obj) { |
|
rossberg
2013/12/12 15:37:59
Doh, how t.f. did this ever work???
arv (Not doing code reviews)
2013/12/16 21:51:21
There is a global variable called obj which happen
|
| for (var i in symbols) { |
| assertTrue(symbols[i] in obj) |
| assertTrue(Object.hasOwnProperty.call(obj, symbols[i])) |
| @@ -298,6 +298,15 @@ function TestKeyNames(obj) { |
| } |
| +function TestGetOwnPropertySymbols(obj) { |
| + var syms = Object.getOwnPropertySymbols(obj) |
| + assertEquals(syms.length, symbols.length) |
| + for (var i in syms) { |
| + assertEquals("symbol", typeof syms[i]) |
| + } |
| +} |
| + |
| + |
| function TestKeyDescriptor(obj) { |
| for (var i in symbols) { |
| var desc = Object.getOwnPropertyDescriptor(obj, symbols[i]); |
| @@ -331,6 +340,7 @@ for (var i in objs) { |
| TestKeyHas(obj) |
| TestKeyEnum(obj) |
| TestKeyNames(obj) |
| + TestGetOwnPropertySymbols(obj) |
| TestKeyDescriptor(obj) |
| TestKeyDelete(obj) |
| } |
| @@ -350,3 +360,44 @@ function TestCachedKeyAfterScavenge() { |
| } |
| } |
| TestCachedKeyAfterScavenge(); |
| + |
| + |
| +function TestGetOwnPropertySymbolsWithProto() { |
| + // We need to be have fast properties to have insertion order for property |
| + // keys. The current limit is currently 30 properties. |
| + var syms = symbols.slice(0, 30); |
| + var proto = {} |
| + var object = Object.create(proto) |
| + for (var i = 0; i < syms.length; i++) { |
| + // Even on object, odd on proto. |
| + if (i % 2) { |
| + proto[syms[i]] = i |
| + } else { |
| + object[syms[i]] = i |
| + } |
| + } |
| + |
| + assertTrue(%HasFastProperties(object)); |
| + |
| + var objectOwnSymbols = Object.getOwnPropertySymbols(object) |
| + assertEquals(objectOwnSymbols.length, syms.length / 2) |
| + |
| + for (var i = 0; i < objectOwnSymbols.length; i++) { |
| + assertEquals(objectOwnSymbols[i], syms[i * 2]) |
| + } |
| +} |
| +TestGetOwnPropertySymbolsWithProto() |
| + |
| + |
| +function TestGetOwnPropertySymbolsWithPrivateSymbols() { |
| + var privateSymbol = %CreatePrivateSymbol("private") |
| + var publicSymbol = Symbol() |
| + var publicSymbol2 = Symbol() |
| + var obj = {} |
| + obj[publicSymbol] = 1 |
| + obj[privateSymbol] = 2 |
| + obj[publicSymbol2] = 3 |
| + var syms = Object.getOwnPropertySymbols(obj) |
| + assertEquals(syms, [publicSymbol, publicSymbol2]) |
| +} |
| +TestGetOwnPropertySymbolsWithPrivateSymbols() |