public function testCanBeRepresentedOnOutput()
 {
     $generatedValue = GeneratedValue::fromValueAndInput(422, GeneratedValue::fromJustValue(211), 'map');
     $this->assertInternalType('string', $generatedValue->__toString());
     $this->assertRegExp('/value.*422/', $generatedValue->__toString());
     $this->assertRegExp('/211/', $generatedValue->__toString());
     $this->assertRegExp('/generator.*map/', $generatedValue->__toString());
 }
 public function testGivesUpShrinkingIfTheFilterIsNotSatisfiedTooManyTimes()
 {
     $generator = new SuchThatGenerator(function ($n) {
         return $n % 250 == 0;
     }, new ChooseGenerator(0, 1000));
     $unshrinkable = GeneratedValue::fromJustValue(470);
     $this->assertEquals($unshrinkable, $generator->shrink($unshrinkable));
 }
 public function testContainsOnlyTheSpecifiedRange()
 {
     $generator = CharacterGenerator::ascii();
     $this->assertTrue($generator->contains(GeneratedValue::fromJustValue("")));
     $this->assertTrue($generator->contains(GeneratedValue::fromJustValue("A")));
     $this->assertTrue($generator->contains(GeneratedValue::fromJustValue("b")));
     $this->assertFalse($generator->contains(GeneratedValue::fromJustValue("é")));
 }
 public function testGeneratesVectorWithGivenSizeAndElementsFromGivenGenerator()
 {
     $generator = $this->vectorGenerator;
     $vector = $generator($this->size, $this->rand);
     $this->assertSame($this->vectorSize, count($vector->unbox()));
     foreach ($vector->unbox() as $element) {
         $this->assertTrue($this->elementGenerator->contains(GeneratedValue::fromJustValue($element)));
     }
 }
 public function testContainsAnEmptySet()
 {
     $generator = new SetGenerator($this->singleElementGenerator);
     $this->assertTrue($generator->contains(GeneratedValue::fromJustValue([])));
 }
 public function testContainsAllTheNamesInTheSpecifiedDataSet()
 {
     $generator = NamesGenerator::defaultDataSet();
     $this->assertTrue($generator->contains(GeneratedValue::fromJustValue("Bob")));
     $this->assertFalse($generator->contains(GeneratedValue::fromJustValue("Daitarn")));
 }
 public function testCannotShrinkTheEmptyString()
 {
     $generator = new StringGenerator();
     $minimumValue = GeneratedValue::fromJustValue('');
     $this->assertEquals($minimumValue, $generator->shrink($minimumValue));
 }
 /**
  * @expectedException DomainException
  */
 public function testShrinkOnlyAcceptsElementsOfTheDomainAsParameters()
 {
     $generator = new ConstantGenerator(5);
     $generator->shrink(GeneratedValue::fromJustValue(10));
 }
 /**
  * @expectedException DomainException
  */
 public function testExceptionWhenTryingToShrinkValuesOutsideOfTheDomain()
 {
     $generator = new TupleGenerator([$this->generatorForSingleElement, $this->generatorForSingleElement]);
     $generator->shrink(GeneratedValue::fromJustValue([1, 2, 3]));
 }
 /**
  * @expectedException DomainException
  */
 public function testExceptionWhenTryingToShrinkValuesOutsideOfTheDomain()
 {
     $generator = new ChooseGenerator(100, 200);
     $generator->shrink(GeneratedValue::fromJustValue(300));
 }
 /**
  * @expectedException DomainException
  */
 public function testExceptionWhenTryingToShrinkValuesOutsideOfTheDomain()
 {
     $generator = ElementsGenerator::fromArray(['A', 1]);
     $generator->shrink(GeneratedValue::fromJustValue(2));
 }
 public function testShrinkingIsNotImplementedYet()
 {
     $generator = new RegexGenerator(".*");
     $word = GeneratedValue::fromJustValue("something");
     $this->assertEquals($word, $generator->shrink($word));
 }