diff options
Diffstat (limited to 'www/wiki/tests/phpunit/includes/libs/ArrayUtilsTest.php')
-rw-r--r-- | www/wiki/tests/phpunit/includes/libs/ArrayUtilsTest.php | 310 |
1 files changed, 310 insertions, 0 deletions
diff --git a/www/wiki/tests/phpunit/includes/libs/ArrayUtilsTest.php b/www/wiki/tests/phpunit/includes/libs/ArrayUtilsTest.php new file mode 100644 index 00000000..d5ac77bb --- /dev/null +++ b/www/wiki/tests/phpunit/includes/libs/ArrayUtilsTest.php @@ -0,0 +1,310 @@ +<?php +/** + * Test class for ArrayUtils class + * + * @group Database + */ +class ArrayUtilsTest extends PHPUnit\Framework\TestCase { + + use MediaWikiCoversValidator; + + /** + * @covers ArrayUtils::findLowerBound + * @dataProvider provideFindLowerBound + */ + function testFindLowerBound( + $valueCallback, $valueCount, $comparisonCallback, $target, $expected + ) { + $this->assertSame( + ArrayUtils::findLowerBound( + $valueCallback, $valueCount, $comparisonCallback, $target + ), $expected + ); + } + + function provideFindLowerBound() { + $indexValueCallback = function ( $size ) { + return function ( $val ) use ( $size ) { + $this->assertTrue( $val >= 0 ); + $this->assertTrue( $val < $size ); + return $val; + }; + }; + $comparisonCallback = function ( $a, $b ) { + return $a - $b; + }; + + return [ + [ + $indexValueCallback( 0 ), + 0, + $comparisonCallback, + 1, + false, + ], + [ + $indexValueCallback( 1 ), + 1, + $comparisonCallback, + -1, + false, + ], + [ + $indexValueCallback( 1 ), + 1, + $comparisonCallback, + 0, + 0, + ], + [ + $indexValueCallback( 1 ), + 1, + $comparisonCallback, + 1, + 0, + ], + [ + $indexValueCallback( 2 ), + 2, + $comparisonCallback, + -1, + false, + ], + [ + $indexValueCallback( 2 ), + 2, + $comparisonCallback, + 0, + 0, + ], + [ + $indexValueCallback( 2 ), + 2, + $comparisonCallback, + 0.5, + 0, + ], + [ + $indexValueCallback( 2 ), + 2, + $comparisonCallback, + 1, + 1, + ], + [ + $indexValueCallback( 2 ), + 2, + $comparisonCallback, + 1.5, + 1, + ], + [ + $indexValueCallback( 3 ), + 3, + $comparisonCallback, + 1, + 1, + ], + [ + $indexValueCallback( 3 ), + 3, + $comparisonCallback, + 1.5, + 1, + ], + [ + $indexValueCallback( 3 ), + 3, + $comparisonCallback, + 2, + 2, + ], + [ + $indexValueCallback( 3 ), + 3, + $comparisonCallback, + 3, + 2, + ], + ]; + } + + /** + * @covers ArrayUtils::arrayDiffAssocRecursive + * @dataProvider provideArrayDiffAssocRecursive + */ + function testArrayDiffAssocRecursive( $expected ) { + $args = func_get_args(); + array_shift( $args ); + $this->assertEquals( call_user_func_array( + 'ArrayUtils::arrayDiffAssocRecursive', $args + ), $expected ); + } + + function provideArrayDiffAssocRecursive() { + return [ + [ + [], + [], + [], + ], + [ + [], + [], + [], + [], + ], + [ + [ 1 ], + [ 1 ], + [], + ], + [ + [ 1 ], + [ 1 ], + [], + [], + ], + [ + [], + [], + [ 1 ], + ], + [ + [], + [], + [ 1 ], + [ 2 ], + ], + [ + [ '' => 1 ], + [ '' => 1 ], + [], + ], + [ + [], + [], + [ '' => 1 ], + ], + [ + [ 1 ], + [ 1 ], + [ 2 ], + ], + [ + [], + [ 1 ], + [ 2 ], + [ 1 ], + ], + [ + [], + [ 1 ], + [ 1, 2 ], + ], + [ + [ 1 => 1 ], + [ 1 => 1 ], + [ 1 ], + ], + [ + [], + [ 1 => 1 ], + [ 1 ], + [ 1 => 1 ], + ], + [ + [], + [ 1 => 1 ], + [ 1, 1, 1 ], + ], + [ + [], + [ [] ], + [], + ], + [ + [], + [ [ [] ] ], + [], + ], + [ + [ 1, [ 1 ] ], + [ 1, [ 1 ] ], + [], + ], + [ + [ 1 ], + [ 1, [ 1 ] ], + [ 2, [ 1 ] ], + ], + [ + [], + [ 1, [ 1 ] ], + [ 2, [ 1 ] ], + [ 1, [ 2 ] ], + ], + [ + [ 1 ], + [ 1, [] ], + [ 2 ], + ], + [ + [], + [ 1, [] ], + [ 2 ], + [ 1 ], + ], + [ + [ 1, [ 1 => 2 ] ], + [ 1, [ 1, 2 ] ], + [ 2, [ 1 ] ], + ], + [ + [ 1 ], + [ 1, [ 1, 2 ] ], + [ 2, [ 1 ] ], + [ 2, [ 1 => 2 ] ], + ], + [ + [ 1 => [ 1, 2 ] ], + [ 1, [ 1, 2 ] ], + [ 1, [ 2 ] ], + ], + [ + [ 1 => [ [ 2, 3 ], 2 ] ], + [ 1, [ [ 2, 3 ], 2 ] ], + [ 1, [ 2 ] ], + ], + [ + [ 1 => [ [ 2 ], 2 ] ], + [ 1, [ [ 2, 3 ], 2 ] ], + [ 1, [ [ 1 => 3 ] ] ], + ], + [ + [ 1 => [ 1 => 2 ] ], + [ 1, [ [ 2, 3 ], 2 ] ], + [ 1, [ [ 1 => 3, 0 => 2 ] ] ], + ], + [ + [ 1 => [ 1 => 2 ] ], + [ 1, [ [ 2, 3 ], 2 ] ], + [ 1, [ [ 1 => 3 ] ] ], + [ 1 => [ [ 2 ] ] ], + ], + [ + [], + [ 1, [ [ 2, 3 ], 2 ] ], + [ 1 => [ 1 => 2, 0 => [ 1 => 3, 0 => 2 ] ], 0 => 1 ], + ], + [ + [], + [ 1, [ [ 2, 3 ], 2 ] ], + [ 1 => [ 1 => 2 ] ], + [ 1 => [ [ 1 => 3 ] ] ], + [ 1 => [ [ 2 ] ] ], + [ 1 ], + ], + ]; + } +} |