-
-
Notifications
You must be signed in to change notification settings - Fork 72
Expand file tree
/
Copy pathConfig.Processor.normalizeConfig.phpt
More file actions
51 lines (35 loc) 路 1.95 KB
/
Copy pathConfig.Processor.normalizeConfig.phpt
File metadata and controls
51 lines (35 loc) 路 1.95 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
<?php
/**
* Test: Nette\DI\Config\Processor::normalizeConfig()
*/
declare(strict_types=1);
use Nette\DI\Config\Processor;
use Nette\DI\Definitions\Statement;
use Tester\Assert;
require __DIR__ . '/../bootstrap.php';
interface IFace
{
}
$processor = new Processor(new Nette\DI\ContainerBuilder);
Assert::same([], $processor->normalizeConfig(null));
Assert::same([], $processor->normalizeConfig([]));
Assert::same([false], $processor->normalizeConfig(false));
Assert::same(['factory' => true], $processor->normalizeConfig(true));
Assert::same(['factory' => 'class'], $processor->normalizeConfig('class'));
Assert::same(['implement' => Iface::class], $processor->normalizeConfig(Iface::class));
Assert::same(['factory' => ['class', 'method']], $processor->normalizeConfig(['class', 'method']));
Assert::same(['factory' => [Iface::class, 'method']], $processor->normalizeConfig([Iface::class, 'method']));
$statement = new Statement(['class', 'method']);
Assert::same(['factory' => $statement], $processor->normalizeConfig($statement));
$statement = new Statement(Iface::class, ['foo']);
Assert::same(['implement' => Iface::class, 'factory' => 'foo'], $processor->normalizeConfig($statement));
$statement = new Statement(Iface::class, ['stdClass', 'stdClass']);
Assert::same(['implement' => Iface::class, 'references' => ['stdClass', 'stdClass']], $processor->normalizeConfig($statement));
$statement = new Statement(Iface::class, ['tagged' => 123]);
Assert::same(['implement' => Iface::class, 'tagged' => 123], $processor->normalizeConfig($statement));
// aliases
Assert::same(['factory' => null, 'type' => 'val'], $processor->normalizeConfig(['class' => 'val']));
Assert::same(['imported' => 'val'], $processor->normalizeConfig(['dynamic' => 'val']));
Assert::exception(function () use ($processor) {
$processor->normalizeConfig(['class' => 'val', 'type' => 'val']);
}, Nette\DI\InvalidConfigurationException::class, "Options 'class' and 'type' are aliases, use only 'type'.");