diff --git a/laravel/tests/cases/ioc.test.php b/laravel/tests/cases/ioc.test.php index 56918337..a93442dd 100644 --- a/laravel/tests/cases/ioc.test.php +++ b/laravel/tests/cases/ioc.test.php @@ -1,5 +1,34 @@ class_one = $class_one; + } +} + + class IoCTest extends PHPUnit_Framework_TestCase { /** @@ -71,4 +100,54 @@ public function testControllerMethodRegistersAController() $this->assertTrue(IoC::registered('controller: ioc.test')); } + /** + * Test that classes with optional parameters can resolve + */ + public function testOptionalParamClassResolves() + { + $test = IoC::resolve('TestOptionalParamClassForIoC'); + $this->assertInstanceOf('TestOptionalParamClassForIoC', $test); + } + + /** + * Test that we can resolve TestClassOneForIoC using IoC + */ + public function testClassOneForIoCResolves() + { + $test = IoC::resolve('TestClassOneForIoC'); + $this->assertInstanceOf('TestClassOneForIoC', $test); + } + + /** + * Test that we can resolve TestClassTwoForIoC + */ + public function testClassTwoForIoCResolves() + { + $test = IoC::resolve('TestClassTwoForIoC'); + $this->assertInstanceOf('TestClassTwoForIoC', $test); + } + + /** + * Test that when we resolve TestClassTwoForIoC we auto resolve + * the dependency for TestClassOneForIoC + */ + public function testClassTwoResolvesClassOneDependency() + { + $test = IoC::resolve('TestClassTwoForIoC'); + $this->assertInstanceOf('TestClassOneForIoC', $test->TestClassOneForIoC); + } + + /** + * Test that when we resolve TestClassTwoForIoC with a parameter + * that it actually uses that instead of a blank class TestClassOneForIoC + */ + public function testClassTwoResolvesClassOneWithArgument() + { + $class_one = IoC::resolve('TestClassOneForIoC'); + $class_one->test_variable = 42; + + $class_two = IoC::resolve('TestClassTwoForIoC', [$class_one]); + $this->assertEquals(42, $class_two->class_one->test_variable); + } + } \ No newline at end of file