Skip to content

Instantly share code, notes, and snippets.

@arv
Created February 20, 2015 01:38
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
Star You must be signed in to star a gist
Save arv/821e203cd176e845c1e6 to your computer and use it in GitHub Desktop.
Map -0 bug
var assert = {
equal: function(x, y) {
if (x === y) return;
throw new Error();
},
isTrue: function(x) {
if (x) return;
throw new Error();
}
};
var t = new Map();
var objectKey = {};
var stringKey = 'keykeykey';
var numberKey = 42.24;
var booleanKey = true;
var undefinedKey = undefined;
var nullKey = null;
var nanKey = NaN;
var zeroKey = 0;
var minusZeroKey = -0;
assert.equal(t.size, 0);
t.set(undefinedKey, 'value8');
t.set(nullKey, 'value9');
t.set(stringKey, 'value5');
t.set(numberKey, 'value6');
t.set(booleanKey, 'value7');
t.set(objectKey, 'value1');
t.set(nanKey, 'value10');
t.set(zeroKey, 'value11');
assert.equal(t.size, 8);
assert.equal(t.get(objectKey), 'value1');
assert.equal(t.get(stringKey), 'value5');
assert.equal(t.get(numberKey), 'value6');
assert.equal(t.get(booleanKey), 'value7');
assert.equal(t.get(undefinedKey), 'value8');
assert.equal(t.get(nullKey), 'value9');
assert.equal(t.get(nanKey), 'value10');
assert.equal(t.get(zeroKey), 'value11');
assert.equal(t.get({}), undefined);
assert.equal(t.get('keykeykey'), 'value5');
assert.equal(t.get(42.24), 'value6');
assert.equal(t.get(true), 'value7');
assert.equal(t.get(undefined), 'value8');
assert.equal(t.get(null), 'value9');
assert.equal(t.get(NaN), 'value10');
assert.equal(t.get(0), 'value11');
assert.equal(t.get(1 / Infinity), 'value11');
console.log(t.get + '');
assert.equal(t.get(minusZeroKey), 'value11');
console.log(minusZeroKey);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment