public function testGeneratedStructureWithElse()
 {
     $regex = REBuilder\REBuilder::parse("/a(?(?=a)a|b)+/");
     $this->assertInstanceOf("REBuilder\\Pattern\\Regex", $regex);
     $children = $regex->getChildren();
     $this->assertSame(2, count($children));
     $this->assertInstanceOf("REBuilder\\Pattern\\Char", $children[0]);
     $this->assertSame("a", $children[0]->getChar());
     $this->assertInstanceOf("REBuilder\\Pattern\\ConditionalSubPattern", $children[1]);
     $this->assertInstanceOf("REBuilder\\Pattern\\Repetition\\OneOrMore", $children[1]->getRepetition());
     $children = $children[1]->getChildren();
     $this->assertSame(3, count($children));
     $this->assertInstanceOf("REBuilder\\Pattern\\Assertion", $children[0]);
     $this->assertSame(true, $children[0]->getLookahead());
     $this->assertSame(false, $children[0]->getNegate());
     $assertionChildren = $children[0]->getChildren();
     $this->assertInstanceOf("REBuilder\\Pattern\\Char", $assertionChildren[0]);
     $this->assertSame("a", $assertionChildren[0]->getChar());
     $this->assertInstanceOf("REBuilder\\Pattern\\ConditionalThen", $children[1]);
     $thenChildren = $children[1]->getChildren();
     $this->assertInstanceOf("REBuilder\\Pattern\\Char", $thenChildren[0]);
     $this->assertSame("a", $thenChildren[0]->getChar());
     $this->assertInstanceOf("REBuilder\\Pattern\\ConditionalElse", $children[2]);
     $elseChildren = $children[2]->getChildren();
     $this->assertInstanceOf("REBuilder\\Pattern\\Char", $elseChildren[0]);
     $this->assertSame("b", $elseChildren[0]->getChar());
     $this->assertSame("/a(?(?=a)a|b)+/", $regex->render());
 }
Esempio n. 2
0
 public function testGeneratedStructure()
 {
     $regex = REBuilder\REBuilder::parse("/\\a/i");
     $this->assertInstanceOf("REBuilder\\Pattern\\Regex", $regex);
     $children = $regex->getChildren();
     $this->assertSame(1, count($children));
     $this->assertInstanceOf("REBuilder\\Pattern\\NonPrintingChar", $children[0]);
     $this->assertSame("a", $children[0]->getIdentifier());
 }
Esempio n. 3
0
 public function testCharEscaped()
 {
     $regex = REBuilder\REBuilder::parse("/\\*/i");
     $children = $regex->getChildren();
     $this->assertSame(1, count($children));
     $this->assertInstanceOf("REBuilder\\Pattern\\Char", $children[0]);
     $this->assertSame("*", $children[0]->getChar());
     $this->assertSame("/\\*/i", $regex->render());
 }
Esempio n. 4
0
 public function testGeneratedStructureLazy()
 {
     $regex = REBuilder\REBuilder::parse("/a+?/");
     $this->assertInstanceOf("REBuilder\\Pattern\\Regex", $regex);
     $children = $regex->getChildren();
     $this->assertSame(1, count($children));
     $this->assertInstanceOf("REBuilder\\Pattern\\Repetition\\OneOrMore", $children[0]->getRepetition());
     $this->assertSame(true, $children[0]->getRepetition()->getLazy());
 }
Esempio n. 5
0
 public function testInvalidNumberNotParsedAsRepetition()
 {
     $regex = REBuilder\REBuilder::parse("/a{1,/");
     $this->assertInstanceOf("REBuilder\\Pattern\\Regex", $regex);
     $children = $regex->getChildren();
     $this->assertSame(1, count($children));
     $this->assertInstanceOf("REBuilder\\Pattern\\Char", $children[0]);
     $this->assertSame("a{1,", $children[0]->getChar());
 }
Esempio n. 6
0
 public function testGeneratedStructure()
 {
     $regex = REBuilder\REBuilder::parse("/\\C*/i");
     $this->assertInstanceOf("REBuilder\\Pattern\\Regex", $regex);
     $children = $regex->getChildren();
     $this->assertSame(1, count($children));
     $this->assertInstanceOf("REBuilder\\Pattern\\Byte", $children[0]);
     $this->assertInstanceOf("REBuilder\\Pattern\\Repetition\\ZeroOrMore", $children[0]->getRepetition());
     $this->assertSame("/\\C*/i", $regex->render());
 }
Esempio n. 7
0
 public function testEscapedChar()
 {
     $regex = REBuilder\REBuilder::parse("/\\c\\+/i");
     $this->assertInstanceOf("REBuilder\\Pattern\\Regex", $regex);
     $children = $regex->getChildren();
     $this->assertSame(1, count($children));
     $this->assertInstanceOf("REBuilder\\Pattern\\ControlChar", $children[0]);
     $this->assertSame("+", $children[0]->getChar());
     $this->assertSame(null, $children[0]->getRepetition());
     $this->assertSame("/\\c\\+/i", $regex->render());
 }
Esempio n. 8
0
 public function testOctalCharFollowedByNumber()
 {
     $regex = REBuilder\REBuilder::parse('/\\0111/');
     $this->assertInstanceOf("REBuilder\\Pattern\\Regex", $regex);
     $children = $regex->getChildren();
     $this->assertSame(2, count($children));
     $this->assertInstanceOf("REBuilder\\Pattern\\OctalChar", $children[0]);
     $this->assertSame("011", $children[0]->getChar());
     $this->assertInstanceOf("REBuilder\\Pattern\\Char", $children[1]);
     $this->assertSame("1", $children[1]->getChar());
     $this->assertSame('/\\0111/', $regex->render());
 }
