Exemplo n.º 1
0
 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());
 }