weak-plain.js 948 B

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