TypePHP 编译器 https://swoole.com/aot/
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

175 lines
5.7 KiB

--TEST--
array_method: all array methods test
--FILE--
<?php
function _odd($var)
{
return $var & 1;
}
function _cube($n)
{
return ($n * $n * $n);
}
function _sum($carry, $item)
{
$carry += $item;
return $carry;
}
function main()
{
require __DIR__ . '/../../../src/Assert.php';
$array = array("FirSt" => 1, "SecOnd" => 4);
Assert::eq($array->changeKeyCase(CASE_UPPER), array_change_key_case($array, CASE_UPPER));
$array = array('a', 'b', 'c', 'd', 'e');
Assert::eq($array->chunk(2), array_chunk($array, 2));
$records = [
[
'id' => 2135,
'first_name' => 'John',
'last_name' => 'Doe',
],
[
'id' => 3245,
'first_name' => 'Sally',
'last_name' => 'Smith',
],
[
'id' => 5342,
'first_name' => 'Jane',
'last_name' => 'Jones',
],
[
'id' => 5623,
'first_name' => 'Peter',
'last_name' => 'Doe',
]
];
Assert::eq($records->column('id'), array_column($records, 'id'));
$array = array(1, "hello", 1, "world", "hello");
Assert::eq($array->countValues(), array_count_values($array));
$array1 = array("a" => "green", "red", "blue", "red");
$array2 = array("b" => "green", "yellow", "red");
Assert::eq($array1->diff($array2), array_diff($array1, $array2));
$array1 = array("a" => "green", "b" => "brown", "c" => "blue", "red");
$array2 = array("a" => "green", "yellow", "red");
Assert::eq($array1->diffAssoc($array2), array_diff_assoc($array1, $array2));
$array1 = array('blue' => 1, 'red' => 2, 'green' => 3, 'purple' => 4);
$array2 = array('green' => 5, 'yellow' => 7, 'cyan' => 8);
Assert::eq($array1->diffKey($array2), array_diff_key($array1, $array2));
$array = [6, 7, 8, 9, 10, 11, 12];
Assert::eq($array->filter('_odd'), array_filter($array, '_odd'));
$input = array("oranges", "apples", "pears");
Assert::eq($input->flip(), array_flip($input));
$array1 = array("a" => "green", "red", "blue");
$array2 = array("b" => "green", "yellow", "red");
Assert::eq($array1->intersect($array2), array_intersect($array1, $array2));
Assert::eq($array1->intersectAssoc($array2), array_intersect_assoc($array1, $array2));
$array = ['apple', 2, 3];
Assert::eq($array->isList(), array_is_list($array));
$array = ['first' => 1, 'second' => 4];
Assert::eq($array->keyExists('first'), array_key_exists('first', $array));
$array = ['a' => 1, 'b' => 2, 'c' => 3];
Assert::eq($array->keyFirst(), array_key_first($array));
Assert::eq($array->keyLast(), array_key_last($array));
Assert::eq($array->keys(), array_keys($array));
Assert::eq($array->values(), array_values($array));
$a = [1, 2, 3, 4, 5];
Assert::eq($a->map('_cube'), array_map('_cube', $a));
$array = array(12, 10, 9);
Assert::eq($array->pad(5, 0), array_pad($array, 5, 0));
$a = array(2, 4, 6, 8);
Assert::eq($a->product(), array_product($a));
$array = array("Neo", "Morpheus", "Trinity", "Cypher", "Tank");
Assert::notEq($array->rand(2), array_rand($array, 2));
$array = array(1, 2, 3, 4, 5);
Assert::eq($array->reduce('_sum'), array_reduce($array, '_sum'));
$base = array("orange", "banana", "apple", "raspberry");
$replacements = array(0 => "pineapple", 4 => "cherry");
$replacements2 = array(0 => "grape");
Assert::eq($base->replace($replacements, $replacements2), array_replace($base, $replacements, $replacements2));
$array = array("php", 4.0, array("green", "red"));
$rev = $array->reverse();
Assert::eq($rev->reverse(), array_reverse(array_reverse($array)));
$array = array(0 => 'blue', 1 => 'red', 2 => 'green', 3 => 'red');
Assert::eq($array->search('green'), array_search('green', $array));
$array = array("a", "b", "c", "d", "e");
Assert::eq($array->slice(-2, 1), array_slice($array, -2, 1));
$a = array(2, 4, 6, 8);
Assert::eq($a->sum(), array_sum($a));
$array = ["a" => "green", "red", "b" => "green", "blue", "red"];
Assert::eq($array->unique(), array_unique($array));
Assert::eq($array->count(), count($array));
$array = array("Mac", "NT", "Irix", "Linux");
Assert::eq($array->contains("Mac"), in_array("Mac", $array));
Assert::eq($array->join(","), implode(",", $array));
$array = [];
Assert::true($array->isEmpty());
$fruits1 = array("lemon", "orange", "banana", "apple");
$fruits2 = array("lemon", "orange", "banana", "apple");
sort($fruits2);
Assert::eq($fruits1->sort(), $fruits2);
Assert::eq($fruits1, $fruits2);
$stack = array("orange", "banana", "apple", "raspberry");
Assert::eq($stack->pop(), 'raspberry');
Assert::eq(array_pop($stack), 'apple');
$array = array("red","green");
$array->push("blue");
Assert::eq($array, ["red","green", "blue"]);
array_push($array, "yellow");
Assert::eq($array, ["red","green", "blue", "yellow"]);
$stack = array("orange", "banana", "apple", "raspberry");
Assert::eq($stack->shift(), 'orange');
Assert::eq(array_shift($stack), 'banana');
$queue = ["orange", "banana"];
$queue->unshift("orange");
Assert::eq($queue, ["orange", "orange", "banana"]);
array_unshift($queue, "orange");
Assert::eq($queue, ["orange", "orange", "orange", "banana"]);
$array1 = array("red", "green", "blue", "yellow");
$array2 = array("red", "green", "blue", "yellow");
Assert::eq($array1->splice(2), array_splice($array2, 2));
Assert::eq($array1, $array2);
$find = array("Hello","world");
$replace = array("B");
$arr = array("Hello","world","!");
Assert::eq($arr->replaceStr($find, $replace), str_replace($find, $replace, $arr));
}
?>
--EXPECT--