when($result = new SUT('foo', 7, 42, [], 'bar')) ->then ->object($result) ->isInstanceOf(LUT\Llk\Rule::class); } public function case_constructor() { $this ->given( $name = 'foo', $min = 7, $max = 42, $children = [], $id = 'bar' ) ->when($result = new SUT($name, $min, $max, $children, $id)) ->then ->string($result->getName()) ->isEqualTo($name) ->integer($result->getMin()) ->isEqualTo($min) ->integer($result->getMax()) ->isEqualTo($max) ->array($result->getChildren()) ->isEqualTo($children) ->string($result->getNodeId()) ->isEqualTo($id) ->boolean($result->isInfinite()) ->isFalse(); } public function case_constructor_min_and_max_are_casted_and_bounded() { $this ->given( $name = 'foo', $min = '-7', $max = '42', $children = [], $id = 'bar' ) ->when($result = new SUT($name, $min, $max, $children, $id)) ->then ->integer($result->getMin()) ->isEqualTo(0) ->integer($result->getMax()) ->isEqualTo(42) ->boolean($result->isInfinite()) ->isFalse(); } public function case_constructor_min_is_greater_than_max() { $this ->given( $name = 'foo', $min = 2, $max = 1, $children = [], $id = 'bar' ) ->exception(function () use ($name, $min, $max, $children, $id) { new SUT($name, $min, $max, $children, $id); }) ->isInstanceOf(LUT\Exception\Rule::class) ->hasMessage('Cannot repeat with a min (2) greater than max (1).'); } public function case_constructor_infinite_max() { $this ->given( $name = 'foo', $min = 2, $max = -1, $children = [], $id = 'bar' ) ->when($result = new SUT($name, $min, $max, $children, $id)) ->then ->integer($result->getMin()) ->isEqualTo(2) ->integer($result->getMax()) ->isEqualTo(-1) ->boolean($result->isInfinite()) ->isTrue(); } public function case_get_min() { return $this->case_constructor(); } public function case_get_max() { return $this->case_constructor(); } }