multiMap.spec.js 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. import MultiMap from 'handsontable/multiMap';
  2. describe('MultiMap', () => {
  3. let multiMap;
  4. beforeEach(() => {
  5. multiMap = new MultiMap();
  6. });
  7. afterEach(() => {
  8. multiMap = null;
  9. });
  10. it('should use string as key', () => {
  11. multiMap.set('foo', 'bar');
  12. expect(multiMap.get('foo')).toEqual('bar');
  13. });
  14. it('should use integer as key', () => {
  15. multiMap.set(1, 'bar');
  16. expect(multiMap.get(1)).toEqual('bar');
  17. });
  18. it('should use integer as key', () => {
  19. multiMap.set(1.2, 'bar');
  20. expect(multiMap.get(1.2)).toEqual('bar');
  21. expect(multiMap.get(1.3)).toBeUndefined();
  22. });
  23. it('should use plain object as key', () => {
  24. const keyObj1 = {};
  25. const keyObj2 = {};
  26. multiMap.set(keyObj1, 'bar');
  27. expect(multiMap.get(keyObj1)).toEqual('bar');
  28. expect(multiMap.get(keyObj2)).toBeUndefined();
  29. });
  30. it('should use array as key', () => {
  31. const keyArray1 = [];
  32. const keyArray2 = [];
  33. multiMap.set(keyArray1, 'bar');
  34. expect(multiMap.get(keyArray1)).toEqual('bar');
  35. expect(multiMap.get(keyArray2)).toBeUndefined();
  36. });
  37. it('should use regexp as key', () => {
  38. const keyRegexp1 = /test/;
  39. const keyRegexp2 = /test/;
  40. multiMap.set(keyRegexp1, 'bar');
  41. expect(multiMap.get(keyRegexp1)).toEqual('bar');
  42. expect(multiMap.get(keyRegexp2)).toBeUndefined();
  43. });
  44. it('should not use boolean as key', () => {
  45. const tryToSetBooleanKey = function() {
  46. multiMap.set(false, 'bar');
  47. };
  48. expect(tryToSetBooleanKey).toThrow();
  49. });
  50. it('should not set null as key', () => {
  51. const tryToSetNullKey = function() {
  52. multiMap.set(null, 'bar');
  53. };
  54. expect(tryToSetNullKey).toThrow();
  55. });
  56. it('should not set undefined as key', () => {
  57. const tryToSetUndefinedKey = function() {
  58. multiMap.set(undefined, 'bar');
  59. };
  60. expect(tryToSetUndefinedKey).toThrow();
  61. });
  62. it('should not set NaN as key', () => {
  63. const tryToSetNaNKey = function() {
  64. multiMap.set(NaN, 'bar');
  65. };
  66. expect(tryToSetNaNKey).toThrow();
  67. });
  68. });