133 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			133 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| namespace nulib\app {
 | |
|   use nulib\tests\TestCase;
 | |
|   use nulib\app\impl\config;
 | |
|   use nulib\app\impl\myapp;
 | |
|   use nulib\app\impl\MyApplication1;
 | |
|   use nulib\app\impl\MyApplication2;
 | |
| 
 | |
|   class appTest extends TestCase {
 | |
|     function testWith() {
 | |
|       $projdir = config::get_projdir();
 | |
|       $cwd = getcwd();
 | |
| 
 | |
|       myapp::reset();
 | |
|       $app1 = myapp::with(MyApplication1::class);
 | |
|       self::assertSame([
 | |
|         "projdir" => $projdir,
 | |
|         "vendor" => [
 | |
|           "bindir" => "$projdir/vendor/bin",
 | |
|           "autoload" => "$projdir/vendor/autoload.php",
 | |
|         ],
 | |
|         "appcode" => "nur-ture",
 | |
|         "cwd" => $cwd,
 | |
|         "datadir" => "$projdir/devel",
 | |
|         "etcdir" => "$projdir/devel/etc",
 | |
|         "vardir" => "$projdir/devel/var",
 | |
|         "logdir" => "$projdir/devel/log",
 | |
|         "profile" => "devel",
 | |
|         "appgroup" => null,
 | |
|         "name" => "my-application1",
 | |
|         "title" => null,
 | |
|       ], $app1->getParams());
 | |
| 
 | |
|       $app2 = myapp::with(MyApplication2::class, $app1);
 | |
|       self::assertSame([
 | |
|         "projdir" => $projdir,
 | |
|         "vendor" => [
 | |
|           "bindir" => "$projdir/vendor/bin",
 | |
|           "autoload" => "$projdir/vendor/autoload.php",
 | |
|         ],
 | |
|         "appcode" => "nur-ture",
 | |
|         "cwd" => $cwd,
 | |
|         "datadir" => "$projdir/devel",
 | |
|         "etcdir" => "$projdir/devel/etc",
 | |
|         "vardir" => "$projdir/devel/var",
 | |
|         "logdir" => "$projdir/devel/log",
 | |
|         "profile" => "devel",
 | |
|         "appgroup" => null,
 | |
|         "name" => "my-application2",
 | |
|         "title" => null,
 | |
|       ], $app2->getParams());
 | |
|     }
 | |
| 
 | |
|     function testInit() {
 | |
|       $projdir = config::get_projdir();
 | |
|       $cwd = getcwd();
 | |
| 
 | |
|       myapp::reset();
 | |
|       myapp::init(MyApplication1::class);
 | |
|       self::assertSame([
 | |
|         "projdir" => $projdir,
 | |
|         "vendor" => [
 | |
|           "bindir" => "$projdir/vendor/bin",
 | |
|           "autoload" => "$projdir/vendor/autoload.php",
 | |
|         ],
 | |
|         "appcode" => "nur-ture",
 | |
|         "cwd" => $cwd,
 | |
|         "datadir" => "$projdir/devel",
 | |
|         "etcdir" => "$projdir/devel/etc",
 | |
|         "vardir" => "$projdir/devel/var",
 | |
|         "logdir" => "$projdir/devel/log",
 | |
|         "profile" => "devel",
 | |
|         "appgroup" => null,
 | |
|         "name" => "my-application1",
 | |
|         "title" => null,
 | |
|       ], myapp::get()->getParams());
 | |
| 
 | |
|       myapp::init(MyApplication2::class);
 | |
|       self::assertSame([
 | |
|         "projdir" => $projdir,
 | |
|         "vendor" => [
 | |
|           "bindir" => "$projdir/vendor/bin",
 | |
|           "autoload" => "$projdir/vendor/autoload.php",
 | |
|         ],
 | |
|         "appcode" => "nur-ture",
 | |
|         "cwd" => $cwd,
 | |
|         "datadir" => "$projdir/devel",
 | |
|         "etcdir" => "$projdir/devel/etc",
 | |
|         "vardir" => "$projdir/devel/var",
 | |
|         "logdir" => "$projdir/devel/log",
 | |
|         "profile" => "devel",
 | |
|         "appgroup" => null,
 | |
|         "name" => "my-application2",
 | |
|         "title" => null,
 | |
|       ], myapp::get()->getParams());
 | |
|     }
 | |
|   }
 | |
| }
 | |
| 
 | |
| namespace nulib\app\impl {
 | |
| 
 | |
|   use nulib\app\cli\Application;
 | |
|   use nulib\os\path;
 | |
|   use nulib\app\app;
 | |
| 
 | |
|   class config {
 | |
|     const PROJDIR = __DIR__.'/../..';
 | |
| 
 | |
|     static function get_projdir(): string {
 | |
|       return path::abspath(self::PROJDIR);
 | |
|     }
 | |
|   }
 | |
| 
 | |
|   class myapp extends app {
 | |
|     static function reset(): void {
 | |
|       self::$app = null;
 | |
|     }
 | |
|   }
 | |
| 
 | |
|   class MyApplication1 extends Application {
 | |
|     const PROJDIR = config::PROJDIR;
 | |
| 
 | |
|     function main() {
 | |
|     }
 | |
|   }
 | |
|   class MyApplication2 extends Application {
 | |
|     const PROJDIR = null;
 | |
| 
 | |
|     function main() {
 | |
|     }
 | |
|   }
 | |
| }
 |