null-args.js 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. var Memoizerific = require('../src/memoizerific');
  2. describe("null args", () => {
  3. var memoizedFn,
  4. arg1 = null,
  5. arg2 = undefined,
  6. arg3 = NaN; // important to test since NaN does not equal NaN
  7. beforeEach(function() {
  8. memoizedFn = Memoizerific(50)(function(arg1, arg2, arg3) {
  9. return '';
  10. });
  11. memoizedFn(arg1, arg2, arg3);
  12. });
  13. it("should be map or similar", () => { expect(memoizedFn.cache instanceof Map).toEqual(process.env.FORCE_SIMILAR_INSTEAD_OF_MAP !== 'true'); });
  14. it("should not be memoized", () => {
  15. expect(memoizedFn.wasMemoized).toEqual(false);
  16. expect(memoizedFn.lru.length).toEqual(1);
  17. });
  18. it("should be memoized", () => {
  19. memoizedFn(arg1, arg2, arg3);
  20. expect(memoizedFn.wasMemoized).toEqual(true);
  21. expect(memoizedFn.lru.length).toEqual(1);
  22. });
  23. it("should have multiple cached items", () => {
  24. memoizedFn(arg1, arg2, arg3);
  25. expect(memoizedFn.wasMemoized).toEqual(true);
  26. memoizedFn(arg1, arg2, 1);
  27. expect(memoizedFn.wasMemoized).toEqual(false);
  28. expect(memoizedFn.lru.length).toEqual(2);
  29. });
  30. it("should not confuse undefined and null", () => {
  31. memoizedFn(arg2, arg1, arg3);
  32. expect(memoizedFn.wasMemoized).toEqual(false);
  33. expect(memoizedFn.lru.length).toEqual(2);
  34. });
  35. });