diff --git a/bucket.test.php b/bucket.test.php index fab87d2..319abb7 100644 --- a/bucket.test.php +++ b/bucket.test.php @@ -74,6 +74,49 @@ function __call($name, $args) { } } +function test_autoload_fail($classname) { + throw new TriedToAutoloadException($classname); +} + +class TestOfBucketAutoload extends UnitTestCase { + function setUp() { + $this->spl_autoload_functions = spl_autoload_functions(); + if ($this->spl_autoload_functions) { + foreach ($this->spl_autoload_functions as $fn) { + spl_autoload_unregister($fn); + } + } + } + function tearDown() { + if (spl_autoload_functions()) { + foreach (spl_autoload_functions() as $fn) { + spl_autoload_unregister($fn); + } + } + if ($this->spl_autoload_functions) { + foreach ($this->spl_autoload_functions as $fn) { + spl_autoload_register($fn); + } + } + } + function test_undefined_class_triggers_autoload() { + spl_autoload_register('test_autoload_fail'); + $bucket = new bucket_Container(); + $this->expectException('TriedToAutoloadException'); + $bucket->create('RequireUndefinedClass'); + } + function test_autoload_gets_canonical_classname() { + spl_autoload_register('test_autoload_fail'); + $bucket = new bucket_Container(); + try { + $bucket->create('RequireUndefinedClass'); + $this->fail("Expected TriedToAutoloadException"); + } catch (TriedToAutoloadException $ex) { + $this->assertEqual($ex->classname, 'ClassThatDoesntExist'); + } + } +} + class TestOfBucketResolving extends UnitTestCase { function test_can_create_empty_container() { $bucket = new bucket_Container(); @@ -234,4 +277,4 @@ function test_setting_an_instance_and_getting_it_should_return_same_instance() { $bucket->set($obj); $this->assertSame($bucket->get('StdClass'), $obj); } -} \ No newline at end of file +}