redeyed-config-with-undefineds.js 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. 'use strict';
  2. /*jshint asi: true*/
  3. var test = require('tap').test
  4. , util = require('util')
  5. , redeyed = require('..')
  6. function inspect (obj) {
  7. return util.inspect(obj, false, 5, true)
  8. }
  9. test('adding custom asserts ... ', function (t) {
  10. t.constructor.prototype.assertSurrounds = function (code, opts, expected) {
  11. var optsi = inspect(opts);
  12. var result = redeyed(code, opts).code
  13. this.equals( result
  14. , expected
  15. , util.format('%s: %s => %s', optsi, inspect(code), inspect(expected))
  16. )
  17. return this;
  18. }
  19. t.end()
  20. })
  21. test('\n undefineds only', function (t) {
  22. t.assertSurrounds('1 + 2', { Numeric: { _default: undefined } }, '1 + 2')
  23. t.assertSurrounds('1 + 2', { Numeric: { _default: undefined }, _default: undefined }, '1 + 2')
  24. t.assertSurrounds(
  25. 'return true'
  26. , { 'Boolean': { 'true': undefined, 'false': undefined, _default: undefined } , _default: undefined }
  27. , 'return true'
  28. )
  29. t.end()
  30. })
  31. test('\n mixed', function (t) {
  32. t.assertSurrounds(
  33. 'return true || false'
  34. , { 'Boolean': { 'true': '&:', 'false': undefined, _default: undefined } , _default: undefined }
  35. , 'return &true || false'
  36. )
  37. t.assertSurrounds(
  38. 'return true || false'
  39. , { 'Boolean': { 'true': '&:', 'false': undefined, _default: ':?' } , _default: undefined }
  40. , 'return &true? || false?'
  41. )
  42. t.assertSurrounds(
  43. 'return true || false'
  44. , { 'Boolean': { 'true': '&:', 'false': undefined, _default: undefined } , _default: ':?' }
  45. , 'return &true? || false'
  46. )
  47. t.end()
  48. })