given( $this->function->class_exists = $class, $this->function->interface_exists = $interface, $this->function->trait_exists = $trait ) ->when($result = SUT::entityExists('foo')) ->then ->boolean($result) ->isTrue(); } public function case_entity_exists_with_class() { return $this->_entity_exists_with_xxx(true, false, false); } public function case_entity_exists_with_interface() { return $this->_entity_exists_with_xxx(false, true, false); } public function case_entity_exists_with_trait() { return $this->_entity_exists_with_xxx(false, false, true); } public function case_entity_does_not_exists() { $this ->given( $this->function->class_exists = false, $this->function->interface_exists = false, $this->function->trait_exists = false ) ->when($result = SUT::entityExists('foo')) ->then ->boolean($result) ->isFalse(); } public function case_get_entity_shortest_name() { $this ->when($result = SUT::getEntityShortestName('Foo\Bar\Bar')) ->then ->string($result) ->isEqualTo('Foo\Bar'); } public function case_get_entity_shortest_name_with_already_the_shortest() { $this ->when($result = SUT::getEntityShortestName('Foo\Bar')) ->then ->string($result) ->isEqualTo('Foo\Bar'); } public function case_get_entity_shortest_name_with_no_namespace() { $this ->when($result = SUT::getEntityShortestName('Foo')) ->then ->string($result) ->isEqualTo('Foo'); } public function case_is_keyword() { $this ->given( $keywords = [ '__HALT_COMPILER', 'abstract', 'and', 'array', 'as', 'bool', 'break', 'callable', 'case', 'catch', 'class', 'clone', 'const', 'continue', 'declare', 'default', 'die', 'do', 'echo', 'else', 'elseif', 'empty', 'enddeclare', 'endfor', 'endforeach', 'endif', 'endswitch', 'endwhile', 'eval', 'exit', 'extends', 'false', 'final', 'float', 'for', 'foreach', 'function', 'global', 'goto', 'if', 'implements', 'include', 'include_once', 'instanceof', 'insteadof', 'int', 'interface', 'isset', 'list', 'mixed', 'namespace', 'new', 'null', 'numeric', 'object', 'or', 'print', 'private', 'protected', 'public', 'require', 'require_once', 'resource', 'return', 'static', 'string', 'switch', 'throw', 'trait', 'true', 'try', 'unset', 'use', 'var', 'void', 'while', 'xor', 'yield', '__CLASS__', '__DIR__', '__FILE__', '__FUNCTION__', '__LINE__', '__METHOD__', '__NAMESPACE__', '__TRAIT__' ] ) ->when(function () use ($keywords) { foreach ($keywords as $keyword) { $this ->boolean(SUT::isKeyword($keyword)) ->isTrue(); } }); } public function case_is_identifier() { $this ->given($_identifier = $this->realdom->regex('#^[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x80-\xff]*$#')) ->when(function () use ($_identifier) { foreach ($this->sampleMany($_identifier, 1000) as $identifier) { $this ->boolean(SUT::isIdentifier($identifier)) ->isTrue(); } }); } public function case_register_shutdown_function() { $self = $this; $this ->given( $callable = function () { }, $this->function->register_shutdown_function = function ($_callable) use (&$called, $self, &$callable) { $called = true; $self ->variable($_callable) ->isEqualTo($callable); return true; } ) ->when($result = SUT::registerShutdownFunction($callable)) ->then ->boolean($result) ->isTrue(); } public function case_get_php_binary_with_constant() { $this ->given($this->constant->PHP_BINARY = '/foo/php') ->when($result = SUT::getPHPBinary()) ->then ->string($result) ->isEqualTo('/foo/php'); } public function case_get_php_binary_with_server() { $this ->given( $this->function->defined = false, $_SERVER['_'] = '/bar/php' ) ->when($result = SUT::getPHPBinary()) ->then ->string($result) ->isEqualTo('/bar/php'); } public function case_get_php_binary_with_bin_directory() { unset($_SERVER['_']); $this ->given( $this->function->defined = false, $this->function->file_exists = true, $this->function->realpath = '/baz/php' ) ->when($result = SUT::getPHPBinary()) ->then ->string($result) ->isEqualTo('/baz/php'); } public function case_uuid() { $this ->given($this->function->mt_rand = 42) ->when($result = SUT::uuid()) ->then ->string($result) ->isEqualTo('002a002a-002a-402a-802a-002a002a002a'); } public function case_uuid_all_differents() { $this ->when(function () { $uuids = []; for ($i = 0; $i < 10000; ++$i) { $uuids[] = SUT::uuid(); } $this ->integer(count($uuids)) ->isEqualTo(count(array_unique($uuids))); }); } }