<?php
namespace tests\DuckPhp\Core;
use DuckPhp\Core\AutoLoader;
class AutoLoaderTest extends \PHPUnit\Framework\TestCase
{
public function testAll()
{
\MyCodeCoverage::G()->begin(AutoLoader::class);
$path_autoload=\MyCodeCoverage::GetClassTestPath(AutoLoader::class);
var_dump($path_autoload);
$options=[
'path'=>$path_autoload,
'path_namespace'=>'AutoApp',
'namespace'=>'for_autoloadertest',
'skip_system_autoload'=>false,
'skip_app_autoload'=>false,
'autoload_cache_in_cli'=>true,
];
$G=AutoLoader::G();
$G->init($options);
$G->init($options);
$G->assignPathNamespace([
'ThisPathNotExsits'=>'NoNameSpace',
$path_autoload.'AutoApp2'=> 'for_autoloadertest2',
]);
$G->run();
$G->run();
$t=new \for_autoloadertest\LoadMe(); $t->foo();
try{
$tt=new \for_autoloadertest2\LoadMe(); $tt->foo();
}catch(\Throwable $ex){
}
try{
$tt=new \for_autoloadertest2\ThisClassNotExsits(); $tt->foo();
}catch(\Throwable $ex){
}
AutoLoader::G()->cacheClasses();
AutoLoader::G()->cacheClasses();
AutoLoader::G()->cacheNamespacePath($path_autoload);
AutoLoader::G()->cacheNamespacePath($path_autoload.'AutoApp/');
AutoLoader::G()->cacheNamespacePath('ThisPastNotExsits');
$G->clear();
$path_autoload=\MyCodeCoverage::GetClassTestPath(AutoLoader::class);
$sec=(new AutoLoader())->init([
'skip_system_autoload'=>true,
'skip_app_autoload'=>true,
'path_namespace'=>'/path_autoload',
]);
AutoLoader::G()->isInited();
AutoLoader::G();
AutoLoader::G(new AutoLoader());
$t = \MyCodeCoverage::G();
define('__SINGLETONEX_REPALACER',AutoLoaderObject::class.'::CreateObject');
\MyCodeCoverage::G($t);
AutoLoader::G();
\MyCodeCoverage::G()->end();
}
}
class AutoLoaderObject
{
public static function CreateObject($class, $object)
{
static $_instance;
$_instance=$_instance??[];
$_instance[$class]=$object?:($_instance[$class]??($_instance[$class]??new static));
return $_instance[$class];
}
}