Example #1
0
 /**
  * Tests creating the mocks
  * @param array $options
  * @return void
  * 
  * @dataProvider mockProvider
  */
 public function testMock(array $options)
 {
     $definition = new Definition($options);
     $this->assertEquals($options['id'], $definition->getId());
     $this->assertEquals($options['class'], $definition->getClass());
     $this->assertSame($options['parameters'], $definition->getParameters());
     $this->assertSame($options['shared'], $definition->isShared());
     $instance = $definition->getInstance();
     $this->assertInstanceOf($options['class'], $instance);
     $count = call_user_func(array($options['class'], 'getInstanceCount'));
     $instance = $definition();
     // check that definition is invokable
     $this->assertInstanceOf($options['class'], $instance);
     $this->assertSame($options['parameters'], $instance->getParameters());
     $newCount = call_user_func(array($options['class'], 'getInstanceCount'));
     if ($options['shared']) {
         $this->assertEquals($count, $newCount, 'New instance of class was created when meant to be shared');
     } else {
         $this->assertGreaterThan($count, $newCount, 'No new instance of class was created when not meant to be shared');
         if (!empty($options['parameters'])) {
             $this->setExpectedException('Nimbles\\Core\\Container\\Exception\\CreateInstanceFailure');
             $definition->setParameters(array());
             $instance = $definition();
         }
     }
 }