예제 #1
0
    public function testGetRegexpMain_GetCorrectRegexp()
    {
        $myAdapter = Helper::getMockCustomAdapter();
        $myPlaceholders = new PlaceholderCollection();
        $myPlaceholders->addPlaceholder(Helper::getMockCustomPlaceholder('?a'));
        $myPlaceholders->addPlaceholder(Helper::getMockCustomPlaceholder('?b'));
        $transformer = new QueryTransformer($myAdapter, $myPlaceholders);
        $expected = <<<EXPECTED
{
            (?>
                # Ignored chunks.
                (?>
                    # Comment.
                    -- [^\\r\\n]*
                )
                  |
                (?>
                    # DB-specifics.
                    " (?> [^"\\\\]+|\\\\"|\\\\)* "
                )
            )
              |
            (?>
                # Optional blocks
                \\{
                    # Use "+" here, not "*"! Else nested blocks are not processed well.
                    ( (?> (?>[^{}]+)  |  (?R) )* )             #1
                \\}
            )
              |
            (?>
                # Placeholder
                (\\?) ( [ab]? )                           #2 #3
            )
        }sx
EXPECTED;
        $this->assertEquals($expected, $transformer->getRegexpMain());
    }