mirror of
https://github.com/gosticks/wordpress-develop.git
synced 2025-10-16 12:05:38 +00:00
While using reserved PHP keywords as parameter name labels is allowed, in the context of function calls using named parameters in PHP 8.0+, this will easily lead to confusion. To avoid that, it is recommended not to use reserved keywords as function parameter names. This commit renames the `$list` parameter to `$input_list` in `Tests_Functions_wpListPluck::test_wp_list_pluck()`. Follow-up to [52946], [52996], [52997], [52998], [53003], [53014], [53029], [53039], [53116], [53117], [53137], [53174], [53184], [53185], [53192], [53193], [53198], [53203], [53207], [53215], [53216], [53220], [53230], [53232], [53236], [53239], [53240], [53242], [53243], [53245], [53246], [53257], [53269], [53270], [53271], [53272], [53273], [53274], [53275], [53276], [53277], [53281], [53283], [53284], [53285], [53287], [53364], [53365], [54927], [54929], [54930], [54931], [54932], [54933], [54938], [54943], [54944], [54945], [54946], [54947], [54948], [54950], [54951], [54952], [54956], [54959], [54960], [54961], [54962], [54964], [54965], [54969], [54970], [54971], [54972], [54996], [55000], [55011], [55013], [55014], [55015], [55016], [55017], [55020], [55021], [55023], [55027], [55028], [55034], [55036], [55037], [55038], [55039], [55049], [55050], [55060], [55062], [55064], [55065], [55076]. Props jrf, aristath, poena, justinahinon, SergeyBiryukov. See #56788. git-svn-id: https://develop.svn.wordpress.org/trunk@55077 602fd350-edb4-49c9-b593-d223f7449a82
354 lines
6.8 KiB
PHP
354 lines
6.8 KiB
PHP
<?php
|
|
|
|
/**
|
|
* Test wp_list_pluck().
|
|
*
|
|
* @group functions.php
|
|
* @covers ::wp_list_pluck
|
|
*/
|
|
class Tests_Functions_wpListPluck extends WP_UnitTestCase {
|
|
public $object_list = array();
|
|
public $array_list = array();
|
|
|
|
public function set_up() {
|
|
parent::set_up();
|
|
$this->array_list['foo'] = array(
|
|
'name' => 'foo',
|
|
'id' => 'f',
|
|
'field1' => true,
|
|
'field2' => true,
|
|
'field3' => true,
|
|
'field4' => array( 'red' ),
|
|
);
|
|
$this->array_list['bar'] = array(
|
|
'name' => 'bar',
|
|
'id' => 'b',
|
|
'field1' => true,
|
|
'field2' => true,
|
|
'field3' => false,
|
|
'field4' => array( 'green' ),
|
|
);
|
|
$this->array_list['baz'] = array(
|
|
'name' => 'baz',
|
|
'id' => 'z',
|
|
'field1' => true,
|
|
'field2' => false,
|
|
'field3' => false,
|
|
'field4' => array( 'blue' ),
|
|
);
|
|
foreach ( $this->array_list as $key => $value ) {
|
|
$this->object_list[ $key ] = (object) $value;
|
|
}
|
|
}
|
|
|
|
public function test_wp_list_pluck_array_and_object() {
|
|
$list = wp_list_pluck( $this->object_list, 'name' );
|
|
$this->assertSame(
|
|
array(
|
|
'foo' => 'foo',
|
|
'bar' => 'bar',
|
|
'baz' => 'baz',
|
|
),
|
|
$list
|
|
);
|
|
|
|
$list = wp_list_pluck( $this->array_list, 'name' );
|
|
$this->assertSame(
|
|
array(
|
|
'foo' => 'foo',
|
|
'bar' => 'bar',
|
|
'baz' => 'baz',
|
|
),
|
|
$list
|
|
);
|
|
}
|
|
|
|
/**
|
|
* @ticket 28666
|
|
*/
|
|
public function test_wp_list_pluck_index_key() {
|
|
$list = wp_list_pluck( $this->array_list, 'name', 'id' );
|
|
$this->assertSame(
|
|
array(
|
|
'f' => 'foo',
|
|
'b' => 'bar',
|
|
'z' => 'baz',
|
|
),
|
|
$list
|
|
);
|
|
}
|
|
|
|
/**
|
|
* @ticket 28666
|
|
*/
|
|
public function test_wp_list_pluck_object_index_key() {
|
|
$list = wp_list_pluck( $this->object_list, 'name', 'id' );
|
|
$this->assertSame(
|
|
array(
|
|
'f' => 'foo',
|
|
'b' => 'bar',
|
|
'z' => 'baz',
|
|
),
|
|
$list
|
|
);
|
|
}
|
|
|
|
/**
|
|
* @ticket 28666
|
|
*/
|
|
public function test_wp_list_pluck_missing_index_key() {
|
|
$list = wp_list_pluck( $this->array_list, 'name', 'nonexistent' );
|
|
$this->assertSame(
|
|
array(
|
|
0 => 'foo',
|
|
1 => 'bar',
|
|
2 => 'baz',
|
|
),
|
|
$list
|
|
);
|
|
}
|
|
|
|
/**
|
|
* @ticket 28666
|
|
*/
|
|
public function test_wp_list_pluck_partial_missing_index_key() {
|
|
$array_list = $this->array_list;
|
|
unset( $array_list['bar']['id'] );
|
|
$list = wp_list_pluck( $array_list, 'name', 'id' );
|
|
$this->assertSame(
|
|
array(
|
|
'f' => 'foo',
|
|
0 => 'bar',
|
|
'z' => 'baz',
|
|
),
|
|
$list
|
|
);
|
|
}
|
|
|
|
/**
|
|
* @ticket 28666
|
|
*/
|
|
public function test_wp_list_pluck_mixed_index_key() {
|
|
$mixed_list = $this->array_list;
|
|
$mixed_list['bar'] = (object) $mixed_list['bar'];
|
|
$list = wp_list_pluck( $mixed_list, 'name', 'id' );
|
|
$this->assertSame(
|
|
array(
|
|
'f' => 'foo',
|
|
'b' => 'bar',
|
|
'z' => 'baz',
|
|
),
|
|
$list
|
|
);
|
|
}
|
|
|
|
/**
|
|
* @ticket 16895
|
|
*/
|
|
public function test_wp_list_pluck_containing_references() {
|
|
$ref_list = array(
|
|
& $this->object_list['foo'],
|
|
& $this->object_list['bar'],
|
|
);
|
|
|
|
$this->assertInstanceOf( 'stdClass', $ref_list[0] );
|
|
$this->assertInstanceOf( 'stdClass', $ref_list[1] );
|
|
|
|
$list = wp_list_pluck( $ref_list, 'name' );
|
|
$this->assertSame(
|
|
array(
|
|
'foo',
|
|
'bar',
|
|
),
|
|
$list
|
|
);
|
|
|
|
$this->assertInstanceOf( 'stdClass', $ref_list[0] );
|
|
$this->assertInstanceOf( 'stdClass', $ref_list[1] );
|
|
}
|
|
|
|
/**
|
|
* @ticket 16895
|
|
*/
|
|
public function test_wp_list_pluck_containing_references_keys() {
|
|
$ref_list = array(
|
|
& $this->object_list['foo'],
|
|
& $this->object_list['bar'],
|
|
);
|
|
|
|
$this->assertInstanceOf( 'stdClass', $ref_list[0] );
|
|
$this->assertInstanceOf( 'stdClass', $ref_list[1] );
|
|
|
|
$list = wp_list_pluck( $ref_list, 'name', 'id' );
|
|
$this->assertSame(
|
|
array(
|
|
'f' => 'foo',
|
|
'b' => 'bar',
|
|
),
|
|
$list
|
|
);
|
|
|
|
$this->assertInstanceOf( 'stdClass', $ref_list[0] );
|
|
$this->assertInstanceOf( 'stdClass', $ref_list[1] );
|
|
}
|
|
|
|
/**
|
|
* @dataProvider data_test_wp_list_pluck
|
|
*
|
|
* @param array $input_list List of objects or arrays.
|
|
* @param int|string $field Field from the object to place instead of the entire object
|
|
* @param int|string $index_key Field from the object to use as keys for the new array.
|
|
* @param array $expected Expected result.
|
|
*/
|
|
public function test_wp_list_pluck( $input_list, $field, $index_key, $expected ) {
|
|
$this->assertSameSetsWithIndex( $expected, wp_list_pluck( $input_list, $field, $index_key ) );
|
|
}
|
|
|
|
public function data_test_wp_list_pluck() {
|
|
return array(
|
|
'arrays' => array(
|
|
array(
|
|
array(
|
|
'foo' => 'bar',
|
|
'bar' => 'baz',
|
|
'abc' => 'xyz',
|
|
),
|
|
array(
|
|
'foo' => 'foo',
|
|
'123' => '456',
|
|
'lorem' => 'ipsum',
|
|
),
|
|
array( 'foo' => 'baz' ),
|
|
),
|
|
'foo',
|
|
null,
|
|
array( 'bar', 'foo', 'baz' ),
|
|
),
|
|
'arrays with index key' => array(
|
|
array(
|
|
array(
|
|
'foo' => 'bar',
|
|
'bar' => 'baz',
|
|
'abc' => 'xyz',
|
|
'key' => 'foo',
|
|
),
|
|
array(
|
|
'foo' => 'foo',
|
|
'123' => '456',
|
|
'lorem' => 'ipsum',
|
|
'key' => 'bar',
|
|
),
|
|
array(
|
|
'foo' => 'baz',
|
|
'key' => 'value',
|
|
),
|
|
),
|
|
'foo',
|
|
'key',
|
|
array(
|
|
'foo' => 'bar',
|
|
'bar' => 'foo',
|
|
'value' => 'baz',
|
|
),
|
|
),
|
|
'arrays with index key missing' => array(
|
|
array(
|
|
array(
|
|
'foo' => 'bar',
|
|
'bar' => 'baz',
|
|
'abc' => 'xyz',
|
|
),
|
|
array(
|
|
'foo' => 'foo',
|
|
'123' => '456',
|
|
'lorem' => 'ipsum',
|
|
'key' => 'bar',
|
|
),
|
|
array(
|
|
'foo' => 'baz',
|
|
'key' => 'value',
|
|
),
|
|
),
|
|
'foo',
|
|
'key',
|
|
array(
|
|
'bar',
|
|
'bar' => 'foo',
|
|
'value' => 'baz',
|
|
),
|
|
),
|
|
'objects' => array(
|
|
array(
|
|
(object) array(
|
|
'foo' => 'bar',
|
|
'bar' => 'baz',
|
|
'abc' => 'xyz',
|
|
),
|
|
(object) array(
|
|
'foo' => 'foo',
|
|
'123' => '456',
|
|
'lorem' => 'ipsum',
|
|
),
|
|
(object) array( 'foo' => 'baz' ),
|
|
),
|
|
'foo',
|
|
null,
|
|
array( 'bar', 'foo', 'baz' ),
|
|
),
|
|
'objects with index key' => array(
|
|
array(
|
|
(object) array(
|
|
'foo' => 'bar',
|
|
'bar' => 'baz',
|
|
'abc' => 'xyz',
|
|
'key' => 'foo',
|
|
),
|
|
(object) array(
|
|
'foo' => 'foo',
|
|
'123' => '456',
|
|
'lorem' => 'ipsum',
|
|
'key' => 'bar',
|
|
),
|
|
(object) array(
|
|
'foo' => 'baz',
|
|
'key' => 'value',
|
|
),
|
|
),
|
|
'foo',
|
|
'key',
|
|
array(
|
|
'foo' => 'bar',
|
|
'bar' => 'foo',
|
|
'value' => 'baz',
|
|
),
|
|
),
|
|
'objects with index key missing' => array(
|
|
array(
|
|
(object) array(
|
|
'foo' => 'bar',
|
|
'bar' => 'baz',
|
|
'abc' => 'xyz',
|
|
),
|
|
(object) array(
|
|
'foo' => 'foo',
|
|
'123' => '456',
|
|
'lorem' => 'ipsum',
|
|
'key' => 'bar',
|
|
),
|
|
(object) array(
|
|
'foo' => 'baz',
|
|
'key' => 'value',
|
|
),
|
|
),
|
|
'foo',
|
|
'key',
|
|
array(
|
|
'bar',
|
|
'bar' => 'foo',
|
|
'value' => 'baz',
|
|
),
|
|
),
|
|
);
|
|
}
|
|
}
|