weak.js 997 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. /* eslint id-length: 0, no-shadow: 0, no-unused-vars: 0 */
  2. "use strict";
  3. var memoize = require("../..");
  4. require("../ext/dispose");
  5. require("../ext/ref-counter");
  6. module.exports = function (t, a) {
  7. var value = [], obj = {}, memoized, count = 0, x, y, z;
  8. t = t(memoize);
  9. memoized = t(
  10. function (arg, x, y) {
  11. a(arg, obj);
  12. return x + y;
  13. },
  14. {
  15. refCounter: true,
  16. dispose: function (val) {
  17. value.push(val);
  18. }
  19. }
  20. );
  21. a(memoized(obj, 3, 7), 10);
  22. a(memoized(obj, 5, 8), 13);
  23. a(memoized(obj, 12, 4), 16);
  24. a.deep(value, [], "Pre");
  25. a(memoized(obj, 5, 8), 13);
  26. memoized.deleteRef(obj, 5, 8);
  27. a.deep(value, [], "Pre");
  28. memoized.deleteRef(obj, 5, 8);
  29. a.deep(value, [13], "#1");
  30. value = [];
  31. memoized.deleteRef(obj, 12, 4);
  32. a.deep(value, [16], "#2");
  33. value = [];
  34. memoized(obj, 77, 11);
  35. x = {};
  36. y = {};
  37. z = {};
  38. memoized = t(function (arg) {
  39. return ++count;
  40. });
  41. a(memoized(x), 1);
  42. a(memoized(y), 2);
  43. a(memoized(x), 1);
  44. a(memoized(z), 3);
  45. a(count, 3);
  46. };