replacer.js 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. 'use strict';
  2. var test = require('tape');
  3. var stringify = require('../');
  4. test('replace root', function (t) {
  5. t.plan(1);
  6. var obj = { a: 1, b: 2, c: false };
  7. var replacer = function () { return 'one'; };
  8. t.equal(stringify(obj, { replacer: replacer }), '"one"');
  9. });
  10. test('replace numbers', function (t) {
  11. t.plan(1);
  12. var obj = { a: 1, b: 2, c: false };
  13. var replacer = function (key, value) {
  14. if (value === 1) { return 'one'; }
  15. if (value === 2) { return 'two'; }
  16. return value;
  17. };
  18. t.equal(stringify(obj, { replacer: replacer }), '{"a":"one","b":"two","c":false}');
  19. });
  20. test('replace with object', function (t) {
  21. t.plan(1);
  22. var obj = { a: 1, b: 2, c: false };
  23. var replacer = function (key, value) {
  24. if (key === 'b') { return { d: 1 }; }
  25. if (value === 1) { return 'one'; }
  26. return value;
  27. };
  28. t.equal(stringify(obj, { replacer: replacer }), '{"a":"one","b":{"d":"one"},"c":false}');
  29. });
  30. test('replace with undefined', function (t) {
  31. t.plan(1);
  32. var obj = { a: 1, b: 2, c: false };
  33. var replacer = function (key, value) {
  34. if (value === false) { return; }
  35. return value;
  36. };
  37. t.equal(stringify(obj, { replacer: replacer }), '{"a":1,"b":2}');
  38. });
  39. test('replace with array', function (t) {
  40. t.plan(1);
  41. var obj = { a: 1, b: 2, c: false };
  42. var replacer = function (key, value) {
  43. if (key === 'b') { return ['one', 'two']; }
  44. return value;
  45. };
  46. t.equal(stringify(obj, { replacer: replacer }), '{"a":1,"b":["one","two"],"c":false}');
  47. });
  48. test('replace array item', function (t) {
  49. t.plan(1);
  50. var obj = { a: 1, b: 2, c: [1, 2] };
  51. var replacer = function (key, value) {
  52. if (value === 1) { return 'one'; }
  53. if (value === 2) { return 'two'; }
  54. return value;
  55. };
  56. t.equal(stringify(obj, { replacer: replacer }), '{"a":"one","b":"two","c":["one","two"]}');
  57. });