test.html 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. <html>
  2. <head>
  3. <title>MultiMap Tests</title>
  4. <script src="../node_modules/chai/chai.js"></script>
  5. <script src="../index.js"></script>
  6. <script type="text/javascript">
  7. var assert = chai.assert;
  8. var map = new Multimap([
  9. ['a', 'one'],
  10. ['b', 1],
  11. ['a', 'two'],
  12. ['b', 2]
  13. ]);
  14. assert.equal(map.size, 4);
  15. assert.equal(map.get('a').length, 2);
  16. assert.equal(map.get('a')[0], 'one'); // ['one', 'two']
  17. assert.equal(map.get('a')[1], 'two'); // ['one', 'two']
  18. assert.equal(map.get('b').length, 2);
  19. assert.equal(map.get('b')[0], 1); // [1, 2]
  20. assert.equal(map.get('b')[1], 2); // [1, 2]
  21. assert(map.has('a'), "map contains key 'a'");
  22. assert(!map.has('foo'), "map does not contain key 'foo'");
  23. assert(map.has('a', 'one'), "map contains entry 'a'=>'one'");
  24. assert(!map.has('b', 3), "map does not contain entry 'b'=>3");
  25. map.set('a', 'three');
  26. assert.equal(map.size, 5);
  27. assert.equal(map.get('a').length, 3); // ['one', 'two', 'three']
  28. map.set('b', 3, 4);
  29. assert.equal(map.size, 7);
  30. assert(map.delete('a', 'three'), "delete 'a'=>'three'");
  31. assert.equal(map.size, 6);
  32. assert(!map.delete('x'), "empty 'x' for delete");
  33. assert(!map.delete('a', 'four'), "no such entry 'a'=>'four'");
  34. assert(map.delete('b'), "delete all 'b'");
  35. assert.equal(map.size, 2);
  36. map.set('b', 1, 2);
  37. assert.equal(map.size, 4); // 4
  38. var cnt = 0;
  39. map.forEach(function(value, key) {
  40. // iterates { 'a', 'one' }, { 'a', 'two' }, { 'b', 1 }, { 'b', 2 }
  41. cnt++;
  42. assert(key == 'a' || key == 'b', "key must be either 'a' or 'b'");
  43. });
  44. assert.equal(cnt, 4);
  45. cnt = 0;
  46. map.forEachEntry(function(entry, key) {
  47. // iterates { 'a', ['one', 'two'] }, { 'b', [1, 2] }
  48. cnt++;
  49. assert(key == 'a' || key == 'b', "key must be either 'a' or 'b'");
  50. assert.equal(entry.length, 2);
  51. });
  52. assert.equal(cnt, 2);
  53. var keys = map.keys(); // ['a', 'b']
  54. assert.equal(keys.next().value, 'a');
  55. assert.equal(keys.next().value, 'b');
  56. assert(keys.next().done);
  57. var values = map.values(); // ['one', 'two', 1, 2]
  58. assert.equal(values.next().value, 'one');
  59. assert.equal(values.next().value, 'two');
  60. assert.equal(values.next().value, 1);
  61. assert.equal(values.next().value, 2);
  62. assert(values.next().done);
  63. map.clear();
  64. assert.equal(map.size, 0);
  65. </script>
  66. </head>
  67. <body>
  68. </body>
  69. </html>