Make WordPress Core

Changeset 53889


Ignore:
Timestamp:
08/12/2022 01:22:25 PM (19 months ago)
Author:
SergeyBiryukov
Message:

Tests: Use named data provider for is_serialized_string() tests.

This makes the output when using the --testdox option more descriptive and is helpful when trying to debug which data set from a data provider failed the test.

Follow-up to [37357], [44478].

See #55652.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/tests/phpunit/tests/functions/isSerializedString.php

    r49006 r53889  
    1212
    1313    /**
    14      * Data provider method for testing `is_serialized_string()`.
    15      *
    16      * @return array
    17      */
    18     public function _is_serialized_string() {
    19         return array(
    20 
    21             // pass array.
    22             array( array(), false ),
    23 
    24             // pass a class.
    25             array( new stdClass(), false ),
    26 
    27             // Not a string.
    28             array( 0, false ),
    29 
    30             // Too short when trimmed.
    31             array( 's:3       ', false ),
    32 
    33             // Too short.
    34             array( 's:3', false ),
    35 
    36             // No colon in second position.
    37             array( 's!3:"foo";', false ),
    38 
    39             // No trailing semicolon.
    40             array( 's:3:"foo"', false ),
    41 
    42             // Wrong type.
    43             array( 'a:3:"foo";', false ),
    44 
    45             // No closing quote.
    46             array( 'a:3:"foo;', false ),
    47 
    48             // have to use double Quotes.
    49             array( "s:12:'foo';", false ),
    50 
    51             // Wrong number of characters is close enough for is_serialized_string().
    52             array( 's:12:"foo";', true ),
    53 
    54             // Okay.
    55             array( 's:3:"foo";', true ),
    56         );
    57     }
    58 
    59     /**
    60      * Run tests on `is_serialized_string()`.
    61      *
    62      * @dataProvider _is_serialized_string
     14     * @dataProvider data_is_serialized_string
    6315     *
    6416     * @param array|object|int|string $data     Data value to test.
     
    6820        $this->assertSame( $expected, is_serialized_string( $data ) );
    6921    }
     22
     23    /**
     24     * Data provider for `test_is_serialized_string()`.
     25     *
     26     * @return array
     27     */
     28    public function data_is_serialized_string() {
     29        return array(
     30            'an array'                                => array(
     31                'data'     => array(),
     32                'expected' => false,
     33            ),
     34            'a class'                                 => array(
     35                'data'     => new stdClass(),
     36                'expected' => false,
     37            ),
     38            'an integer 0'                            => array(
     39                'data'     => 0,
     40                'expected' => false,
     41            ),
     42            'a string that is too short when trimmed' => array(
     43                'data'     => 's:3       ',
     44                'expected' => false,
     45            ),
     46            'a string that is too short'              => array(
     47                'data'     => 's:3',
     48                'expected' => false,
     49            ),
     50            'not a colon in second position'          => array(
     51                'data'     => 's!3:"foo";',
     52                'expected' => false,
     53            ),
     54            'no trailing semicolon'                   => array(
     55                'data'     => 's:3:"foo"',
     56                'expected' => false,
     57            ),
     58            'wrong type of serialized data'           => array(
     59                'data'     => 'a:3:"foo";',
     60                'expected' => false,
     61            ),
     62            'no closing quote'                        => array(
     63                'data'     => 'a:3:"foo;',
     64                'expected' => false,
     65            ),
     66            'single quotes instead of double'         => array(
     67                'data'     => "s:12:'foo';",
     68                'expected' => false,
     69            ),
     70            'wrong number of characters (should not matter)' => array(
     71                'data'     => 's:12:"foo";',
     72                'expected' => true,
     73            ),
     74            'valid serialized string'                 => array(
     75                'data'     => 's:3:"foo";',
     76                'expected' => true,
     77            ),
     78        );
     79    }
    7080}
Note: See TracChangeset for help on using the changeset viewer.