@@ -2594,87 +2594,151 @@ argument.
2594
2594
added: v23.4.0
2595
2595
-->
2596
2596
2597
- > Stability: 1.0 - Early development
2597
+ > Stability: 1.2 - Release candidate
2598
2598
2599
2599
* ` actual ` {any}
2600
2600
* ` expected ` {any}
2601
2601
* ` message ` {string|Error}
2602
2602
2603
- [ ` assert.partialDeepStrictEqual() ` ] [ ] Asserts the equivalence between the ` actual ` and ` expected ` parameters through a
2604
- deep comparison, ensuring that all properties in the ` expected ` parameter are
2605
- present in the ` actual ` parameter with equivalent values, not allowing type coercion.
2606
- The main difference with [ ` assert.deepStrictEqual() ` ] [ ] is that [ ` assert.partialDeepStrictEqual() ` ] [ ] does not require
2607
- all properties in the ` actual ` parameter to be present in the ` expected ` parameter.
2608
- This method should always pass the same test cases as [ ` assert.deepStrictEqual() ` ] [ ] , behaving as a super set of it.
2609
-
2610
- ``` mjs
2611
- import assert from ' node:assert' ;
2603
+ Tests for partial deep equality between the ` actual ` and ` expected ` parameters.
2604
+ "Deep" equality means that the enumerable "own" properties of child objects
2605
+ are recursively evaluated also by the following rules. "Partial" equality means
2606
+ that only properties that exist on the ` expected ` parameter are going to be
2607
+ compared.
2612
2608
2613
- assert . partialDeepStrictEqual ({ a : 1 , b : 2 }, { a : 1 , b : 2 });
2614
- // OK
2609
+ This method always passes the same test cases as [ ` assert.deepStrictEqual() ` ] [ ] ,
2610
+ behaving as a super set of it.
2615
2611
2616
- assert .partialDeepStrictEqual ({ a: { b: { c: 1 } } }, { a: { b: { c: 1 } } });
2617
- // OK
2612
+ ### Comparison details
2618
2613
2619
- assert .partialDeepStrictEqual ({ a: 1 , b: 2 , c: 3 }, { a: 1 , b: 2 });
2620
- // OK
2614
+ * Primitive values are compared using [ ` Object.is() ` ] [ ] .
2615
+ * [ Type tags] [ Object.prototype.toString() ] of objects should be the same.
2616
+ * [ ` [[Prototype]] ` ] [ prototype-spec ] of objects are not compared.
2617
+ * Only [ enumerable "own" properties] [ ] are considered.
2618
+ * {Error} names, messages, causes, and errors are always compared,
2619
+ even if these are not enumerable properties.
2620
+ ` errors ` is also compared.
2621
+ * Enumerable own {Symbol} properties are compared as well.
2622
+ * [ Object wrappers] [ ] are compared both as objects and unwrapped values.
2623
+ * ` Object ` properties are compared unordered.
2624
+ * {Map} keys and {Set} items are compared unordered.
2625
+ * Recursion stops when both sides differ or both sides encounter a circular
2626
+ reference.
2627
+ * {WeakMap} and {WeakSet} instances are ** not** compared structurally.
2628
+ They are only equal if they reference the same object. Any comparison between
2629
+ different ` WeakMap ` or ` WeakSet ` instances will result in inequality,
2630
+ even if they contain the same entries.
2631
+ * {RegExp} lastIndex, flags, and source are always compared, even if these
2632
+ are not enumerable properties.
2633
+ * Holes in sparse arrays are ignored.
2621
2634
2622
- assert . partialDeepStrictEqual ( new Set ([ ' value1 ' , ' value2 ' ]), new Set ([ ' value1 ' , ' value2 ' ]));
2623
- // OK
2635
+ ``` mjs
2636
+ import assert from ' node:assert ' ;
2624
2637
2625
- assert .partialDeepStrictEqual (new Map ([[' key1' , ' value1' ]]), new Map ([[' key1' , ' value1' ]]));
2638
+ assert .partialDeepStrictEqual (
2639
+ { a: { b: { c: 1 } } },
2640
+ { a: { b: { c: 1 } } },
2641
+ );
2626
2642
// OK
2627
2643
2628
- assert .partialDeepStrictEqual (new Uint8Array ([1 , 2 , 3 ]), new Uint8Array ([1 , 2 , 3 ]));
2644
+ assert .partialDeepStrictEqual (
2645
+ { a: 1 , b: 2 , c: 3 },
2646
+ { b: 2 },
2647
+ );
2629
2648
// OK
2630
2649
2631
- assert .partialDeepStrictEqual (/ abc/ , / abc/ );
2650
+ assert .partialDeepStrictEqual (
2651
+ [1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 ],
2652
+ [4 , 5 , 8 ],
2653
+ );
2632
2654
// OK
2633
2655
2634
- assert .partialDeepStrictEqual ([{ a: 5 }, { b: 5 }], [{ a: 5 }]);
2656
+ assert .partialDeepStrictEqual (
2657
+ new Set ([{ a: 1 }, { b: 1 }]),
2658
+ new Set ([{ a: 1 }]),
2659
+ );
2635
2660
// OK
2636
2661
2637
- assert .partialDeepStrictEqual (new Set ([{ a: 1 }, { b: 1 }]), new Set ([{ a: 1 }]));
2662
+ assert .partialDeepStrictEqual (
2663
+ new Map ([[' key1' , ' value1' ], [' key2' , ' value2' ]]),
2664
+ new Map ([[' key2' , ' value2' ]]),
2665
+ );
2638
2666
// OK
2639
2667
2640
- assert .partialDeepStrictEqual (new Date ( 0 ), new Date ( 0 ) );
2668
+ assert .partialDeepStrictEqual (123n , 123n );
2641
2669
// OK
2642
2670
2643
- assert .partialDeepStrictEqual ({ a: 1 }, { a: 1 , b: 2 });
2671
+ assert .partialDeepStrictEqual (
2672
+ [1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 ],
2673
+ [5 , 4 , 8 ],
2674
+ );
2644
2675
// AssertionError
2645
2676
2646
- assert .partialDeepStrictEqual ({ a: 1 , b: ' 2' }, { a: 1 , b: 2 });
2677
+ assert .partialDeepStrictEqual (
2678
+ { a: 1 },
2679
+ { a: 1 , b: 2 },
2680
+ );
2647
2681
// AssertionError
2648
2682
2649
- assert .partialDeepStrictEqual ({ a: { b: 2 } }, { a: { b: ' 2' } });
2683
+ assert .partialDeepStrictEqual (
2684
+ { a: { b: 2 } },
2685
+ { a: { b: ' 2' } },
2686
+ );
2650
2687
// AssertionError
2651
2688
```
2652
2689
2653
2690
``` cjs
2654
2691
const assert = require (' node:assert' );
2655
2692
2656
- assert .partialDeepStrictEqual ({ a: 1 , b: 2 }, { a: 1 , b: 2 });
2693
+ assert .partialDeepStrictEqual (
2694
+ { a: { b: { c: 1 } } },
2695
+ { a: { b: { c: 1 } } },
2696
+ );
2657
2697
// OK
2658
2698
2659
- assert .partialDeepStrictEqual ({ a: { b: { c: 1 } } }, { a: { b: { c: 1 } } });
2699
+ assert .partialDeepStrictEqual (
2700
+ { a: 1 , b: 2 , c: 3 },
2701
+ { b: 2 },
2702
+ );
2660
2703
// OK
2661
2704
2662
- assert .partialDeepStrictEqual ({ a: 1 , b: 2 , c: 3 }, { a: 1 , b: 2 });
2705
+ assert .partialDeepStrictEqual (
2706
+ [1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 ],
2707
+ [4 , 5 , 8 ],
2708
+ );
2663
2709
// OK
2664
2710
2665
- assert .partialDeepStrictEqual ([{ a: 5 }, { b: 5 }], [{ a: 5 }]);
2711
+ assert .partialDeepStrictEqual (
2712
+ new Set ([{ a: 1 }, { b: 1 }]),
2713
+ new Set ([{ a: 1 }]),
2714
+ );
2666
2715
// OK
2667
2716
2668
- assert .partialDeepStrictEqual (new Set ([{ a: 1 }, { b: 1 }]), new Set ([{ a: 1 }]));
2717
+ assert .partialDeepStrictEqual (
2718
+ new Map ([[' key1' , ' value1' ], [' key2' , ' value2' ]]),
2719
+ new Map ([[' key2' , ' value2' ]]),
2720
+ );
2669
2721
// OK
2670
2722
2671
- assert .partialDeepStrictEqual ({ a: 1 }, { a: 1 , b: 2 });
2723
+ assert .partialDeepStrictEqual (123n , 123n );
2724
+ // OK
2725
+
2726
+ assert .partialDeepStrictEqual (
2727
+ [1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 ],
2728
+ [5 , 4 , 8 ],
2729
+ );
2672
2730
// AssertionError
2673
2731
2674
- assert .partialDeepStrictEqual ({ a: 1 , b: ' 2' }, { a: 1 , b: 2 });
2732
+ assert .partialDeepStrictEqual (
2733
+ { a: 1 },
2734
+ { a: 1 , b: 2 },
2735
+ );
2675
2736
// AssertionError
2676
2737
2677
- assert .partialDeepStrictEqual ({ a: { b: 2 } }, { a: { b: ' 2' } });
2738
+ assert .partialDeepStrictEqual (
2739
+ { a: { b: 2 } },
2740
+ { a: { b: ' 2' } },
2741
+ );
2678
2742
// AssertionError
2679
2743
```
2680
2744
@@ -2698,7 +2762,6 @@ assert.partialDeepStrictEqual({ a: { b: 2 } }, { a: { b: '2' } });
2698
2762
[ `assert.notEqual()` ] : #assertnotequalactual-expected-message
2699
2763
[ `assert.notStrictEqual()` ] : #assertnotstrictequalactual-expected-message
2700
2764
[ `assert.ok()` ] : #assertokvalue-message
2701
- [ `assert.partialDeepStrictEqual()` ] : #assertpartialdeepstrictequalactual-expected-message
2702
2765
[ `assert.strictEqual()` ] : #assertstrictequalactual-expected-message
2703
2766
[ `assert.throws()` ] : #assertthrowsfn-error-message
2704
2767
[ `getColorDepth()` ] : tty.md#writestreamgetcolordepthenv
0 commit comments