utatane.tea@gmail.com | ca8ca42 | 2015-04-04 14:32:53 +0000 | [diff] [blame] | 1 | var primitives = [ |
| 2 | ["string", []], |
| 3 | [42, []], |
| 4 | [Symbol("symbol"), []], |
| 5 | [true, []], |
| 6 | [false, []] |
| 7 | ]; |
| 8 | |
| 9 | function compare(ax, bx) { |
| 10 | if (ax.length !== bx.length) |
| 11 | return false; |
| 12 | for (var i = 0, iz = ax.length; i < iz; ++i) { |
| 13 | if (ax[i] !== bx[i]) |
| 14 | return false; |
| 15 | } |
| 16 | return true; |
| 17 | } |
| 18 | |
| 19 | for (var [primitive, expected] of primitives) { |
| 20 | var ret = Object.getOwnPropertySymbols(primitive); |
| 21 | if (!compare(ret, expected)) |
| 22 | throw new Error("bad value for " + String(primitive) + ": " + String(ret)); |
| 23 | } |
| 24 | |
| 25 | [ |
| 26 | [ null, "TypeError: null is not an object (evaluating 'Object.getOwnPropertySymbols(value)')" ], |
| 27 | [ undefined, "TypeError: undefined is not an object (evaluating 'Object.getOwnPropertySymbols(value)')" ] |
| 28 | ].forEach(function ([value, message]) { |
| 29 | var error = null; |
| 30 | try { |
| 31 | Object.getOwnPropertySymbols(value); |
| 32 | } catch (e) { |
| 33 | error = e; |
| 34 | } |
| 35 | if (!error) |
| 36 | throw new Error("error not thrown"); |
| 37 | if (String(error) !== message) |
| 38 | throw new Error("bad error: " + String(error)); |
| 39 | }); |