Make WordPress Core

Ticket #46639: 46639.patch

File 46639.patch, 1.7 KB (added by pbearne, 6 years ago)

patch with unit test

  • tests/phpunit/tests/functions/wpIsNumericArray.php

     
     1<?php
     2
     3/**
     4 * Tests wp_is_numeric_array function
     5 *
     6 * @since 5.2.0
     7 *
     8 * @group functions.php
     9 */
     10class Tests_Functions_wp_is_numeric_array extends WP_UnitTestCase {
     11
     12
     13        /**
     14         * @dataProvider _wp_is_numeric_array_data
     15         *
     16         * @param array  $target_array The target/source array.
     17         * @param array $expected output
     18         */
     19        public function test_wp_is_numeric_array( $target_array, $expected ) {
     20
     21                $this->assertSame( wp_is_numeric_array( $target_array ), $expected );
     22        }
     23
     24
     25        /**
     26         * data provider for unit test
     27         * List all the possible strings and a couple of in correct
     28         *
     29         * @return array
     30         */
     31        public function _wp_is_numeric_array_data() {
     32
     33                $mock_object = new stdClass();
     34                $mock_object->dd = '1';
     35
     36                return array(
     37                        array( array( 1 => 1 ), true ),
     38                        array( array( 1, 2, 3, 4, 5 ), true ),
     39
     40                        array( array( '1' => 1 ), true ), // numeric strings are evaluated as int in array_keys()
     41
     42                        array( array( '01' => 1 ), false ),
     43                        array( array( '1.0' => 1 ), false ),
     44                        array( array( 'one' => 1 ), false ),
     45                        array( array( 'key' => 'value' ), false ),
     46
     47                        // only looks at the top level array
     48                        array(
     49                                array(
     50                                        array( 'key' => 'value' ),
     51                                        array( 2 => 2 ),
     52                                ),
     53                                true ),
     54                        array(
     55                                array(
     56                                        1 => array( 'key' => 'value' ),
     57                                        2 => array( 2 => 2 ),
     58                                ),
     59                                true ),
     60
     61                        array( 'string noy array', false ),
     62                        array( $mock_object, false ),
     63                );
     64        }
     65}