()
| 136 | var badToString = function() { return []; }; |
| 137 | |
| 138 | function testBadToString_charAt() { |
| 139 | var goodToString = o.toString; |
| 140 | var hasCaught = false; |
| 141 | var numCalls = 0; |
| 142 | var result; |
| 143 | try { |
| 144 | for (var i = 0; i < 20; i++) { |
| 145 | if (i == 10) o.toString = o.valueOf = badToString; |
| 146 | result = o.charAt(1); |
| 147 | numCalls++; |
| 148 | } |
| 149 | } catch (e) { |
| 150 | hasCaught = true; |
| 151 | } finally { |
| 152 | o.toString = goodToString; |
| 153 | } |
| 154 | assertTrue(hasCaught); |
| 155 | assertEquals("1", result); |
| 156 | assertEquals(10, numCalls); |
| 157 | } |
| 158 | testBadToString_charAt(); |
| 159 | |
| 160 | function testBadToString_charCodeAt() { |
no test coverage detected