nur-sery/nur_tests/php/AutogenTest.php

75 lines
2.2 KiB
PHP
Raw Normal View History

2023-12-03 22:11:29 +04:00
<?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));
}
}