'[*]', SyntaxErrorException::
unexpectedToken('"|"',
new Token(Token::TYPE_DELIMITER, ']', 2
))->
getMessage()],
['[foo|]', SyntaxErrorException::
unexpectedToken('identifier',
new Token(Token::TYPE_DELIMITER, ']', 5
))->
getMessage()],
['[#]', SyntaxErrorException::
unexpectedToken('identifier or "*"',
new Token(Token::TYPE_DELIMITER, '#', 1
))->
getMessage()],
['[foo=#]', SyntaxErrorException::
unexpectedToken('string or identifier',
new Token(Token::TYPE_DELIMITER, '#', 5
))->
getMessage()],
[':nth-child()', SyntaxErrorException::
unexpectedToken('at least one argument',
new Token(Token::TYPE_DELIMITER, ')', 11
))->
getMessage()],
['[href]a', SyntaxErrorException::
unexpectedToken('selector',
new Token(Token::TYPE_IDENTIFIER, 'a', 6
))->
getMessage()],
['[rel:stylesheet]', SyntaxErrorException::
unexpectedToken('operator',
new Token(Token::TYPE_DELIMITER, ':', 4
))->
getMessage()],
['[rel=stylesheet', SyntaxErrorException::
unexpectedToken('"]"',
new Token(Token::TYPE_FILE_END, '', 15
))->
getMessage()],
[':lang(fr', SyntaxErrorException::
unexpectedToken('an argument',
new Token(Token::TYPE_FILE_END, '', 8
))->
getMessage()],
[':contains("foo', SyntaxErrorException::
unclosedString(10
)->
getMessage()],
['foo!', SyntaxErrorException::
unexpectedToken('selector',
new Token(Token::TYPE_DELIMITER, '!', 3
))->
getMessage()],
[':scope > div :scope header', SyntaxErrorException::
notAtTheStartOfASelector('scope'
)->
getMessage()],
];
} public static function getPseudoElementsTestData() { return [ ['foo', 'Element[foo]', ''
],
['*', 'Element[*]', ''
],
[':empty', 'Pseudo[Element[*]:empty]', ''
],
[':BEfore', 'Element[*]', 'before'
],
[':aftER', 'Element[*]', 'after'
],
[