Make WordPress Core

Changeset 50965


Ignore:
Timestamp:
05/24/2021 12:24:14 PM (4 years ago)
Author:
SergeyBiryukov
Message:

General: Some documentation and test improvements for the _wp_array_set():

  • Update the function DocBlock per the documentation standards.
  • Move the unit tests to a more appropriate place.
  • Rename and reorder the tests for consistency with _wp_array_get() tests.

Follow-up to [50958], [50962], [50964].

See #53175, #52625.

Location:
trunk
Files:
2 edited
1 moved

Legend:

Unmodified
Added
Removed
  • trunk/src/wp-includes/functions.php

    r50958 r50965  
    46374637 *     $array = array();
    46384638 *     _wp_array_set( $array, array( 'a', 'b', 'c', 1 );
     4639 *
    46394640 *     $array becomes:
    46404641 *     array(
     
    46464647 *     );
    46474648 *
    4648  * @param array $array   An array that we want to mutate to include a specific value in a path.
    4649  * @param array $path    An array of keys describing the path that we want to mutate.
    4650  * @param mixed $value   The value that will be set.
     4649 * @internal
     4650 *
     4651 * @since 5.8.0
     4652 * @access private
     4653 *
     4654 * @param array $array An array that we want to mutate to include a specific value in a path.
     4655 * @param array $path  An array of keys describing the path that we want to mutate.
     4656 * @param mixed $value The value that will be set.
    46514657 */
    46524658function _wp_array_set( &$array, $path, $value = null ) {
     
    46604666        return;
    46614667    }
     4668
    46624669    $path_length = count( $path );
     4670
    46634671    if ( 0 === $path_length ) {
    46644672        return;
    46654673    }
     4674
    46664675    foreach ( $path as $path_element ) {
    46674676        if (
     
    46834692        $array = &$array[ $path_element ]; // phpcs:ignore VariableAnalysis.CodeAnalysis.VariableAnalysis.VariableRedeclaration
    46844693    }
     4694
    46854695    $array[ $path[ $i ] ] = $value;
    46864696}
  • trunk/tests/phpunit/tests/functions/wpArrayGet.php

    r50964 r50965  
    5858
    5959    /**
    60      * Test _wp_array_get() with non subtree paths.
     60     * Test _wp_array_get() with non-subtree paths.
    6161     *
    6262     * @ticket 51720
    6363     */
    6464    public function test_wp_array_get_simple_non_subtree() {
    65         // Simple non sub tree test.
     65        // Simple non-subtree test.
    6666        $this->assertSame(
    6767            _wp_array_get(
     
    7474        );
    7575
    76         // Simple non sub tree not found.
     76        // Simple non-subtree not found.
    7777        $this->assertSame(
    7878            _wp_array_get(
     
    8585        );
    8686
    87         // Simple non sub tree not found with a default.
     87        // Simple non-subtree not found with a default.
    8888        $this->assertSame(
    8989            _wp_array_get(
     
    9797        );
    9898
    99         // Simple non sub tree integer path.
     99        // Simple non-subtree integer path.
    100100        $this->assertSame(
    101101            _wp_array_get(
     
    112112
    113113    /**
     114     * Test _wp_array_get() with subtrees.
     115     *
     116     * @ticket 51720
     117     */
     118    public function test_wp_array_get_subtree() {
     119        $this->assertSame(
     120            _wp_array_get(
     121                array(
     122                    'a' => array(
     123                        'b' => array(
     124                            'c' => 1,
     125                        ),
     126                    ),
     127                ),
     128                array( 'a', 'b' )
     129            ),
     130            array( 'c' => 1 )
     131        );
     132
     133        $this->assertSame(
     134            _wp_array_get(
     135                array(
     136                    'a' => array(
     137                        'b' => array(
     138                            'c' => 1,
     139                        ),
     140                    ),
     141                ),
     142                array( 'a', 'b', 'c' )
     143            ),
     144            1
     145        );
     146
     147        $this->assertSame(
     148            _wp_array_get(
     149                array(
     150                    'a' => array(
     151                        'b' => array(
     152                            'c' => 1,
     153                        ),
     154                    ),
     155                ),
     156                array( 'a', 'b', 'c', 'd' )
     157            ),
     158            null
     159        );
     160    }
     161
     162    /**
    114163     * Test _wp_array_get() with zero strings.
    115164     *
     
    159208            ),
    160209            'b'
    161         );
    162     }
    163 
    164 
    165     /**
    166      * Test _wp_array_get() with subtrees.
    167      *
    168      * @ticket 51720
    169      */
    170     public function test_wp_array_get_subtree() {
    171         $this->assertSame(
    172             _wp_array_get(
    173                 array(
    174                     'a' => array(
    175                         'b' => array(
    176                             'c' => 1,
    177                         ),
    178                     ),
    179                 ),
    180                 array( 'a', 'b' )
    181             ),
    182             array( 'c' => 1 )
    183         );
    184 
    185         $this->assertSame(
    186             _wp_array_get(
    187                 array(
    188                     'a' => array(
    189                         'b' => array(
    190                             'c' => 1,
    191                         ),
    192                     ),
    193                 ),
    194                 array( 'a', 'b', 'c' )
    195             ),
    196             1
    197         );
    198 
    199         $this->assertSame(
    200             _wp_array_get(
    201                 array(
    202                     'a' => array(
    203                         'b' => array(
    204                             'c' => 1,
    205                         ),
    206                     ),
    207                 ),
    208                 array( 'a', 'b', 'c', 'd' )
    209             ),
    210             null
    211210        );
    212211    }
  • trunk/tests/phpunit/tests/functions/wpArraySet.php

    r50964 r50965  
    11<?php
    2 /**
    3  * _wp_array_set.
    4  *
    5  * @package WordPress
    6  */
    72
    83/**
    9  * Test _wp_array_set function.
     4 * Tests for the _wp_array_get() function
    105 *
    11  * @package WordPress
     6 * @since 5.8.0
     7 *
     8 * @group functions.php
     9 * @covers ::_wp_array_get
    1210 */
    13 class WP_Array_Set_Test extends WP_UnitTestCase {
     11class Tests_Functions_wpArraySet extends WP_UnitTestCase {
     12
    1413    /**
    15      * Test _wp_array_set() with simple non subtree path.
     14     * Test _wp_array_set() with invalid parameters.
    1615     *
    1716     * @ticket 53175
    1817     */
    19     public function test_simple_not_subtree_set() {
     18    public function test_wp_array_set_invalid_parameters() {
     19        $test = 3;
     20        _wp_array_set( $test, array( 'a' ), 1 );
     21        $this->assertSame(
     22            $test,
     23            3
     24        );
     25
     26        $test_array = array( 'a' => 2 );
     27        _wp_array_set( $test_array, 'a', 3 );
     28        $this->assertSame(
     29            $test_array,
     30            array( 'a' => 2 )
     31        );
     32
     33        $test_array = array( 'a' => 2 );
     34        _wp_array_set( $test_array, null, 3 );
     35        $this->assertSame(
     36            $test_array,
     37            array( 'a' => 2 )
     38        );
     39
     40        $test_array = array( 'a' => 2 );
     41        _wp_array_set( $test_array, array(), 3 );
     42        $this->assertSame(
     43            $test_array,
     44            array( 'a' => 2 )
     45        );
     46
     47        $test_array = array( 'a' => 2 );
     48        _wp_array_set( $test_array, array( 'a', array() ), 3 );
     49        $this->assertSame(
     50            $test_array,
     51            array( 'a' => 2 )
     52        );
     53    }
     54
     55    /**
     56     * Test _wp_array_set() with simple non-subtree path.
     57     *
     58     * @ticket 53175
     59     */
     60    public function test_wp_array_set_simple_non_subtree() {
    2061        $test_array = array();
    2162        _wp_array_set( $test_array, array( 'a' ), 1 );
     
    4889     * @ticket 53175
    4990     */
    50     public function test_subtree_set() {
     91    public function test_wp_array_set_subtree() {
    5192        $test_array = array();
    5293        _wp_array_set( $test_array, array( 'a', 'b', 'c' ), 1 );
     
    92133        );
    93134    }
    94 
    95     /**
    96      * Test _wp_array_set() with invalid parameters.
    97      *
    98      * @ticket 53175
    99      */
    100     public function test_invalid_parameters_set() {
    101         $test = 3;
    102         _wp_array_set( $test, array( 'a' ), 1 );
    103         $this->assertSame(
    104             $test,
    105             3
    106         );
    107 
    108         $test_array = array( 'a' => 2 );
    109         _wp_array_set( $test_array, 'a', 3 );
    110         $this->assertSame(
    111             $test_array,
    112             array( 'a' => 2 )
    113         );
    114 
    115         $test_array = array( 'a' => 2 );
    116         _wp_array_set( $test_array, null, 3 );
    117         $this->assertSame(
    118             $test_array,
    119             array( 'a' => 2 )
    120         );
    121 
    122         $test_array = array( 'a' => 2 );
    123         _wp_array_set( $test_array, array(), 3 );
    124         $this->assertSame(
    125             $test_array,
    126             array( 'a' => 2 )
    127         );
    128 
    129         $test_array = array( 'a' => 2 );
    130         _wp_array_set( $test_array, array( 'a', array() ), 3 );
    131         $this->assertSame(
    132             $test_array,
    133             array( 'a' => 2 )
    134         );
    135     }
    136135}
Note: See TracChangeset for help on using the changeset viewer.