public function testCreationFromArray() { $array = ['token', 'test']; $language = $this->getLanguageMock(); $context = Context::fromArray($array, $language); $this->assertSame($language, $context->language); $this->assertEquals($array, $context->stack); }
public function testValidation() { $start = $this->_factory->create('test', ['pos' => 10, 'length' => 1, 'rule' => $this->_rule]); $startEnd = $start->getEnd(); $endStart = $this->_factory->create('test', ['pos' => 12, 'length' => 1, 'rule' => $this->_rule]); $end = $endStart->getEnd(); $this->assertTrue($start->isValid(Context::fromArray([], $this->_language))); $this->assertFalse($startEnd->isValid(Context::fromArray(['test'], $this->_language))); $this->assertFalse($endStart->isValid(Context::fromArray(['test'], $this->_language))); $this->assertTrue($end->isValid(Context::fromArray(['test'], $this->_language))); $this->assertTrue($start->isStart()); $this->assertTrue($endStart->isStart()); $this->assertTrue($end->isEnd()); $this->assertTrue($startEnd->isEnd()); }
public function testTokenValidation() { /** @var Language $language */ $language = $this->getMockBuilder('Kadet\\Highlighter\\Language\\Language')->disableOriginalConstructor()->getMock(); $validator = $this->getMock(Validator::class); $context = Context::fromArray([], $language); $validator->expects($this->once())->method('validate')->with($context, []); $token = $this->_factory->create('test.name', ['pos' => 15, 'length' => 10, 'rule' => new Rule(null, ['language' => $language, 'context' => $validator])]); $token->isValid($context); }
public function testCallableValidator() { $validator = new DelegateValidator(function ($context) { return in_array('bar', $context->stack) && !in_array('foo', $context->stack); }); $this->assertFalse($validator->validate(Context::fromArray(['test']))); $this->assertTrue($validator->validate(Context::fromArray(['bar']))); $this->assertTrue($validator->validate(Context::fromArray(['bar', 'smth']))); $this->assertFalse($validator->validate(Context::fromArray(['bar', 'foo']))); }