Skip to content

Commit ba23a7c

Browse files
committed
added tests
1 parent 7cefed6 commit ba23a7c

File tree

4 files changed

+63
-5
lines changed

4 files changed

+63
-5
lines changed

tests/PhpGenerator/ClassType.interface.phpt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@ $interface
1818
->addExtend('ITwo')
1919
->addComment('Description of interface');
2020

21+
Assert::same(['IOne', 'ITwo'], $interface->getExtends());
22+
2123
$interface->addMethod('getForm');
2224

2325
Assert::matchFile(__DIR__ . '/ClassType.interface.expect', (string) $interface);

tests/PhpGenerator/ClassType.phpt

Lines changed: 39 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,13 +13,19 @@ require __DIR__ . '/../bootstrap.php';
1313

1414

1515
$class = new ClassType('Example');
16+
17+
Assert::false($class->isFinal());
18+
Assert::false($class->isAbstract());
19+
Assert::same([], $class->getExtends());
20+
Assert::same([], $class->getTraits());
21+
1622
$class
1723
->setAbstract(TRUE)
1824
->setFinal(TRUE)
1925
->setExtends('ParentClass')
2026
->addImplement('IExample')
2127
->addImplement('IOne')
22-
->addTrait('ObjectTrait')
28+
->setTraits(['ObjectTrait'])
2329
->addTrait('AnotherTrait', ['sayHello as protected'])
2430
->addComment("Description of class.\nThis is example\n")
2531
->addComment('@property-read Nette\Forms\Form $form')
@@ -28,6 +34,13 @@ $class
2834

2935
Assert::same(['ROLE' => 'admin', 'ACTIVE' => FALSE], $class->getConsts());
3036

37+
Assert::true($class->isFinal());
38+
Assert::true($class->isAbstract());
39+
Assert::same('ParentClass', $class->getExtends());
40+
Assert::same(['ObjectTrait', 'AnotherTrait'], $class->getTraits());
41+
Assert::count(2, $class->getConstants());
42+
Assert::type(Nette\PhpGenerator\Constant::class, $class->getConstants()['ROLE']);
43+
3144
$class->addConstant('FORCE_ARRAY', new PhpLiteral('Nette\Utils\Json::FORCE_ARRAY'))
3245
->setVisibility('private')
3346
->addComment('Commented');
@@ -43,6 +56,8 @@ $p = $class->addProperty('sections', ['first' => TRUE])
4356
->setStatic(TRUE);
4457

4558
Assert::same($p, $class->getProperty('sections'));
59+
Assert::true($p->isStatic());
60+
Assert::null($p->getVisibility());
4661

4762
$m = $class->addMethod('getHandle')
4863
->addComment('Returns file handle.')
@@ -51,14 +66,27 @@ $m = $class->addMethod('getHandle')
5166
->setBody('return $this->?;', ['handle']);
5267

5368
Assert::same($m, $class->getMethod('getHandle'));
54-
55-
$class->addMethod('getSections')
69+
Assert::true($m->isFinal());
70+
Assert::false($m->isStatic());
71+
Assert::false($m->isAbstract());
72+
Assert::false($m->getReturnReference());
73+
Assert::same('public', $m->getVisibility());
74+
Assert::same('return $this->handle;', $m->getBody());
75+
76+
$m = $class->addMethod('getSections')
5677
->setStatic(TRUE)
5778
->setVisibility('protected')
5879
->setReturnReference(TRUE)
5980
->addBody('$mode = ?;', [123])
60-
->addBody('return self::$sections;')
61-
->addParameter('mode', new PhpLiteral('self::ORDER'));
81+
->addBody('return self::$sections;');
82+
$m->addParameter('mode', new PhpLiteral('self::ORDER'));
83+
84+
Assert::false($m->isFinal());
85+
Assert::true($m->isStatic());
86+
Assert::true($m->getReturnReference());
87+
Assert::false($m->getReturnNullable());
88+
Assert::null($m->getReturnType());
89+
Assert::same('protected', $m->getVisibility());
6290

6391
$method = $class->addMethod('show')
6492
->setAbstract(TRUE);
@@ -87,3 +115,9 @@ $parameters = $method->getParameters();
87115
Assert::count(2, $parameters);
88116
$method->setParameters(array_values($parameters));
89117
Assert::same($parameters, $method->getParameters());
118+
119+
120+
Assert::exception(function () {
121+
$class = new ClassType;
122+
$class->addMethod('method')->setVisibility('unknown');
123+
}, Nette\InvalidArgumentException::class, 'Argument must be public|protected|private.');

tests/PhpGenerator/Closure.phpt

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,24 @@ Assert::match(
2424
}', (string) $function);
2525

2626

27+
$uses = $function->getUses();
28+
Assert::count(2, $uses);
29+
Assert::type(Nette\PhpGenerator\Parameter::class, $uses[0]);
30+
Assert::type(Nette\PhpGenerator\Parameter::class, $uses[1]);
31+
32+
$uses = $function->setUses([$uses[0]]);
33+
34+
Assert::match(
35+
'function &($a, $b) use ($this) {
36+
return $a + $b;
37+
}', (string) $function);
38+
39+
Assert::exception(function () {
40+
$function = new Closure;
41+
$function->setUses([123]);
42+
}, Nette\InvalidArgumentException::class);
43+
44+
2745
$closure = function (stdClass $a, $b = NULL) {};
2846
$function = Closure::from($closure);
2947
Assert::match(

tests/PhpGenerator/PhpNamespace.phpt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ Assert::same('\A', $namespace->unresolveName('A'));
3333
Assert::same('A', $namespace->unresolveName('foo\A'));
3434

3535
$namespace->addUse('Bar\C');
36+
Assert::same(['C' => 'Bar\\C'], $namespace->getUses());
3637

3738
Assert::same('\Bar', $namespace->unresolveName('Bar'));
3839
Assert::same('C', $namespace->unresolveName('\bar\C'));
@@ -50,6 +51,9 @@ Assert::same($namespace, $classA->getNamespace());
5051
$interfaceB = $namespace->addInterface('B');
5152
Assert::same($namespace, $interfaceB->getNamespace());
5253

54+
Assert::count(2, $namespace->getClasses());
55+
Assert::type(Nette\PhpGenerator\ClassType::class, $namespace->getClasses()['A']);
56+
5357
Assert::exception(function () use ($namespace) {
5458
$traitC = $namespace->addTrait('C');
5559
Assert::same($namespace, $traitC->getNamespace());

0 commit comments

Comments
 (0)