Make WordPress Core


Ignore:
Timestamp:
06/06/2022 10:48:21 PM (2 years ago)
Author:
audrasjb
Message:

General: Ensure wp_rand() returns 0 when $min and $max values are equal to 0.

This changeset ensures wp_rand() returns zero instead of a random number when both $min and $max values are equal to zero.

Fixes #55194.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/tests/phpunit/tests/pluggable.php

    r53231 r53473  
    225225            ),
    226226            'wp_rand'                         => array(
    227                 'min' => 0,
    228                 'max' => 0,
     227                'min' => null,
     228                'max' => null,
    229229            ),
    230230            'wp_set_password'                 => array( 'password', 'user_id' ),
     
    355355        $this->assertSame( $current_user, $from_get_user_by );
    356356    }
     357
     358    /**
     359     * Tests that wp_rand() returns zero.
     360     *
     361     * @ticket 55194
     362     * @dataProvider data_wp_rand_should_return_zero
     363     * @covers ::wp_rand
     364     *
     365     * @param mixed $min Lower limit for the generated number.
     366     * @param mixed $max Upper limit for the generated number.
     367     */
     368    public function test_wp_rand_should_return_zero( $min, $max ) {
     369        $this->assertSame( 0, wp_rand( $min, $max ) );
     370    }
     371
     372    /**
     373     * Data provider.
     374     *
     375     * @return array
     376     */
     377    public function data_wp_rand_should_return_zero() {
     378        return array(
     379            'min and max as 0'      => array(
     380                'min' => 0,
     381                'max' => 0,
     382            ),
     383            'min and max as 0.0'    => array(
     384                'min' => 0.0,
     385                'max' => 0.0,
     386            ),
     387            'min as null, max as 0' => array(
     388                'min' => null,
     389                'max' => 0,
     390            ),
     391        );
     392    }
     393
     394    /**
     395     * Tests that wp_rand() returns a value between 1 and 99.
     396     *
     397     * @ticket 55194
     398     * @dataProvider data_wp_rand_should_return_between_1_and_99
     399     * @covers ::wp_rand
     400     *
     401     * @param int $min Lower limit for the generated number.
     402     * @param int $max Upper limit for the generated number.
     403     */
     404    public function test_wp_rand_should_return_between_1_and_99( $min, $max ) {
     405        $this->assertGreaterThan(
     406            0,
     407            wp_rand( $min, $max ),
     408            'The value was not greater than 0'
     409        );
     410
     411        $this->assertLessThan(
     412            100,
     413            wp_rand( $min, $max ),
     414            'The value was not less than 100'
     415        );
     416    }
     417
     418    /**
     419     * Data provider.
     420     *
     421     * @return array
     422     */
     423    public function data_wp_rand_should_return_between_1_and_99() {
     424        return array(
     425            '1 and 99'       => array(
     426                'min' => 1,
     427                'max' => 99,
     428            ),
     429            '-1 and 99'      => array(
     430                'min' => -1,
     431                'max' => 99,
     432            ),
     433            '1 and -99'      => array(
     434                'min' => 1,
     435                'max' => -99,
     436            ),
     437            '-1 and -99'     => array(
     438                'min' => -1,
     439                'max' => -99,
     440            ),
     441            '1.0 and 99.0'   => array(
     442                'min' => 1.0,
     443                'max' => 99.0,
     444            ),
     445            '-1.0 and -99.0' => array(
     446                'min' => -1.0,
     447                'max' => -99.0,
     448            ),
     449        );
     450    }
    357451}
Note: See TracChangeset for help on using the changeset viewer.