public function testTokens() { $code = 'hello, please resolve this example: sin($x)+tan($x*$t) = {U|[0,1]}'; $tokens = new Tokenizer($code); $this->assertSame(27, $tokens->count()); $this->assertSame($tokens, $tokens->back()); $this->assertSame(T_STRING, $tokens->key()); $this->assertSame("hello", $tokens->current()); $this->assertSame(1, $tokens->getLine()); $this->assertTrue($tokens->isNext(",")); $this->assertFalse($tokens->isNext("=")); $this->assertFalse($tokens->isNext(T_STRING)); $this->assertFalse($tokens->isNext($tokens::MACRO_UNARY)); $this->assertFalse($tokens->isNext("=", T_STRING, $tokens::MACRO_UNARY)); $this->assertTrue($tokens->isNext("=", T_STRING, $tokens::MACRO_UNARY, ",")); $this->assertSame(",", $tokens->getNext()); $this->assertSame(",", $tokens->key()); $this->assertSame("please", $tokens->getNext(T_STRING)); $this->assertSame(array(T_STRING, 'please', ' ', 1), $tokens->curr); $this->assertSame("resolve", $tokens->getNext($tokens::MACRO_UNARY, T_STRING)); $tokens->next(); $tokens->next(); $tokens->next(); $this->assertSame(":", $tokens->current()); $this->assertSame(":", $tokens->key()); $this->assertSame("sin", $tokens->getNext($tokens::MACRO_STRING)); $this->assertSame("sin", $tokens->current()); $this->assertTrue($tokens->isPrev(":")); $this->assertSame(T_STRING, $tokens->key()); $this->assertTrue($tokens->is(T_STRING)); $this->assertTrue($tokens->is($tokens::MACRO_STRING)); $this->assertFalse($tokens->is($tokens::MACRO_EQUALS)); $this->assertFalse($tokens->is(T_DNUMBER)); $this->assertFalse($tokens->is(":")); $this->assertSame("(", $tokens->getNext("(", ")")); $this->assertTrue($tokens->hasBackList(T_STRING, ':')); $this->assertFalse($tokens->hasBackList(T_LNUMBER, ':')); $tokens->next(); $tokens->next(); $this->assertSame("+", $tokens->getNext($tokens::MACRO_BINARY)); $this->assertSame($code, $tokens->getSnippetAsString(-100, 100)); $this->assertSame('+', $tokens->getSnippetAsString(100, -100)); $this->assertSame('sin($x)+tan($x*$t)', $tokens->getSnippetAsString(-4, 6)); $this->assertSame('}', $tokens->end()->current()); }