art-standard-lib
Version:
The Standard Library for JavaScript that aught to be.
179 lines (151 loc) • 4.67 kB
text/coffeescript
{mapToKeysArray, mapToValuesArray, Map, inspect, log} = Neptune.Art.StandardLib
# om2 = new Map
# om2.set om, 201
# om2.set "bar", 202
suite "Art.StandardLib.Map", ->
test "new", ->
om = new Map
assert.eq om.size, 0
test "set", ->
om = new Map
assert.eq om, om.set "foo", "bar"
test "get/set number key", ->
om = new Map
om.set 1, 123
om.set 2, 456
assert.eq om.get(1), 123
assert.eq om.get(2), 456
assert.eq om.get(3), undefined
test "get/set null-like keys", ->
om = new Map
om.set null, 123
om.set undefined, 234
om.set 0, 345
om.set "", 456
om.set "0", 567
assert.eq mapToKeysArray(om), [null, undefined, 0, "", "0"]
assert.eq mapToValuesArray(om), [123, 234, 345, 456, 567]
assert.eq om.size, 5
assert.eq om.get(null), 123
assert.eq om.get(undefined), 234
assert.eq om.get(0), 345
assert.eq om.get(""), 456
assert.eq om.get("0"), 567
test "get unset value == undefined", ->
om = new Map
om.set "foo", 123
assert.eq om.get("bar"), undefined
test "get/set string key", ->
om = new Map
om.set "hi", 123
om.set "bye", 456
assert.eq om.get("hi"), 123
assert.eq om.get("bye"), 456
test "get/set {} key", ->
om = new Map
om.set (a={}), 123
om.set (b={}), 456
assert.eq om.get(a), 123
assert.eq om.get(b), 456
test "get/set [] key", ->
om = new Map
om.set (a=[]), 123
om.set (b=[]), 456
assert.eq om.get(a), 123
assert.eq om.get(b), 456
test "delete", ->
om = new Map
om.set (a={}), 123
om.set (b={}), 456
assert.equal om.size, 2
om.delete a
assert.equal om.size, 1
assert.eq om.get(a), undefined
assert.eq om.get(b), 456
test "has", ->
om = new Map
om.set (a={}), 123
om.set (b={}), 456
assert.ok om.has a
assert.ok om.has b
assert.ok !om.has {}
om.delete a
assert.ok !om.has a
test "order preserved with sets & re-sets", ->
om = new Map
om.set "a", 123
om.set "b", 234
om.set "c", 345
om.set "d", 456
om.set "e", 567
assert.eq mapToKeysArray(om), ["a", "b", "c", "d", "e"]
assert.eq mapToValuesArray(om), [123, 234, 345, 456, 567]
om.set "b", "foo"
om.set "e", "bar"
assert.eq mapToKeysArray(om), ["a", "b", "c", "d", "e"]
assert.eq mapToValuesArray(om), [123, "foo", 345, 456, "bar"]
om = new Map
om.set "e", 567
om.set "d", 456
om.set "c", 345
om.set "b", 234
om.set "a", 123
om.set "b", "foo"
om.set "e", "bar"
assert.eq mapToKeysArray(om), ["e", "d", "c", "b", "a"]
assert.eq mapToValuesArray(om), ["bar", 456, 345, "foo", 123]
test "order preserved with deletes", ->
om = new Map
om.set "a", 123
om.set "b", 234
om.set "c", 345
om.set "d", 456
om.set "e", 567
om.delete "b"; assert.eq mapToKeysArray(om), ["a", "c", "d", "e"]
om.delete "e"; assert.eq mapToKeysArray(om), ["a", "c", "d"]
om.set "b", "foo"; assert.eq mapToKeysArray(om), ["a", "c", "d", "b"]
om.set "e", "bar"; assert.eq mapToKeysArray(om), ["a", "c", "d", "b", "e"]
om.delete "a"; assert.eq mapToKeysArray(om), ["c", "d", "b", "e"]
assert.eq mapToValuesArray(om), [345, 456, "foo", "bar"]