@@ -2548,6 +2548,232 @@ assert.throws(throwingFirst, /Second$/);
2548
2548
Due to the confusing error-prone notation, avoid a string as the second
2549
2549
argument.
2550
2550
2551
+ ## ` assert.partialDeepEqual(actual, expected[, message]) `
2552
+
2553
+ <!-- YAML
2554
+ added: REPLACEME
2555
+ -->
2556
+
2557
+ * ` actual ` {any}
2558
+ * ` expected ` {any}
2559
+ * ` message ` {string|Error}
2560
+
2561
+ [ ` assert.partialDeepEqual() ` ] [ ] evaluates the equivalence between the ` actual ` and ` expected ` parameters by
2562
+ performing a deep comparison. This function ensures that all properties defined
2563
+ in the ` expected ` parameter match those in the ` actual ` parameter in
2564
+ both value and type, allowing type coercion. The main difference with [ ` assert.deepEqual() ` ] [ ] is that
2565
+ [ ` assert.partialDeepEqual() ` ] [ ] does not require all properties in the ` actual ` parameter to be present in the
2566
+ ` expected ` parameter.
2567
+
2568
+ ``` mjs
2569
+ import assert from ' node:assert' ;
2570
+
2571
+ assert .partialDeepEqual ({ a: 1 , b: ' 2' }, { a: 1 , b: 2 });
2572
+ // OK
2573
+
2574
+ assert .partialDeepEqual ({ a: 1 , b: ' 2' , c: 3 }, { a: 1 , b: 2 });
2575
+ // OK
2576
+
2577
+ assert .partialDeepEqual ({ a: { b: { c: ' 1' } } }, { a: { b: { c: 1 } } });
2578
+ // OK
2579
+
2580
+ assert .partialDeepEqual (new Set ([' value1' , ' value2' ]), new Set ([' value1' , ' value2' ]));
2581
+ // OK
2582
+
2583
+ assert .partialDeepEqual (new Map ([[' key1' , ' value1' ]]), new Map ([[' key1' , ' value1' ]]));
2584
+ // OK
2585
+
2586
+ assert .partialDeepEqual (new Uint8Array ([1 , 2 , 3 ]), new Uint8Array ([1 , 2 , 3 ]));
2587
+ // OK
2588
+
2589
+ assert .partialDeepEqual (/ abc/ , / abc/ );
2590
+ // OK
2591
+
2592
+ assert .partialDeepEqual (new Date (0 ), new Date (0 ));
2593
+ // OK
2594
+
2595
+ assert .partialDeepEqual ({ a: 1 }, { a: 1 , b: 2 });
2596
+ // AssertionError
2597
+
2598
+ assert .partialDeepEqual ({ a: 1 , b: true }, { a: 1 , b: ' true' });
2599
+ // AssertionError
2600
+
2601
+ assert .partialDeepEqual ({ a: { b: 2 } }, { a: { b: 2 , c: 3 } });
2602
+ // AssertionError
2603
+ ```
2604
+
2605
+ ``` cjs
2606
+ const assert = require (' node:assert' );
2607
+
2608
+ assert .partialDeepEqual ({ a: 1 , b: ' 2' }, { a: 1 , b: 2 });
2609
+ // OK
2610
+
2611
+ assert .partialDeepEqual ({ a: 1 , b: ' 2' , c: 3 }, { a: 1 , b: 2 });
2612
+ // OK
2613
+
2614
+ assert .partialDeepEqual ({ a: { b: { c: ' 1' } } }, { a: { b: { c: 1 } } });
2615
+ // OK
2616
+
2617
+ assert .partialDeepEqual (new Set ([' value1' , ' value2' ]), new Set ([' value1' , ' value2' ]));
2618
+ // OK
2619
+
2620
+ assert .partialDeepEqual (new Map ([[' key1' , ' value1' ]]), new Map ([[' key1' , ' value1' ]]));
2621
+ // OK
2622
+
2623
+ assert .partialDeepEqual (new Uint8Array ([1 , 2 , 3 ]), new Uint8Array ([1 , 2 , 3 ]));
2624
+ // OK
2625
+
2626
+ assert .partialDeepEqual (/ abc/ , / abc/ );
2627
+ // OK
2628
+
2629
+ assert .partialDeepEqual (new Date (0 ), new Date (0 ));
2630
+ // OK
2631
+
2632
+ assert .partialDeepEqual ({ a: 1 }, { a: 1 , b: 2 });
2633
+ // AssertionError: Expected key b
2634
+
2635
+ assert .partialDeepEqual ({ a: 1 , b: true }, { a: 1 , b: ' true' });
2636
+ // AssertionError
2637
+
2638
+ assert .partialDeepEqual ({ a: { b: 2 , d: 4 } }, { a: { b: 2 , c: 3 } });
2639
+ // AssertionError: Expected key c
2640
+ ```
2641
+
2642
+ If the values or keys are not equal in the ` expected ` parameter, an [ ` AssertionError ` ] [ ] is thrown with a ` message `
2643
+ property set equal to the value of the ` message ` parameter. If the ` message `
2644
+ parameter is undefined, a default error message is assigned. If the ` message `
2645
+ parameter is an instance of an [ ` Error ` ] [ ] then it will be thrown instead of the
2646
+ ` AssertionError ` .
2647
+
2648
+ ## ` assert.partialDeepStrictEqual(actual, expected[, message]) `
2649
+
2650
+ <!-- YAML
2651
+ added: REPLACEME
2652
+ -->
2653
+
2654
+ * ` actual ` {any}
2655
+ * ` expected ` {any}
2656
+ * ` message ` {string|Error}
2657
+
2658
+ [ ` assert.partialDeepStrictEqual() ` ] [ ] Assesses the equivalence between the ` actual ` and ` expected ` parameters through a
2659
+ deep comparison, ensuring that all properties in the ` expected ` parameter are
2660
+ present in the ` actual ` parameter with equivalent values, not allowing type coercion.
2661
+ The main difference with [ ` assert.deepStrictEqual() ` ] [ ] is that [ ` assert.partialDeepStrictEqual() ` ] [ ] does not require
2662
+ all properties in the ` actual ` parameter to be present in the ` expected ` parameter.
2663
+
2664
+ ``` mjs
2665
+ import assert from ' node:assert' ;
2666
+
2667
+ assert .partialDeepStrictEqual ({ a: 1 , b: 2 }, { a: 1 , b: 2 });
2668
+ // OK
2669
+
2670
+ assert .partialDeepStrictEqual ({ a: { b: { c: 1 } } }, { a: { b: { c: 1 } } });
2671
+ // OK
2672
+
2673
+ assert .partialDeepStrictEqual ({ a: 1 , b: 2 , c: 3 }, { a: 1 , b: 2 });
2674
+ // OK
2675
+
2676
+ assert .partialDeepStrictEqual (new Set ([' value1' , ' value2' ]), new Set ([' value1' , ' value2' ]));
2677
+ // OK
2678
+
2679
+ assert .partialDeepStrictEqual (new Map ([[' key1' , ' value1' ]]), new Map ([[' key1' , ' value1' ]]));
2680
+ // OK
2681
+
2682
+ assert .partialDeepStrictEqual (new Uint8Array ([1 , 2 , 3 ]), new Uint8Array ([1 , 2 , 3 ]));
2683
+ // OK
2684
+
2685
+ assert .partialDeepStrictEqual (/ abc/ , / abc/ );
2686
+ // OK
2687
+
2688
+ assert .partialDeepStrictEqual (new Date (0 ), new Date (0 ));
2689
+ // OK
2690
+
2691
+ assert .partialDeepStrictEqual ({ a: 1 }, { a: 1 , b: 2 });
2692
+ // AssertionError
2693
+
2694
+ assert .partialDeepStrictEqual ({ a: 1 , b: ' 2' }, { a: 1 , b: 2 });
2695
+ // AssertionError
2696
+
2697
+ assert .partialDeepStrictEqual ({ a: { b: 2 } }, { a: { b: ' 2' } });
2698
+ // AssertionError
2699
+ ```
2700
+
2701
+ ``` cjs
2702
+ const assert = require (' node:assert' );
2703
+
2704
+ assert .partialDeepStrictEqual ({ a: 1 , b: 2 }, { a: 1 , b: 2 });
2705
+ // OK
2706
+
2707
+ assert .partialDeepStrictEqual ({ a: { b: { c: 1 } } }, { a: { b: { c: 1 } } });
2708
+ // OK
2709
+
2710
+ assert .partialDeepStrictEqual ({ a: 1 , b: 2 , c: 3 }, { a: 1 , b: 2 });
2711
+ // OK
2712
+
2713
+ assert .partialDeepStrictEqual ({ a: 1 }, { a: 1 , b: 2 });
2714
+ // AssertionError
2715
+
2716
+ assert .partialDeepStrictEqual ({ a: 1 , b: ' 2' }, { a: 1 , b: 2 });
2717
+ // AssertionError
2718
+
2719
+ assert .partialDeepStrictEqual ({ a: { b: 2 } }, { a: { b: ' 2' } });
2720
+ // AssertionError
2721
+ ```
2722
+
2723
+ ## ` assert.includes(actual, expected[, message]) `
2724
+
2725
+ <!-- YAML
2726
+ added: REPLACEME
2727
+ -->
2728
+
2729
+ * ` actual ` {Array | string}
2730
+ * ` expected ` {any}
2731
+ * ` message ` {string|Error}
2732
+
2733
+ [ ` assert.includes() ` ] [ ] compares the ` actual ` and ` expected ` parameters to determine if the ` expected `
2734
+ parameter is included in the ` actual ` parameter; the comparison is done with type coercion.
2735
+ The ` actual ` and the ` expected ` parameters can be
2736
+ either an array or a string. If the ` actual ` parameter is an array,
2737
+ the ` expected ` parameter must be an array and vice versa for strings.
2738
+
2739
+ ``` mjs
2740
+ import assert from ' node:assert' ;
2741
+
2742
+ assert .includes ([1 , 2 , 3 ], 2 );
2743
+ // OK
2744
+
2745
+ assert .includes (' Hello World!' , ' World' );
2746
+ // OK
2747
+
2748
+ assert .includes ([1 , 2 , 3 ], ' 2' );
2749
+ // AssertionError
2750
+
2751
+ assert .includes (' Hello World!' , ' Node.js' );
2752
+ // AssertionError
2753
+ ```
2754
+
2755
+ ``` cjs
2756
+ const assert = require (' node:assert' );
2757
+
2758
+ assert .includes ([1 , 2 , 3 ], 2 );
2759
+ // OK
2760
+
2761
+ assert .includes (' Hello World!' , ' World' );
2762
+ // OK
2763
+
2764
+ assert .includes ([1 , 2 , 3 ], ' 2' );
2765
+ // AssertionError
2766
+
2767
+ assert .includes (' Hello World!' , ' Node.js' );
2768
+ // AssertionError
2769
+ ```
2770
+
2771
+ If the assertion fails, an [ ` AssertionError ` ] [ ] is thrown with a ` message `
2772
+ property set equal to the value of the ` message ` parameter. If the ` message `
2773
+ parameter is undefined, a default error message is assigned. If the ` message `
2774
+ parameter is an instance of an [ ` Error ` ] [ ] then it will be thrown instead of the
2775
+ ` AssertionError ` .
2776
+
2551
2777
[ Object wrappers ] : https://developer.mozilla.org/en-US/docs/Glossary/Primitive#Primitive_wrapper_objects_in_JavaScript
2552
2778
[ Object.prototype.toString() ] : https://tc39.github.io/ecma262/#sec-object.prototype.tostring
2553
2779
[ `!=` operator ] : https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Inequality
@@ -2571,11 +2797,14 @@ argument.
2571
2797
[ `assert.deepStrictEqual()` ] : #assertdeepstrictequalactual-expected-message
2572
2798
[ `assert.doesNotThrow()` ] : #assertdoesnotthrowfn-error-message
2573
2799
[ `assert.equal()` ] : #assertequalactual-expected-message
2800
+ [ `assert.includes()` ] : #assertincludesactual-expected-message
2574
2801
[ `assert.notDeepEqual()` ] : #assertnotdeepequalactual-expected-message
2575
2802
[ `assert.notDeepStrictEqual()` ] : #assertnotdeepstrictequalactual-expected-message
2576
2803
[ `assert.notEqual()` ] : #assertnotequalactual-expected-message
2577
2804
[ `assert.notStrictEqual()` ] : #assertnotstrictequalactual-expected-message
2578
2805
[ `assert.ok()` ] : #assertokvalue-message
2806
+ [ `assert.partialDeepEqual()` ] : #assertpartialdeepequalactual-expected-message
2807
+ [ `assert.partialDeepStrictEqual()` ] : #assertpartialdeepstrictequalactual-expected-message
2579
2808
[ `assert.strictEqual()` ] : #assertstrictequalactual-expected-message
2580
2809
[ `assert.throws()` ] : #assertthrowsfn-error-message
2581
2810
[ `getColorDepth()` ] : tty.md#writestreamgetcolordepthenv
0 commit comments