plain.js 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. /* eslint id-length: 0 */
  2. "use strict";
  3. module.exports = function (t) {
  4. return {
  5. "": function (a) {
  6. var i = 0
  7. , fn = function (x) {
  8. ++i;
  9. return x;
  10. }
  11. , mfn
  12. , y = {
  13. toString: function () {
  14. return "foo";
  15. }
  16. };
  17. mfn = t(fn, { primitive: true });
  18. a(typeof mfn, "function", "Returns");
  19. a(mfn.__memoized__, true, "Marked");
  20. a(t(mfn), mfn, "Do not memoize memoized");
  21. a(mfn(y), y, "#1");
  22. a(mfn("foo"), y, "#2");
  23. a(i, 1, "Called once");
  24. },
  25. "Clear cache": function (a) {
  26. var i = 0
  27. , fn = function (x, y, z) {
  28. ++i;
  29. return x + y + z;
  30. }
  31. , mfn
  32. , y = {
  33. toString: function () {
  34. return "foo";
  35. }
  36. };
  37. mfn = t(fn, { primitive: true });
  38. a(mfn(y, "bar", "zeta"), "foobarzeta", "#1");
  39. a(mfn("foo", "bar", "zeta"), "foobarzeta", "#2");
  40. a(i, 1, "Called once");
  41. mfn.delete(
  42. "foo",
  43. {
  44. toString: function () {
  45. return "bar";
  46. }
  47. },
  48. "zeta"
  49. );
  50. a(mfn(y, "bar", "zeta"), "foobarzeta", "#3");
  51. a(i, 2, "Called twice");
  52. }
  53. };
  54. };