| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
1 parent 4e9279d commit 5478746
2 files changed
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -1,7 +1,9 @@ | |||
| 1 | 1 | 'use strict'; | |
| 2 | + | ||
| 2 | 3 | const common = require('../common'); | |
| 3 | 4 | const assert = require('assert'); | |
| 4 | 5 | const util = require('util'); | |
| 6 | + const { AssertionError } = assert; | ||
| 5 | 7 | ||
| 6 | 8 | // Template tag function turning an error message into a RegExp | |
| 7 | 9 | // for assert.throws() | |
@@ -25,7 +27,7 @@ function re(literals, ...values) { | |||
| 25 | 27 | // That is why we discourage using deepEqual in our own tests. | |
| 26 | 28 | ||
| 27 | 29 | // Turn off no-restricted-properties because we are testing deepEqual! | |
| 28 | - /* eslint-disable no-restricted-properties */ | ||
| 30 | + /* eslint-disable no-restricted-properties, prefer-common-expectserror */ | ||
| 29 | 31 | ||
| 30 | 32 | const arr = new Uint8Array([120, 121, 122, 10]); | |
| 31 | 33 | const buf = Buffer.from(arr); | |
@@ -545,4 +547,298 @@ assertDeepAndStrictEqual(-0, -0); | |||
| 545 | 547 | assertDeepAndStrictEqual(a, b); | |
| 546 | 548 | } | |
| 547 | 549 | ||
| 550 | + assert.doesNotThrow( | ||
| 551 | + () => assert.deepEqual(new Date(2000, 3, 14), new Date(2000, 3, 14)), | ||
| 552 | + 'deepEqual(new Date(2000, 3, 14), new Date(2000, 3, 14))'); | ||
| 553 | + | ||
| 554 | + assert.throws(() => assert.deepEqual(new Date(), new Date(2000, 3, 14)), | ||
| 555 | + AssertionError, | ||
| 556 | + 'deepEqual(new Date(), new Date(2000, 3, 14))'); | ||
| 557 | + | ||
| 558 | + assert.throws( | ||
| 559 | + () => assert.notDeepEqual(new Date(2000, 3, 14), new Date(2000, 3, 14)), | ||
| 560 | + AssertionError, | ||
| 561 | + 'notDeepEqual(new Date(2000, 3, 14), new Date(2000, 3, 14))' | ||
| 562 | + ); | ||
| 563 | + | ||
| 564 | + assert.doesNotThrow( | ||
| 565 | + () => assert.notDeepEqual(new Date(), new Date(2000, 3, 14)), | ||
| 566 | + 'notDeepEqual(new Date(), new Date(2000, 3, 14))' | ||
| 567 | + ); | ||
| 568 | + | ||
| 569 | + assert.deepEqual(/a/, /a/); | ||
| 570 | + assert.deepEqual(/a/g, /a/g); | ||
| 571 | + assert.deepEqual(/a/i, /a/i); | ||
| 572 | + assert.deepEqual(/a/m, /a/m); | ||
| 573 | + assert.deepEqual(/a/igm, /a/igm); | ||
| 574 | + common.expectsError(() => assert.deepEqual(/ab/, /a/), | ||
| 575 | + { | ||
| 576 | + code: 'ERR_ASSERTION', | ||
| 577 | + name: 'AssertionError [ERR_ASSERTION]', | ||
| 578 | + message: '/ab/ deepEqual /a/' | ||
| 579 | + }); | ||
| 580 | + common.expectsError(() => assert.deepEqual(/a/g, /a/), | ||
| 581 | + { | ||
| 582 | + code: 'ERR_ASSERTION', | ||
| 583 | + name: 'AssertionError [ERR_ASSERTION]', | ||
| 584 | + message: '/a/g deepEqual /a/' | ||
| 585 | + }); | ||
| 586 | + common.expectsError(() => assert.deepEqual(/a/i, /a/), | ||
| 587 | + { | ||
| 588 | + code: 'ERR_ASSERTION', | ||
| 589 | + name: 'AssertionError [ERR_ASSERTION]', | ||
| 590 | + message: '/a/i deepEqual /a/' | ||
| 591 | + }); | ||
| 592 | + common.expectsError(() => assert.deepEqual(/a/m, /a/), | ||
| 593 | + { | ||
| 594 | + code: 'ERR_ASSERTION', | ||
| 595 | + name: 'AssertionError [ERR_ASSERTION]', | ||
| 596 | + message: '/a/m deepEqual /a/' | ||
| 597 | + }); | ||
| 598 | + common.expectsError(() => assert.deepEqual(/a/igm, /a/im), | ||
| 599 | + { | ||
| 600 | + code: 'ERR_ASSERTION', | ||
| 601 | + name: 'AssertionError [ERR_ASSERTION]', | ||
| 602 | + message: '/a/gim deepEqual /a/im' | ||
| 603 | + }); | ||
| 604 | + | ||
| 605 | + { | ||
| 606 | + const re1 = /a/g; | ||
| 607 | + re1.lastIndex = 3; | ||
| 608 | + assert.doesNotThrow(() => assert.deepEqual(re1, /a/g)); | ||
| 609 | + } | ||
| 610 | + | ||
| 611 | + assert.doesNotThrow(() => assert.deepEqual(4, '4'), 'deepEqual(4, \'4\')'); | ||
| 612 | + assert.doesNotThrow(() => assert.deepEqual(true, 1), 'deepEqual(true, 1)'); | ||
| 613 | + assert.throws(() => assert.deepEqual(4, '5'), | ||
| 614 | + AssertionError, | ||
| 615 | + 'deepEqual( 4, \'5\')'); | ||
| 616 | + | ||
| 617 | + // Having the same number of owned properties && the same set of keys. | ||
| 618 | + assert.doesNotThrow(() => assert.deepEqual({ a: 4 }, { a: 4 })); | ||
| 619 | + assert.doesNotThrow(() => assert.deepEqual({ a: 4, b: '2' }, { a: 4, b: '2' })); | ||
| 620 | + assert.doesNotThrow(() => assert.deepEqual([4], ['4'])); | ||
| 621 | + assert.throws( | ||
| 622 | + () => assert.deepEqual({ a: 4 }, { a: 4, b: true }), AssertionError); | ||
| 623 | + assert.doesNotThrow(() => assert.deepEqual(['a'], { 0: 'a' })); | ||
| 624 | + assert.doesNotThrow(() => assert.deepEqual({ a: 4, b: '1' }, { b: '1', a: 4 })); | ||
| 625 | + const a1 = [1, 2, 3]; | ||
| 626 | + const a2 = [1, 2, 3]; | ||
| 627 | + a1.a = 'test'; | ||
| 628 | + a1.b = true; | ||
| 629 | + a2.b = true; | ||
| 630 | + a2.a = 'test'; | ||
| 631 | + assert.throws(() => assert.deepEqual(Object.keys(a1), Object.keys(a2)), | ||
| 632 | + AssertionError); | ||
| 633 | + assert.doesNotThrow(() => assert.deepEqual(a1, a2)); | ||
| 634 | + | ||
| 635 | + // Having an identical prototype property. | ||
| 636 | + const nbRoot = { | ||
| 637 | + toString() { return `${this.first} ${this.last}`; } | ||
| 638 | + }; | ||
| 639 | + | ||
| 640 | + function nameBuilder(first, last) { | ||
| 641 | + this.first = first; | ||
| 642 | + this.last = last; | ||
| 643 | + return this; | ||
| 644 | + } | ||
| 645 | + nameBuilder.prototype = nbRoot; | ||
| 646 | + | ||
| 647 | + function nameBuilder2(first, last) { | ||
| 648 | + this.first = first; | ||
| 649 | + this.last = last; | ||
| 650 | + return this; | ||
| 651 | + } | ||
| 652 | + nameBuilder2.prototype = nbRoot; | ||
| 653 | + | ||
| 654 | + const nb1 = new nameBuilder('Ryan', 'Dahl'); | ||
| 655 | + let nb2 = new nameBuilder2('Ryan', 'Dahl'); | ||
| 656 | + | ||
| 657 | + assert.doesNotThrow(() => assert.deepEqual(nb1, nb2)); | ||
| 658 | + | ||
| 659 | + nameBuilder2.prototype = Object; | ||
| 660 | + nb2 = new nameBuilder2('Ryan', 'Dahl'); | ||
| 661 | + assert.doesNotThrow(() => assert.deepEqual(nb1, nb2)); | ||
| 662 | + | ||
| 663 | + // Primitives and object. | ||
| 664 | + assert.throws(() => assert.deepEqual(null, {}), AssertionError); | ||
| 665 | + assert.throws(() => assert.deepEqual(undefined, {}), AssertionError); | ||
| 666 | + assert.throws(() => assert.deepEqual('a', ['a']), AssertionError); | ||
| 667 | + assert.throws(() => assert.deepEqual('a', { 0: 'a' }), AssertionError); | ||
| 668 | + assert.throws(() => assert.deepEqual(1, {}), AssertionError); | ||
| 669 | + assert.throws(() => assert.deepEqual(true, {}), AssertionError); | ||
| 670 | + assert.throws(() => assert.deepEqual(Symbol(), {}), AssertionError); | ||
| 671 | + | ||
| 672 | + // Primitive wrappers and object. | ||
| 673 | + assert.doesNotThrow(() => assert.deepEqual(new String('a'), ['a']), | ||
| 674 | + AssertionError); | ||
| 675 | + assert.doesNotThrow(() => assert.deepEqual(new String('a'), { 0: 'a' }), | ||
| 676 | + AssertionError); | ||
| 677 | + assert.doesNotThrow(() => assert.deepEqual(new Number(1), {}), AssertionError); | ||
| 678 | + assert.doesNotThrow(() => assert.deepEqual(new Boolean(true), {}), | ||
| 679 | + AssertionError); | ||
| 680 | + | ||
| 681 | + // Same number of keys but different key names. | ||
| 682 | + assert.throws(() => assert.deepEqual({ a: 1 }, { b: 1 }), AssertionError); | ||
| 683 | + | ||
| 684 | + assert.doesNotThrow( | ||
| 685 | + () => assert.deepStrictEqual(new Date(2000, 3, 14), new Date(2000, 3, 14)), | ||
| 686 | + 'deepStrictEqual(new Date(2000, 3, 14), new Date(2000, 3, 14))' | ||
| 687 | + ); | ||
| 688 | + | ||
| 689 | + assert.throws( | ||
| 690 | + () => assert.deepStrictEqual(new Date(), new Date(2000, 3, 14)), | ||
| 691 | + AssertionError, | ||
| 692 | + 'deepStrictEqual(new Date(), new Date(2000, 3, 14))' | ||
| 693 | + ); | ||
| 694 | + | ||
| 695 | + assert.throws( | ||
| 696 | + () => assert.notDeepStrictEqual(new Date(2000, 3, 14), new Date(2000, 3, 14)), | ||
| 697 | + AssertionError, | ||
| 698 | + 'notDeepStrictEqual(new Date(2000, 3, 14), new Date(2000, 3, 14))' | ||
| 699 | + ); | ||
| 700 | + | ||
| 701 | + assert.doesNotThrow( | ||
| 702 | + () => assert.notDeepStrictEqual(new Date(), new Date(2000, 3, 14)), | ||
| 703 | + 'notDeepStrictEqual(new Date(), new Date(2000, 3, 14))' | ||
| 704 | + ); | ||
| 705 | + | ||
| 706 | + assert.deepStrictEqual(/a/, /a/); | ||
| 707 | + assert.deepStrictEqual(/a/g, /a/g); | ||
| 708 | + assert.deepStrictEqual(/a/i, /a/i); | ||
| 709 | + assert.deepStrictEqual(/a/m, /a/m); | ||
| 710 | + assert.deepStrictEqual(/a/igm, /a/igm); | ||
| 711 | + common.expectsError( | ||
| 712 | + () => assert.deepStrictEqual(/ab/, /a/), | ||
| 713 | + { | ||
| 714 | + code: 'ERR_ASSERTION', | ||
| 715 | + name: 'AssertionError [ERR_ASSERTION]', | ||
| 716 | + message: '/ab/ deepStrictEqual /a/' | ||
| 717 | + }); | ||
| 718 | + common.expectsError( | ||
| 719 | + () => assert.deepStrictEqual(/a/g, /a/), | ||
| 720 | + { | ||
| 721 | + code: 'ERR_ASSERTION', | ||
| 722 | + name: 'AssertionError [ERR_ASSERTION]', | ||
| 723 | + message: '/a/g deepStrictEqual /a/' | ||
| 724 | + }); | ||
| 725 | + common.expectsError( | ||
| 726 | + () => assert.deepStrictEqual(/a/i, /a/), | ||
| 727 | + { | ||
| 728 | + code: 'ERR_ASSERTION', | ||
| 729 | + name: 'AssertionError [ERR_ASSERTION]', | ||
| 730 | + message: '/a/i deepStrictEqual /a/' | ||
| 731 | + }); | ||
| 732 | + common.expectsError( | ||
| 733 | + () => assert.deepStrictEqual(/a/m, /a/), | ||
| 734 | + { | ||
| 735 | + code: 'ERR_ASSERTION', | ||
| 736 | + name: 'AssertionError [ERR_ASSERTION]', | ||
| 737 | + message: '/a/m deepStrictEqual /a/' | ||
| 738 | + }); | ||
| 739 | + common.expectsError( | ||
| 740 | + () => assert.deepStrictEqual(/a/igm, /a/im), | ||
| 741 | + { | ||
| 742 | + code: 'ERR_ASSERTION', | ||
| 743 | + name: 'AssertionError [ERR_ASSERTION]', | ||
| 744 | + message: '/a/gim deepStrictEqual /a/im' | ||
| 745 | + }); | ||
| 746 | + | ||
| 747 | + { | ||
| 748 | + const re1 = /a/; | ||
| 749 | + re1.lastIndex = 3; | ||
| 750 | + assert.doesNotThrow(() => assert.deepStrictEqual(re1, /a/)); | ||
| 751 | + } | ||
| 752 | + | ||
| 753 | + assert.throws(() => assert.deepStrictEqual(4, '4'), | ||
| 754 | + AssertionError, | ||
| 755 | + 'deepStrictEqual(4, \'4\')'); | ||
| 756 | + | ||
| 757 | + assert.throws(() => assert.deepStrictEqual(true, 1), | ||
| 758 | + AssertionError, | ||
| 759 | + 'deepStrictEqual(true, 1)'); | ||
| 760 | + | ||
| 761 | + assert.throws(() => assert.deepStrictEqual(4, '5'), | ||
| 762 | + AssertionError, | ||
| 763 | + 'deepStrictEqual(4, \'5\')'); | ||
| 764 | + | ||
| 765 | + // Having the same number of owned properties && the same set of keys. | ||
| 766 | + assert.deepStrictEqual({ a: 4 }, { a: 4 }); | ||
| 767 | + assert.deepStrictEqual({ a: 4, b: '2' }, { a: 4, b: '2' }); | ||
| 768 | + common.expectsError(() => assert.deepStrictEqual([4], ['4']), | ||
| 769 | + { | ||
| 770 | + code: 'ERR_ASSERTION', | ||
| 771 | + name: 'AssertionError [ERR_ASSERTION]', | ||
| 772 | + message: "[ 4 ] deepStrictEqual [ '4' ]" | ||
| 773 | + }); | ||
| 774 | + common.expectsError(() => assert.deepStrictEqual({ a: 4 }, { a: 4, b: true }), | ||
| 775 | + { | ||
| 776 | + code: 'ERR_ASSERTION', | ||
| 777 | + name: 'AssertionError [ERR_ASSERTION]', | ||
| 778 | + message: '{ a: 4 } deepStrictEqual { a: 4, b: true }' | ||
| 779 | + }); | ||
| 780 | + common.expectsError(() => assert.deepStrictEqual(['a'], { 0: 'a' }), | ||
| 781 | + { | ||
| 782 | + code: 'ERR_ASSERTION', | ||
| 783 | + name: 'AssertionError [ERR_ASSERTION]', | ||
| 784 | + message: "[ 'a' ] deepStrictEqual { '0': 'a' }" | ||
| 785 | + }); | ||
| 786 | + | ||
| 548 | 787 | /* eslint-enable */ | |
| 788 | + | ||
| 789 | + assert.doesNotThrow( | ||
| 790 | + () => assert.deepStrictEqual({ a: 4, b: '1' }, { b: '1', a: 4 })); | ||
| 791 | + | ||
| 792 | + assert.throws( | ||
| 793 | + () => assert.deepStrictEqual([0, 1, 2, 'a', 'b'], [0, 1, 2, 'b', 'a']), | ||
| 794 | + AssertionError); | ||
| 795 | + | ||
| 796 | + assert.doesNotThrow(() => assert.deepStrictEqual(a1, a2)); | ||
| 797 | + | ||
| 798 | + // Prototype check. | ||
| 799 | + function Constructor1(first, last) { | ||
| 800 | + this.first = first; | ||
| 801 | + this.last = last; | ||
| 802 | + } | ||
| 803 | + | ||
| 804 | + function Constructor2(first, last) { | ||
| 805 | + this.first = first; | ||
| 806 | + this.last = last; | ||
| 807 | + } | ||
| 808 | + | ||
| 809 | + const obj1 = new Constructor1('Ryan', 'Dahl'); | ||
| 810 | + let obj2 = new Constructor2('Ryan', 'Dahl'); | ||
| 811 | + | ||
| 812 | + assert.throws(() => assert.deepStrictEqual(obj1, obj2), AssertionError); | ||
| 813 | + | ||
| 814 | + Constructor2.prototype = Constructor1.prototype; | ||
| 815 | + obj2 = new Constructor2('Ryan', 'Dahl'); | ||
| 816 | + | ||
| 817 | + assert.doesNotThrow(() => assert.deepStrictEqual(obj1, obj2)); | ||
| 818 | + | ||
| 819 | + // primitives | ||
| 820 | + assert.throws(() => assert.deepStrictEqual(4, '4'), AssertionError); | ||
| 821 | + assert.throws(() => assert.deepStrictEqual(true, 1), AssertionError); | ||
| 822 | + assert.throws(() => assert.deepStrictEqual(Symbol(), Symbol()), | ||
| 823 | + AssertionError); | ||
| 824 | + | ||
| 825 | + const s = Symbol(); | ||
| 826 | + assert.doesNotThrow(() => assert.deepStrictEqual(s, s)); | ||
| 827 | + | ||
| 828 | + // Primitives and object. | ||
| 829 | + assert.throws(() => assert.deepStrictEqual(null, {}), AssertionError); | ||
| 830 | + assert.throws(() => assert.deepStrictEqual(undefined, {}), AssertionError); | ||
| 831 | + assert.throws(() => assert.deepStrictEqual('a', ['a']), AssertionError); | ||
| 832 | + assert.throws(() => assert.deepStrictEqual('a', { 0: 'a' }), AssertionError); | ||
| 833 | + assert.throws(() => assert.deepStrictEqual(1, {}), AssertionError); | ||
| 834 | + assert.throws(() => assert.deepStrictEqual(true, {}), AssertionError); | ||
| 835 | + assert.throws(() => assert.deepStrictEqual(Symbol(), {}), AssertionError); | ||
| 836 | + | ||
| 837 | + // Primitive wrappers and object. | ||
| 838 | + assert.throws(() => assert.deepStrictEqual(new String('a'), ['a']), | ||
| 839 | + AssertionError); | ||
| 840 | + assert.throws(() => assert.deepStrictEqual(new String('a'), { 0: 'a' }), | ||
| 841 | + AssertionError); | ||
| 842 | + assert.throws(() => assert.deepStrictEqual(new Number(1), {}), AssertionError); | ||
| 843 | + assert.throws(() => assert.deepStrictEqual(new Boolean(true), {}), | ||
| 844 | + AssertionError); | ||
| Back | FazBrowse Home | New Git URL |
0 commit comments