()
| 121 | |
| 122 | |
| 123 | function TestEquality() { |
| 124 | // Every symbol should equal itself, and non-strictly equal its wrapper. |
| 125 | for (var i in symbols) { |
| 126 | assertSame(symbols[i], symbols[i]) |
| 127 | assertEquals(symbols[i], symbols[i]) |
| 128 | assertTrue(Object.is(symbols[i], symbols[i])) |
| 129 | assertTrue(symbols[i] === symbols[i]) |
| 130 | assertTrue(symbols[i] == symbols[i]) |
| 131 | assertFalse(symbols[i] === Object(symbols[i])) |
| 132 | assertFalse(Object(symbols[i]) === symbols[i]) |
| 133 | assertTrue(symbols[i] == Object(symbols[i])) |
| 134 | assertTrue(Object(symbols[i]) == symbols[i]) |
| 135 | assertTrue(symbols[i] === symbols[i].valueOf()) |
| 136 | assertTrue(symbols[i].valueOf() === symbols[i]) |
| 137 | assertTrue(symbols[i] == symbols[i].valueOf()) |
| 138 | assertTrue(symbols[i].valueOf() == symbols[i]) |
| 139 | } |
| 140 | |
| 141 | // All symbols should be distinct. |
| 142 | for (var i = 0; i < symbols.length; ++i) { |
| 143 | for (var j = i + 1; j < symbols.length; ++j) { |
| 144 | assertFalse(Object.is(symbols[i], symbols[j])) |
| 145 | assertFalse(symbols[i] === symbols[j]) |
| 146 | assertFalse(symbols[i] == symbols[j]) |
| 147 | } |
| 148 | } |
| 149 | |
| 150 | // Symbols should not be equal to any other value (and the test terminates). |
| 151 | var values = [347, 1.275, NaN, "string", null, undefined, {}, function() {}] |
| 152 | for (var i in symbols) { |
| 153 | for (var j in values) { |
| 154 | assertFalse(symbols[i] === values[j]) |
| 155 | assertFalse(values[j] === symbols[i]) |
| 156 | assertFalse(symbols[i] == values[j]) |
| 157 | assertFalse(values[j] == symbols[i]) |
| 158 | } |
| 159 | } |
| 160 | } |
| 161 | TestEquality() |
| 162 | |
| 163 |
no test coverage detected