public function testSample()
{
$list = ['a', 'b', 'c', 'd', 'e'];
$this->assertTrue(isList(sample($list, 3)));
$iterator = new \ArrayIterator($list);
$this->assertTrue(isList(sample($iterator, 3)));
foreach (sample($iterator, 3) as $item) {
$this->assertTrue(in_array($item, $list));
}
$sample = sample($list, 3, true);
foreach ($sample as $k => $element) {
$this->assertTrue($list[$k] === $element);
}
$this->assertEquals([], sample(['a', 'b', 'c'], 0));
$appearances = array_fill_keys($list, 0);
for ($i = 0; $i < 50000; ++$i) {
$sample = sample($list, 3);
foreach ($sample as $item) {
++$appearances[$item];
}
}
foreach ($appearances as $item => $rate) {
$this->assertEquals(30000, $rate, '', 500);
}
}