diff --git a/src/c/select.php b/src/c/select.php index 618c8cdc..329e9627 100644 --- a/src/c/select.php +++ b/src/c/select.php @@ -111,93 +111,6 @@ function first_keyx( invariant_violation('%s: Expected at least one element.', __FUNCTION__); } -/** - * Returns the largest element of the given Traversable, or null if the - * Traversable is empty. - * - * For non-numeric elements, see C\max_by. - */ -function max( - Traversable $traversable, -): ?T { - $result = null; - foreach ($traversable as $value) { - if ($result === null || $value > $result) { - $result = $value; - } - } - return $result; -} - -/** - * Returns the largest element of the given Traversable, or null if the - * Traversable is empty. - * - * The value for comparison is determined by the given function. In the case of - * duplicate numeric keys, later values overwrite previous ones. - * - * For numeric elements, see C\max. - */ -function max_by( - Traversable $traversable, - (function(T): num) $num_func, -): ?T { - $result = null; - $result_num = null; - foreach ($traversable as $value) { - $value_num = $num_func($value); - if ($result_num === null || $value_num >= $result_num) { - $result = $value; - $result_num = $value_num; - } - } - return $result; - -} - -/** - * Returns the smallest element of the given Traversable, or null if the - * Traversable is empty. - * - * For non-numeric elements, see C\min_by. - */ -function min( - Traversable $traversable, -): ?T { - $result = null; - foreach ($traversable as $value) { - if ($result === null || $value < $result) { - $result = $value; - } - } - return $result; -} - -/** - * Returns the smallest element of the given Traversable, or null if the - * Traversable is empty. - * - * The value for comparison is determined by the given function. In the case of - * duplicate numeric keys, later values overwrite previous ones. - * - * For numeric elements, see C\min. - */ -function min_by( - Traversable $traversable, - (function(T): num) $num_func, -): ?T { - $result = null; - $result_num = null; - foreach ($traversable as $value) { - $value_num = $num_func($value); - if ($result_num === null || $value_num <= $result_num) { - $result = $value; - $result_num = $value_num; - } - } - return $result; -} - /** * Returns the last element of the given Traversable, or null if the * Traversable is empty. diff --git a/tests/c/CSelectTest.php b/tests/c/CSelectTest.php index 12490c95..8d31b92a 100644 --- a/tests/c/CSelectTest.php +++ b/tests/c/CSelectTest.php @@ -266,126 +266,6 @@ public function testFirstKeyx( } } - public static function provideTestMax(): array { - return array( - tuple( - array(), - null, - ), - tuple( - Set {8, 6, 7, 5, 3, 0, 9}, - 9, - ), - tuple( - HackLibTestTraversables::getIterator( - array(8, 6, 7, 5, 3, 0, 9), - ), - 9, - ), - ); - } - - /** @dataProvider provideTestMax */ - public function testMax( - Traversable $traversable, - ?T $expected, - ): void { - expect(C\max($traversable))->toBeSame($expected); - } - - public static function provideTestMaxBy(): array { - return array( - tuple( - array(), - $x ==> $x, - null, - ), - tuple( - vec['the', 'quick', 'brown', 'fox'], - fun('strlen'), - 'brown', - ), - tuple( - HackLibTestTraversables::getIterator( - array('the', 'quick', 'brown', 'fox'), - ), - fun('strlen'), - 'brown', - ), - ); - } - - /** @dataProvider provideTestMaxBy */ - public function testMaxBy( - Traversable $traversable, - (function(T): num) $num_func, - ?T $expected, - ): void { - expect(C\max_by($traversable, $num_func))->toBeSame($expected); - } - - public static function provideTestMin(): array { - return array( - tuple( - array(), - null, - ), - tuple( - Set {8, 6, 7, 5, 3, 0, 9}, - 0, - ), - tuple( - HackLibTestTraversables::getIterator( - array(8, 6, 7, 5, 3, 0, 9), - ), - 0, - ), - tuple( - Vector {8, 6, 7, -5, -3, 0, 9}, - -5, - ), - ); - } - - /** @dataProvider provideTestMin */ - public function testMin( - Traversable $traversable, - ?T $expected, - ): void { - expect(C\min($traversable))->toBeSame($expected); - } - - public static function provideTestMinBy(): array { - return array( - tuple( - array(), - $x ==> $x, - null, - ), - tuple( - vec['the', 'quick', 'brown', 'fox'], - fun('strlen'), - 'fox', - ), - tuple( - HackLibTestTraversables::getIterator( - array('the', 'quick', 'brown', 'fox'), - ), - fun('strlen'), - 'fox', - ), - ); - } - - /** @dataProvider provideTestMinBy */ - public function testMinBy( - Traversable $traversable, - (function(T): num) $num_func, - ?T $expected, - ): void { - expect(C\min_by($traversable, $num_func))->toBeSame($expected); - } - public static function provideTestLast(): array { return array( tuple(