defFunctionsTest.js 3.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. 'use strict';
  2. var overload = require('../');
  3. module.exports = {
  4. 'required, good': function (test) {
  5. var items = [
  6. { fn: overload.func, param: function () {} },
  7. { fn: overload.funcOptional, param: function () {} },
  8. { fn: overload.funcOptionalWithDefault(function () {}), param: function () {} },
  9. { fn: overload.callbackOptional, param: function () {} },
  10. { fn: overload.string, param: 'test' },
  11. { fn: overload.stringOptional, param: 'test' },
  12. { fn: overload.stringOptionalWithDefault('test'), param: 'test' },
  13. { fn: overload.number, param: 5 },
  14. { fn: overload.numberOptional, param: 5 },
  15. { fn: overload.numberOptionalWithDefault(5), param: 5 },
  16. { fn: overload.array, param: [1] },
  17. { fn: overload.arrayOptional, param: [1] },
  18. { fn: overload.arrayOptionalWithDefault([1]), param: [1] },
  19. { fn: overload.object, param: {} },
  20. { fn: overload.objectOptional, param: {} },
  21. { fn: overload.objectOptionalWithDefault({}), param: {} }
  22. ];
  23. items.forEach(function (item) {
  24. test.equals(item.fn(item.param), true);
  25. });
  26. test.done();
  27. },
  28. 'required, bad': function (test) {
  29. var items = [
  30. { fn: overload.func, param: 5 },
  31. { fn: overload.funcOptional, param: 5 },
  32. { fn: overload.funcOptionalWithDefault(function () {}), param: 5 },
  33. { fn: overload.callbackOptional, param: 5 },
  34. { fn: overload.string, param: 5 },
  35. { fn: overload.stringOptional, param: 5 },
  36. { fn: overload.stringOptionalWithDefault('test'), param: 5 },
  37. { fn: overload.number, param: 'test' },
  38. { fn: overload.numberOptional, param: 'test' },
  39. { fn: overload.numberOptionalWithDefault(5), param: 'test' },
  40. { fn: overload.array, param: 5 },
  41. { fn: overload.arrayOptional, param: 5 },
  42. { fn: overload.arrayOptionalWithDefault([]), param: 5 },
  43. { fn: overload.object, param: 5 },
  44. { fn: overload.objectOptional, param: 5 },
  45. { fn: overload.objectOptionalWithDefault({}), param: 5 }
  46. ];
  47. items.forEach(function (item) {
  48. test.equals(item.fn(item.param), false);
  49. });
  50. test.done();
  51. },
  52. 'optional, null': function (test) {
  53. var items = [
  54. { fn: overload.funcOptional },
  55. { fn: overload.stringOptional },
  56. { fn: overload.numberOptional },
  57. { fn: overload.arrayOptional },
  58. { fn: overload.objectOptional }
  59. ];
  60. items.forEach(function (item) {
  61. test.equals(item.fn(null), true, 'invalid results for function: ' + item.fn.name);
  62. });
  63. test.done();
  64. },
  65. 'optional, callback': function (test) {
  66. test.equals(typeof(overload.callbackOptional(null).defaultValue), 'function');
  67. test.done();
  68. },
  69. 'with defaults': function (test) {
  70. var fn = function () {};
  71. var items = [
  72. { fn: overload.funcOptionalWithDefault(fn), expected: fn },
  73. { fn: overload.stringOptionalWithDefault('test'), expected: 'test' },
  74. { fn: overload.numberOptionalWithDefault(5), expected: 5 },
  75. { fn: overload.arrayOptionalWithDefault([]), expected: [] },
  76. { fn: overload.objectOptionalWithDefault({}), expected: {} }
  77. ];
  78. items.forEach(function (item) {
  79. test.deepEqual(item.fn.defaultValue, item.expected);
  80. });
  81. test.done();
  82. }
  83. };