Esempio n. 9
0
 public function testGeneratedStructure()
 {
     $regex = REBuilder\REBuilder::parse("/\\d\\w\\s/i");
     $this->assertInstanceOf("REBuilder\\Pattern\\Regex", $regex);
     $children = $regex->getChildren();
     $this->assertSame(3, count($children));
     $this->assertInstanceOf("REBuilder\\Pattern\\GenericCharType", $children[0]);
     $this->assertSame("d", $children[0]->getIdentifier());
     $this->assertInstanceOf("REBuilder\\Pattern\\GenericCharType", $children[1]);
     $this->assertSame("w", $children[1]->getIdentifier());
     $this->assertInstanceOf("REBuilder\\Pattern\\GenericCharType", $children[2]);
     $this->assertSame("s", $children[2]->getIdentifier());
     $this->assertSame("/\\d\\w\\s/i", $regex->render());
 }
Esempio n. 10
0
 public function testLookbehindAssertion()
 {
     $regex = REBuilder\REBuilder::parse("/(?<=(?<!a)b)c/");
     $this->assertInstanceOf("REBuilder\\Pattern\\Regex", $regex);
     $children = $regex->getChildren();
     $this->assertSame(2, count($children));
     $this->assertInstanceOf("REBuilder\\Pattern\\Char", $children[1]);
     $this->assertSame("c", $children[1]->getChar());
     $this->assertInstanceOf("REBuilder\\Pattern\\Assertion", $children[0]);
     $this->assertSame(false, $children[0]->getLookahead());
     $this->assertSame(false, $children[0]->getNegate());
     $children = $children[0]->getChildren();
     $this->assertSame(2, count($children));
     $this->assertInstanceOf("REBuilder\\Pattern\\Char", $children[1]);
     $this->assertSame("b", $children[1]->getChar());
     $this->assertInstanceOf("REBuilder\\Pattern\\Assertion", $children[0]);
     $this->assertSame(false, $children[0]->getLookahead());
     $this->assertSame(true, $children[0]->getNegate());
     $children = $children[0]->getChildren();
     $this->assertSame(1, count($children));
     $this->assertInstanceOf("REBuilder\\Pattern\\Char", $children[0]);
     $this->assertSame("a", $children[0]->getChar());
     $this->assertSame("/(?<=(?<!a)b)c/", $regex->render());
 }
Esempio n. 11
0
 /**
  * @dataProvider invalidRepetitions
  * @expectedException REBuilder\Exception\InvalidRepetition
  */
 public function testInvalidRepetition($pattern)
 {
     REBuilder\REBuilder::parse("/{$pattern}/");
 }
Esempio n. 12
0
 /**
  * @dataProvider invalidBackReferences
  * @expectedException REBuilder\Exception\Generic
  */
 public function testInvalidReferenceException($pattern)
 {
     REBuilder\REBuilder::parse("/{$pattern}/");
 }
Esempio n. 13
0
 /**
  * @expectedException REBuilder\Exception\InvalidRepetition
  */
 public function testRepetitionNotAllowedOnParse()
 {
     REBuilder\REBuilder::parse("/\\b*/i");
 }
Esempio n. 14
0
 /**
  * @expectedException REBuilder\Exception\EmptyRegex
  */
 public function testEmptyRegexException()
 {
     REBuilder\REBuilder::parse("");
 }
Esempio n. 15
0
 /**
  * @dataProvider invalidRecursivePatterns
  * @expectedException REBuilder\Exception\Generic
  */
 public function testInvalidRecursivePatterns($pattern)
 {
     REBuilder\REBuilder::parse("/{$pattern}/");
 }
Esempio n. 16
0
 /**
  * @expectedException REBuilder\Exception\Generic
  */
 public function testInvalidAlternativeSyntax()
 {
     REBuilder\REBuilder::parse('/\\x{61/');
 }
Esempio n. 17
0
 /**
  * @expectedException REBuilder\Exception\Generic
  */
 public function testUnclosedCommentException()
 {
     REBuilder\REBuilder::parse("/a(?#test/");
 }
Esempio n. 18
0
 /**
  * @dataProvider invalidRegexProvider
  * @expectedException REBuilder\Exception\Generic
  */
 public function testInvalidRegexException($invalid)
 {
     REBuilder\REBuilder::parse("/{$invalid}/");
 }
Esempio n. 19
0
 /**
  * @expectedException REBuilder\Exception\Generic
  */
 public function testUnclosedCharClass()
 {
     REBuilder\REBuilder::parse("/[a/");
 }
Esempio n. 20
0
 /**
  * @expectedException REBuilder\Exception\InvalidRepetition
  */
 public function testNotSupportsReptetitionOnParse()
 {
     REBuilder\REBuilder::parse("/a|*/");
 }
Esempio n. 21
0
 /**
  * @expectedException REBuilder\Exception\InvalidRepetition
  */
 public function testInvalidRepetition()
 {
     REBuilder\REBuilder::parse("/(*)/");
 }
Esempio n. 22
0
 /**
  * @expectedException REBuilder\Exception\Generic
  */
 public function testWrongPosixCharClass()
 {
     REBuilder\REBuilder::parse("/[[:wrong:]]/");
 }