75 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			75 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php
 | 
						|
namespace nur\php;
 | 
						|
 | 
						|
use nur\data\types\Metadata;
 | 
						|
use nur\t\TestCase;
 | 
						|
use stdClass;
 | 
						|
 | 
						|
class AutogenTest extends TestCase {
 | 
						|
  const SCHEMA1 = [
 | 
						|
    "a" => ["?string"],
 | 
						|
    "b" => ["string"],
 | 
						|
    "c" => [["string"], "allow_null" => true],
 | 
						|
    "d" => [["string"], "allow_null" => false],
 | 
						|
  ];
 | 
						|
 | 
						|
  function test1() {
 | 
						|
    $schema = self::SCHEMA1;
 | 
						|
    $md = new Metadata($schema);
 | 
						|
    self::assertSame("?string", $md->getType("a")->getPhpType());
 | 
						|
    self::assertSame("string", $md->getType("b")->getPhpType());
 | 
						|
    self::assertSame("?string", $md->getType("c")->getPhpType());
 | 
						|
    self::assertSame("string", $md->getType("d")->getPhpType());
 | 
						|
    self::assertSame([
 | 
						|
      "getA(): ?string",
 | 
						|
      "getB(): string",
 | 
						|
      "getC(): ?string",
 | 
						|
      "getD(): string",
 | 
						|
    ], Autogen::auto_getters_methods($schema, null, stdClass::class));
 | 
						|
  }
 | 
						|
 | 
						|
  const SCHEMA2 = [
 | 
						|
    "a" => ["?array"],
 | 
						|
    "b" => ["array"],
 | 
						|
    "c" => [["array"], "allow_null" => true],
 | 
						|
    "d" => [["array"], "allow_null" => false],
 | 
						|
  ];
 | 
						|
 | 
						|
  function test2() {
 | 
						|
    $schema = self::SCHEMA2;
 | 
						|
    $md = new Metadata($schema);
 | 
						|
    self::assertSame("?array", $md->getType("a")->getPhpType());
 | 
						|
    self::assertSame("array", $md->getType("b")->getPhpType());
 | 
						|
    self::assertSame("?array", $md->getType("c")->getPhpType());
 | 
						|
    self::assertSame("array", $md->getType("d")->getPhpType());
 | 
						|
    self::assertSame([
 | 
						|
      "getA(): ?array",
 | 
						|
      "getB(): array",
 | 
						|
      "getC(): ?array",
 | 
						|
      "getD(): array",
 | 
						|
    ], Autogen::auto_getters_methods($schema, null, stdClass::class));
 | 
						|
  }
 | 
						|
 | 
						|
  const SCHEMA3 = [
 | 
						|
    "a" => ["?array[]"],
 | 
						|
    "b" => ["array[]"],
 | 
						|
    "c" => [["array[]"], "allow_null" => true],
 | 
						|
    "d" => [["array[]"], "allow_null" => false],
 | 
						|
  ];
 | 
						|
 | 
						|
  function test3() {
 | 
						|
    $schema = self::SCHEMA3;
 | 
						|
    $md = new Metadata($schema);
 | 
						|
    self::assertSame("?array", $md->getType("a")->getPhpType());
 | 
						|
    self::assertSame("array", $md->getType("b")->getPhpType());
 | 
						|
    self::assertSame("?array", $md->getType("c")->getPhpType());
 | 
						|
    self::assertSame("array", $md->getType("d")->getPhpType());
 | 
						|
    self::assertSame([
 | 
						|
      "getA(): ?array",
 | 
						|
      "getB(): array",
 | 
						|
      "getC(): ?array",
 | 
						|
      "getD(): array",
 | 
						|
    ], Autogen::auto_getters_methods($schema, null, stdClass::class));
 | 
						|
  }
 | 
						|
}
 |