public function testShrinksTheOuterGenerator()
{
$generator = new BindGenerator(new ChooseGenerator(0, 5), function ($n) {
return new ChooseGenerator($n, $n + 10);
});
$value = $generator->__invoke($this->size, $this->rand);
for ($i = 0; $i < 20; $i++) {
$this->assertInternalType('integer', $value->unbox());
$this->assertTrue($generator->contains($value), "Element {$value} should be contained in the Generator");
$value = $generator->shrink($value);
}
$this->assertLessThanOrEqual(5, $value->unbox());
}