File: Issue168Test.php

package info (click to toggle)
php-di 7.1.1-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 2,940 kB
  • sloc: php: 10,572; makefile: 42; xml: 17; sh: 10; pascal: 5
file content (44 lines) | stat: -rw-r--r-- 1,317 bytes parent folder | download | duplicates (2)
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
<?php

declare(strict_types=1);

namespace DI\Test\IntegrationTest\Issues;

use DI\ContainerBuilder;
use DI\Test\IntegrationTest\BaseContainerTest;

/**
 * Test for constructor injection of parameters that are optional, and use an
 * interface (or other uninstantiable) type hint.
 *
 * @link https://github.com/mnapoli/PHP-DI/pull/168
 */
class Issue168Test extends BaseContainerTest
{
    /**
     * @dataProvider provideContainer
     */
    #[\PHPUnit\Framework\Attributes\DataProvider('provideContainer')]
    public function testInterfaceOptionalParameter(ContainerBuilder $builder)
    {
        require_once __DIR__ . '/Issue168/class.php';

        $container = $builder->build();
        $object = $container->get(Issue168\TestClass::class);
        $this->assertInstanceOf(Issue168\TestClass::class, $object);
    }

    /**
     * @dataProvider provideContainer
     * @requires PHP < 8.4.0
     */
    #[\PHPUnit\Framework\Attributes\DataProvider('provideContainer')]
    public function testInterfaceOptionalParameterForPHP83(ContainerBuilder $builder)
    {
        require_once __DIR__ . '/Issue168/class-php83.php';

        $container = $builder->build();
        $object = $container->get(Issue168\TestClass83::class);
        $this->assertInstanceOf(Issue168\TestClass83::class, $object);
    }
}