PluginProbe ʕ •ᴥ•ʔ
Independent Analytics – WordPress Analytics Plugin / 2.15.5
Independent Analytics – WordPress Analytics Plugin v2.15.5
2.15.5 2.15.4 2.15.3 2.15.2 2.15.1 2.15.0 2.14.10 trunk 1.1 1.10 1.10.1 1.11 1.12 1.13 1.14 1.15 1.16 1.17 1.17.1 1.17.2 1.17.3 1.17.4 1.18 1.18.1 1.19.0 1.19.1 1.2 1.20.0 1.21.0 1.22.0 1.22.1 1.23.0 1.23.1 1.24.0 1.24.1 1.25.0 1.25.1 1.26.0 1.27.0 1.28.0 1.28.1 1.28.2 1.28.3 1.29.0 1.3 1.30.0 1.30.1 1.4 1.5 1.6 1.7 1.8 1.9 2.0.0 2.0.1 2.1.4 2.1.5 2.1.6 2.10.0 2.10.1 2.10.2 2.10.3 2.10.4 2.11.0 2.11.1 2.11.10 2.11.2 2.11.3 2.11.4 2.11.5 2.11.6 2.11.7 2.11.8 2.11.9 2.12.0 2.12.1 2.12.2 2.13.1 2.13.2 2.13.5 2.13.6 2.14.0 2.14.1 2.14.2 2.14.4 2.14.6 2.14.7 2.14.8 2.14.9 2.2.0 2.2.1 2.3.1 2.3.2 2.4.2 2.4.3 2.5.0 2.5.1 2.6.0 2.6.1 2.6.2 2.6.3 2.6.4 2.7.0 2.7.1 2.7.2 2.7.3 2.8.2 2.8.3 2.8.4 2.8.5 2.8.6 2.8.7 2.8.8 2.8.9 2.9.2 2.9.3 2.9.4 2.9.5 2.9.6 2.9.7
independent-analytics / vendor / symfony / service-contracts / Test / ServiceLocatorTest.php
independent-analytics / vendor / symfony / service-contracts / Test Last commit date
ServiceLocatorTest.php 1 month ago
ServiceLocatorTest.php
85 lines
1 <?php
2
3 /*
4 * This file is part of the Symfony package.
5 *
6 * (c) Fabien Potencier <fabien@symfony.com>
7 *
8 * For the full copyright and license information, please view the LICENSE
9 * file that was distributed with this source code.
10 */
11 namespace IAWPSCOPED\Symfony\Contracts\Service\Test;
12
13 use IAWPSCOPED\PHPUnit\Framework\TestCase;
14 use IAWPSCOPED\Psr\Container\ContainerInterface;
15 use IAWPSCOPED\Symfony\Contracts\Service\ServiceLocatorTrait;
16 /** @internal */
17 abstract class ServiceLocatorTest extends TestCase
18 {
19 protected function getServiceLocator(array $factories) : ContainerInterface
20 {
21 return new class($factories) implements ContainerInterface
22 {
23 use ServiceLocatorTrait;
24 };
25 }
26 public function testHas()
27 {
28 $locator = $this->getServiceLocator(['foo' => function () {
29 return 'bar';
30 }, 'bar' => function () {
31 return 'baz';
32 }, function () {
33 return 'dummy';
34 }]);
35 $this->assertTrue($locator->has('foo'));
36 $this->assertTrue($locator->has('bar'));
37 $this->assertFalse($locator->has('dummy'));
38 }
39 public function testGet()
40 {
41 $locator = $this->getServiceLocator(['foo' => function () {
42 return 'bar';
43 }, 'bar' => function () {
44 return 'baz';
45 }]);
46 $this->assertSame('bar', $locator->get('foo'));
47 $this->assertSame('baz', $locator->get('bar'));
48 }
49 public function testGetDoesNotMemoize()
50 {
51 $i = 0;
52 $locator = $this->getServiceLocator(['foo' => function () use(&$i) {
53 ++$i;
54 return 'bar';
55 }]);
56 $this->assertSame('bar', $locator->get('foo'));
57 $this->assertSame('bar', $locator->get('foo'));
58 $this->assertSame(2, $i);
59 }
60 public function testThrowsOnUndefinedInternalService()
61 {
62 if (!$this->getExpectedException()) {
63 $this->expectException(\IAWPSCOPED\Psr\Container\NotFoundExceptionInterface::class);
64 $this->expectExceptionMessage('The service "foo" has a dependency on a non-existent service "bar". This locator only knows about the "foo" service.');
65 }
66 $locator = $this->getServiceLocator(['foo' => function () use(&$locator) {
67 return $locator->get('bar');
68 }]);
69 $locator->get('foo');
70 }
71 public function testThrowsOnCircularReference()
72 {
73 $this->expectException(\IAWPSCOPED\Psr\Container\ContainerExceptionInterface::class);
74 $this->expectExceptionMessage('Circular reference detected for service "bar", path: "bar -> baz -> bar".');
75 $locator = $this->getServiceLocator(['foo' => function () use(&$locator) {
76 return $locator->get('bar');
77 }, 'bar' => function () use(&$locator) {
78 return $locator->get('baz');
79 }, 'baz' => function () use(&$locator) {
80 return $locator->get('bar');
81 }]);
82 $locator->get('foo');
83 }
84 }
85