1+ <?php
2+
3+ namespace tests \Unit \Utils ;
4+
5+ use PHPUnit \Framework \TestCase ;
6+ use function Takuya \Utils \array_map_with_key ;
7+ use function Takuya \Utils \array_map_on_keys ;
8+ use function Takuya \Utils \array_subtract ;
9+ use function Takuya \Utils \array_column_select ;
10+
11+ class ArrayMapTest extends TestCase {
12+
13+ public function test_array_map_with_key () {
14+ $ array = ['a ' => 1 , 'b ' => 2 ];
15+
16+ $ result = array_map_with_key ( $ array , fn ( $ k , $ v ) => $ k == 'b ' ? $ v *$ v : $ v );
17+ $ this ->assertEquals ( ['a ' => 1 , 'b ' => 4 ], $ result );
18+
19+ $ result = array_map_with_key ( $ array , fn ( $ k , $ v ) => $ v );
20+ $ this ->assertEquals ( $ array , $ result );
21+ }
22+
23+ public function test_array_map_on_keys () {
24+ $ array = ['a ' => 1 , 'b ' => 2 ];
25+ $ result = array_map_on_keys ( ['a ' ], $ array , fn ( $ e ) => $ e *2 );
26+ $ this ->assertEquals ( ['a ' => 2 , 'b ' => 2 ], $ result );
27+ }
28+
29+ public function test_array_subtract () {
30+ $ p = [['a ' => 1 ], ['b ' => 1 ], ['c ' => 1 ]];
31+ $ q = [['a ' => 1 ], ['b ' => 1 ], ['d ' => 1 ]];
32+ $ r = array_subtract ( $ p , $ q );
33+ $ this ->assertEquals ( [['c ' => 1 ]], $ r );
34+ }
35+
36+ public function test_array_column_select () {
37+ $ x = [
38+ ['a ' => 1 , 'b ' => 1 , 'c ' => 1 ],
39+ ['a ' => 2 , 'b ' => 2 , 'c ' => 2 ],
40+ ];
41+ $ y = array_column_select ( ['a ' , 'b ' ], $ x );
42+ $ this ->assertEquals ( [['a ' => 1 , 'b ' => 1 ,],['a ' => 2 , 'b ' => 2 ,],], $ y );
43+ }
44+ }
0 commit comments