/** * @dataProvider someStrings */ public function testAggregateValuesString(\Pinq\ITraversable $traversable, array $data) { $this->assertEquals(true, $traversable->all(), 'All'); $this->assertEquals(true, $traversable->any(), 'Any'); $this->assertEquals(array_sum(array_map('strlen', $data)) / count($data), $traversable->average('strlen'), 'Average string length'); $this->assertEquals(array_sum(array_map('strlen', $data)), $traversable->sum('strlen'), 'Sum string length'); $this->assertEquals(array_unique($data), $traversable->unique()->asArray(), 'Unique'); $this->assertEquals(implode('- -- -', $data), $traversable->implode('- -- -'), 'String implode'); }
/** * @dataProvider notUniqueData */ public function testThatUniqueValuesPreservesKeys(\Pinq\ITraversable $values, array $data) { $uniqueValuesArray = $values->unique()->asArray(); $uniqueData = []; foreach ($data as $key => $value) { if (!in_array($value, $uniqueData, true)) { $uniqueData[$key] = $value; } } $this->assertSame(array_keys($uniqueData), array_keys($uniqueValuesArray)); }
public function visitUnique(Segments\Unique $query) { $this->traversable = $this->traversable->unique(); }