function shouldBe(actual, expected) { | |
if (actual !== expected) | |
throw new Error('bad value: ' + JSON.stringify(actual)); | |
} | |
function raw(array) { | |
var result = ''; | |
for (var i = 0; i < array.length; ++i) { | |
result += array[i]; | |
} | |
return result; | |
} | |
function Counter() { | |
return { | |
count: 0, | |
toString() { | |
// Return a number even if the "toString" method. | |
return this.count++; | |
} | |
}; | |
} | |
for (var i = 0; i < 10000; ++i) { | |
var c = Counter(); | |
shouldBe(raw([c, c]), "01"); | |
} |