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));
|
||
|
}
|
||
|
}
|