index.js 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. 'use strict';
  2. const assertDeepStrictEqual = require('assert').deepStrictEqual;
  3. const tests = require('../spec/tests');
  4. const Benchmark = require('benchmark');
  5. const suite = new Benchmark.Suite;
  6. const equalPackages = {
  7. 'fast-deep-equal': require('../index'),
  8. 'nano-equal': true,
  9. 'shallow-equal-fuzzy': true,
  10. 'underscore.isEqual': require('underscore').isEqual,
  11. 'lodash.isEqual': require('lodash').isEqual,
  12. 'deep-equal': true,
  13. 'deep-eql': true,
  14. 'assert.deepStrictEqual': (a, b) => {
  15. try { assertDeepStrictEqual(a, b); return true; }
  16. catch(e) { return false; }
  17. }
  18. };
  19. for (const equalName in equalPackages) {
  20. let equalFunc = equalPackages[equalName];
  21. if (equalFunc === true) equalFunc = require(equalName);
  22. for (const testSuite of tests) {
  23. for (const test of testSuite.tests) {
  24. try {
  25. if (equalFunc(test.value1, test.value2) !== test.equal)
  26. console.error('different result', equalName, testSuite.description, test.description);
  27. } catch(e) {
  28. console.error(equalName, testSuite.description, test.description, e);
  29. }
  30. }
  31. }
  32. suite.add(equalName, function() {
  33. for (const testSuite of tests) {
  34. for (const test of testSuite.tests) {
  35. if (test.description != 'pseudo array and equivalent array are not equal')
  36. equalFunc(test.value1, test.value2);
  37. }
  38. }
  39. });
  40. }
  41. console.log();
  42. suite
  43. .on('cycle', (event) => console.log(String(event.target)))
  44. .on('complete', function () {
  45. console.log('The fastest is ' + this.filter('fastest').map('name'));
  46. })
  47. .run({async: true});