when($result = new SUT('name', 'tokenName', 'nodeId', 0)) ->then ->object($result) ->isInstanceOf(LUT\Llk\Rule::class); } public function case_constructor() { $this ->given( $name = 'foo', $tokenName = 'bar', $nodeId = 'baz', $unification = 0 ) ->when($result = new SUT($name, $tokenName, $nodeId, $unification)) ->then ->string($result->getName()) ->isEqualTo($name) ->string($result->getTokenName()) ->isEqualTo($tokenName) ->string($result->getNodeId()) ->isEqualTo($nodeId) ->integer($result->getUnificationIndex()) ->isEqualTo($unification) ->boolean($result->isKept()) ->isFalse(); } public function case_constructor_with_kept_flag() { $this ->given( $name = 'foo', $tokenName = 'bar', $nodeId = 'baz', $unification = 0, $kept = true ) ->when($result = new SUT($name, $tokenName, $nodeId, $unification, $kept)) ->then ->string($result->getName()) ->isEqualTo($name) ->string($result->getTokenName()) ->isEqualTo($tokenName) ->string($result->getNodeId()) ->isEqualTo($nodeId) ->integer($result->getUnificationIndex()) ->isEqualTo($unification) ->boolean($result->isKept()) ->isTrue(); } public function case_get_token_name() { $this ->given( $name = 'foo', $tokenName = 'bar', $nodeId = 'baz', $unification = 0, $token = new SUT($name, $tokenName, $nodeId, $unification) ) ->when($result = $token->getTokenName()) ->then ->string($result) ->isEqualTo($tokenName); } public function case_set_namespace() { $this ->given( $name = 'foo', $tokenName = 'bar', $nodeId = 'baz', $unification = 0, $namespace = 'qux', $token = new SUT($name, $tokenName, $nodeId, $unification) ) ->when($result = $token->setNamespace($namespace)) ->then ->variable($result) ->isNull(); } public function case_get_namespace() { $this ->given( $name = 'foo', $tokenName = 'bar', $nodeId = 'baz', $unification = 0, $namespace = 'qux', $token = new SUT($name, $tokenName, $nodeId, $unification), $token->setNamespace($namespace) ) ->when($result = $token->getNamespace()) ->then ->string($result) ->isEqualTo($namespace); } public function case_set_representation() { $this ->given( $name = 'foo', $tokenName = 'bar', $nodeId = 'baz', $unification = 0, $representation = 'qux', $token = new SUT($name, $tokenName, $nodeId, $unification) ) ->when($result = $token->setRepresentation($representation)) ->then ->variable($result) ->isNull(); } public function case_get_representation() { $this ->given( $name = 'foo', $tokenName = 'bar', $nodeId = 'baz', $unification = 0, $representation = 'qux', $token = new SUT($name, $tokenName, $nodeId, $unification), $token->setRepresentation($representation) ) ->when($result = $token->getRepresentation()) ->then ->string($result) ->isEqualTo($representation); } public function case_get_ast() { $this ->given( $name = 'foo', $tokenName = 'bar', $nodeId = 'baz', $unification = 0, $representation = 'qux', $token = new SUT($name, $tokenName, $nodeId, $unification), $token->setRepresentation($representation) ) ->when($result = $token->getAST()) ->then ->object($result) ->isInstanceOf(LUT\Llk\TreeNode::class) ->let($dumper = new LUT\Visitor\Dump()) ->string($dumper->visit($result)) ->isEqualTo( '> #expression' . "\n" . '> > #concatenation' . "\n" . '> > > token(literal, q)' . "\n" . '> > > token(literal, u)' . "\n" . '> > > token(literal, x)' . "\n" ); } public function case_set_value() { $this ->given( $name = 'foo', $tokenName = 'bar', $nodeId = 'baz', $unification = 0, $value = 'qux', $token = new SUT($name, $tokenName, $nodeId, $unification) ) ->when($result = $token->setValue($value)) ->then ->variable($result) ->isNull(); } public function case_get_value() { $this ->given( $name = 'foo', $tokenName = 'bar', $nodeId = 'baz', $unification = 0, $value = 'qux', $token = new SUT($name, $tokenName, $nodeId, $unification), $token->setValue($value) ) ->when($result = $token->getValue()) ->then ->string($result) ->isEqualTo($value); } public function case_set_kept() { $this ->given( $name = 'foo', $tokenName = 'bar', $nodeId = 'baz', $unification = 0, $kept = true, $token = new SUT($name, $tokenName, $nodeId, $unification) ) ->when($result = $token->setKept($kept)) ->then ->boolean($result) ->isFalse(); } public function case_is_kept() { $this ->given( $name = 'foo', $tokenName = 'bar', $nodeId = 'baz', $unification = 0, $kept = true, $token = new SUT($name, $tokenName, $nodeId, $unification), $token->setKept($kept) ) ->when($result = $token->isKept()) ->then ->boolean($result) ->isTrue(); } public function case_get_unification_index() { $this ->given( $name = 'foo', $tokenName = 'bar', $nodeId = 'baz', $unification = 42, $token = new SUT($name, $tokenName, $nodeId, $unification) ) ->when($result = $token->getUnificationIndex()) ->then ->integer($result) ->isEqualTo($unification); } }