function testSingular()
{
$handler = new MockTestParser();
$handler->setReturnValue("a", true);
$handler->setReturnValue("b", true);
$handler->expectAt(0, "a", array("aa", LEXER_MATCHED));
$handler->expectAt(1, "a", array("aa", LEXER_MATCHED));
$handler->expectAt(2, "a", array("xx", LEXER_UNMATCHED));
$handler->expectAt(3, "a", array("xx", LEXER_UNMATCHED));
$handler->expectAt(0, "b", array("b", LEXER_SPECIAL));
$handler->expectAt(1, "b", array("bbb", LEXER_SPECIAL));
$handler->expectCallCount("a", 4);
$handler->expectCallCount("b", 2);
$lexer = new SimpleLexer($handler, "a");
$lexer->addPattern("a+", "a");
$lexer->addSpecialPattern("b+", "a", "b");
$this->assertTrue($lexer->parse("aabaaxxbbbxx"));
}