['A', 1], 'Mismatched sortIndex count' => [[1, 2, 3, 4], 1], 'Non-numeric sortOrder' => [[1, 2, 3], 'A'], 'Invalid negative sortOrder' => [[1, 2, 3], -2], 'Zero sortOrder' => [[1, 2, 3], 0], 'Invalid positive sortOrder' => [[1, 2, 3], 2], ]; } /** * @dataProvider providerSortByRow */ public function testSortByRow(array $expectedResult, array $matrix, array $sortIndex, int $sortOrder = Sort::ORDER_ASCENDING): void { $result = Sort::sortBy($matrix, $sortIndex, $sortOrder); self::assertSame($expectedResult, $result); } public function providerSortByRow(): array { return [ [ [ ['Fritz', 19], ['Xi', 19], ['Amy', 22], ['Srivan', 39], ['Tom', 52], ['Fred', 65], ['Hector', 66], ['Sal', 73], ], $this->sampleDataForRow(), array_column($this->sampleDataForRow(), 1), ], [ [ ['Amy', 22], ['Fred', 65], ['Fritz', 19], ['Hector', 66], ['Sal', 73], ['Srivan', 39], ['Tom', 52], ['Xi', 19], ], $this->sampleDataForRow(), array_column($this->sampleDataForRow(), 0), ], [ [ ['Amy', 22], ['Fred', 65], ['Fritz', 19], ['Hector', 66], ['Sal', 73], ['Srivan', 39], ['Tom', 52], ['Xi', 19], ], $this->sampleDataForRow(), ['Tom', 'Fred', 'Amy', 'Sal', 'Fritz', 'Srivan', 'Xi', 'Hector'], ], [ [ ['Amy', 22], ['Fred', 65], ['Fritz', 19], ['Hector', 66], ['Sal', 73], ['Srivan', 39], ['Tom', 52], ['Xi', 19], ], $this->sampleDataForRow(), [['Tom'], ['Fred'], ['Amy'], ['Sal'], ['Fritz'], ['Srivan'], ['Xi'], ['Hector']], ], ]; } private function sampleDataForRow(): array { return [ ['Tom', 52], ['Fred', 65], ['Amy', 22], ['Sal', 73], ['Fritz', 19], ['Srivan', 39], ['Xi', 19], ['Hector', 66], ]; } }