[] $find * @param Token[] $replace * * @dataProvider replaceTokensProvider */ public function testReplaceTokens(string $list, array $find, array $replace, string $expected): void { $this->assertEquals($expected, Tokens::replaceTokens($list, $find, $replace)); } /** * @return array[]|Token[]>> * @psalm-return list>, Token[], string}> */ public function replaceTokensProvider(): array { return [ [ 'SELECT * FROM /*x*/a/*c*/.b', [ ['value_str' => 'a'], ['token' => '.'], ], [ new Token('c'), new Token('.'), ], 'SELECT * FROM /*x*/c.b', ], ]; } /** * @param array $pattern * * @dataProvider matchProvider */ public function testMatch(Token $token, array $pattern, bool $expected): void { $this->assertSame($expected, Tokens::match($token, $pattern)); } /** * @return array>> * @psalm-return list, bool}> */ public function matchProvider(): array { return [ [ new Token(''), [], true, ], [ new Token('"abc"', Token::TYPE_STRING, Token::FLAG_STRING_DOUBLE_QUOTES), ['token' => '"abc"'], true, ], [ new Token('"abc"', Token::TYPE_STRING, Token::FLAG_STRING_DOUBLE_QUOTES), ['value' => 'abc'], true, ], [ new Token('"abc"', Token::TYPE_STRING, Token::FLAG_STRING_DOUBLE_QUOTES), ['value_str' => 'ABC'], true, ], [ new Token('"abc"', Token::TYPE_STRING, Token::FLAG_STRING_DOUBLE_QUOTES), ['type' => Token::TYPE_STRING], true, ], [ new Token('"abc"', Token::TYPE_STRING, Token::FLAG_STRING_DOUBLE_QUOTES), ['flags' => Token::FLAG_STRING_DOUBLE_QUOTES], true, ], [ new Token('"abc"', Token::TYPE_STRING, Token::FLAG_STRING_DOUBLE_QUOTES), ['token' => '"abcd"'], false, ], [ new Token('"abc"', Token::TYPE_STRING, Token::FLAG_STRING_DOUBLE_QUOTES), ['value' => 'abcd'], false, ], [ new Token('"abc"', Token::TYPE_STRING, Token::FLAG_STRING_DOUBLE_QUOTES), ['value_str' => 'ABCd'], false, ], [ new Token('"abc"', Token::TYPE_STRING, Token::FLAG_STRING_DOUBLE_QUOTES), ['type' => Token::TYPE_NUMBER], false, ], [ new Token('"abc"', Token::TYPE_STRING, Token::FLAG_STRING_DOUBLE_QUOTES), ['flags' => Token::FLAG_STRING_SINGLE_QUOTES], false, ], ]; } }