Skip to content
This repository was archived by the owner on Feb 6, 2020. It is now read-only.

Commit 34f42a8

Browse files
committed
Merge branch 'feature/20' into develop
Close #20
2 parents 21dfa56 + 41d50d8 commit 34f42a8

File tree

1 file changed

+45
-0
lines changed

1 file changed

+45
-0
lines changed

test/ServiceManagerTest.php

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -103,4 +103,49 @@ function ($container, $name, $callback) {
103103
);
104104
$this->assertEquals('bar', $instance->foo);
105105
}
106+
107+
public function shareProvider()
108+
{
109+
$sharedByDefault = true;
110+
$serviceShared = true;
111+
$serviceDefined = true;
112+
$shouldReturnSameInstance = true;
113+
114+
// @codingStandardsIgnoreStart
115+
return [
116+
'[shared by default, service is explicitly shared => should be shared]' => [$sharedByDefault, $serviceShared, $serviceDefined, $shouldReturnSameInstance],
117+
'[shared by default, service is explicitly NOT shared => should NOT be shared]' => [$sharedByDefault, !$serviceShared, $serviceDefined, !$shouldReturnSameInstance],
118+
'[NOT shared by default, service is explicitly NOT shared => should NOT be shared]' => [!$sharedByDefault, !$serviceShared, $serviceDefined, !$shouldReturnSameInstance],
119+
'[NOT shared by default, service is explicitly shared => should be shared]' => [!$sharedByDefault, $serviceShared, $serviceDefined, $shouldReturnSameInstance],
120+
'[shared by default, service is not defined => should be shared]' => [$sharedByDefault, $serviceShared, !$serviceDefined, $shouldReturnSameInstance],
121+
'[NOT shared by default, service not defined => should NOT be shared]' => [!$sharedByDefault, !$serviceShared, !$serviceDefined, !$shouldReturnSameInstance],
122+
];
123+
// @codingStandardsIgnoreEnd
124+
}
125+
126+
/**
127+
* @dataProvider shareProvider
128+
*/
129+
public function testShareability($sharedByDefault, $serviceShared, $serviceDefined, $shouldBeSameInstance)
130+
{
131+
$config = [
132+
'shared_by_default' => $sharedByDefault,
133+
'factories' => [
134+
stdClass::class => InvokableFactory::class,
135+
]
136+
];
137+
138+
if ($serviceDefined) {
139+
$config['shared'] = [
140+
stdClass::class => $serviceShared
141+
];
142+
}
143+
144+
$serviceManager = new ServiceManager($config);
145+
146+
$a = $serviceManager->get(stdClass::class);
147+
$b = $serviceManager->get(stdClass::class);
148+
149+
$this->assertEquals($shouldBeSameInstance, $a === $b);
150+
}
106151
}

0 commit comments

Comments
 (0)