index.js 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. /**
  2. * power-assert.js - Power Assert in JavaScript.
  3. *
  4. * https://github.com/power-assert-js/power-assert
  5. *
  6. * Copyright (c) 2013-2018 Takuto Wada
  7. * Licensed under the MIT license.
  8. * https://github.com/power-assert-js/power-assert/blob/master/MIT-LICENSE.txt
  9. */
  10. 'use strict';
  11. var baseAssert = require('assert');
  12. var _deepEqual = require('universal-deep-strict-equal');
  13. var empower = require('empower');
  14. var formatter = require('power-assert-formatter');
  15. var assign = require('xtend/mutable');
  16. var define = require('define-properties');
  17. var empowerOptions = {
  18. modifyMessageOnRethrow: true,
  19. saveContextOnRethrow: true
  20. };
  21. if (typeof baseAssert.deepStrictEqual !== 'function') {
  22. baseAssert.deepStrictEqual = function deepStrictEqual (actual, expected, message) {
  23. if (!_deepEqual(actual, expected, true)) {
  24. baseAssert.fail(actual, expected, message, 'deepStrictEqual');
  25. }
  26. };
  27. }
  28. if (typeof baseAssert.notDeepStrictEqual !== 'function') {
  29. baseAssert.notDeepStrictEqual = function notDeepStrictEqual (actual, expected, message) {
  30. if (_deepEqual(actual, expected, true)) {
  31. baseAssert.fail(actual, expected, message, 'notDeepStrictEqual');
  32. }
  33. };
  34. }
  35. function customize (customOptions) {
  36. var options = customOptions || {};
  37. var applyEmpower = function (fn) {
  38. return empower(
  39. fn,
  40. formatter(options.output),
  41. assign({}, empowerOptions, options.assertion)
  42. );
  43. };
  44. var poweredAssert = applyEmpower(baseAssert);
  45. poweredAssert.customize = customize;
  46. if (typeof baseAssert.strict === 'function') {
  47. poweredAssert.strict = applyEmpower(baseAssert.strict);
  48. } else {
  49. var strict = applyEmpower(baseAssert);
  50. poweredAssert.strict = assign(strict, {
  51. equal: strict.strictEqual,
  52. deepEqual: strict.deepStrictEqual,
  53. notEqual: strict.notStrictEqual,
  54. notDeepEqual: strict.notDeepStrictEqual
  55. });
  56. }
  57. poweredAssert.strict.strict = poweredAssert.strict;
  58. return poweredAssert;
  59. }
  60. var defaultAssert = customize();
  61. define(defaultAssert, { '__esModule': true });
  62. defaultAssert['default'] = defaultAssert;
  63. module.exports = defaultAssert;