WordPress.org

Make WordPress Core

Ticket #43583: is_countable-polyfill-tests-43583.patch

File is_countable-polyfill-tests-43583.patch, 1.6 KB (added by ayeshrajans, 4 years ago)

Adding tests to complement the compat. Majority of the tests are taken from the is_countable tests from php-src itself (https://github.com/php/php-src/pull/3026/commits/587fcc504f8ad2b07ac28c3335cd0fe3ac39b503).

  • tests/phpunit/tests/compat.php

    diff --git a/tests/phpunit/tests/compat.php b/tests/phpunit/tests/compat.php
    index 3d873745b9..6bf5f8337c 100644
    a b function test_json_encode_decode() { 
    186186                $this->assertEquals( '["foo"]', $json->encodeUnsafe( array( 'foo' ) ) );
    187187                $this->assertEquals( array( 'foo' ), $json->decode( '["foo"]' ) );
    188188        }
     189
     190        function test_is_countable_availability() {
     191                $this->assertTrue( function_exists( 'is_countable' ) );
     192        }
     193
     194        /**
     195         * @dataProvider countable_variable_test_data
     196         */
     197        function test_is_countable_functionality($variable, $is_countable) {
     198                $this->assertEquals( is_countable( $variable ), $is_countable );
     199        }
     200
     201        /**
     202         * Data provider for test_is_countable_functionality test. First array value
     203         * is the variable, and the second value is the expected return value of the
     204         * PHP 7.3's is_countable function.
     205         * @return array test data.
     206         */
     207        public function countable_variable_test_data() {
     208                return array(
     209                        array( true, false ),
     210                        array( new stdClass(), false ),
     211                        array( new ArrayIteratorFake(), true ),
     212                        array( new CountableFake(), true ),
     213                        array( 16, false ),
     214                        array( null, false ),
     215                        array( array( 1, 2, 3 ), true ),
     216                        array( (array) 1, true ),
     217                        array( (object) array( 'foo', 'bar', 'baz' ), false ),
     218                );
     219        }
    189220}
    190221
    191222/* used in test_mb_substr_phpcore */
    public function __toString() { 
    194225                return 'Class A object';
    195226        }
    196227}
     228
     229class ArrayIteratorFake extends ArrayIterator {
     230
     231}
     232
     233class CountableFake implements Countable {
     234        public function count() {
     235                return 16;
     236        }
     237}