/**
* @test
*/
public function allBasicOptionsAreSetCorrectly()
{
$factoryObjectName = 'ConfigurationBuilderTest' . md5(uniqid(mt_rand(), true));
eval('class ' . $factoryObjectName . ' { public function manufacture() {} } ');
$configurationArray = [];
$configurationArray['scope'] = 'prototype';
$configurationArray['className'] = __CLASS__;
$configurationArray['factoryObjectName'] = $factoryObjectName;
$configurationArray['factoryMethodName'] = 'manufacture';
$configurationArray['lifecycleInitializationMethodName'] = 'initializationMethod';
$configurationArray['lifecycleShutdownMethodName'] = 'shutdownMethod';
$configurationArray['autowiring'] = false;
$objectConfiguration = new Configuration('TestObject', __CLASS__);
$objectConfiguration->setScope(Configuration::SCOPE_PROTOTYPE);
$objectConfiguration->setClassName(__CLASS__);
$objectConfiguration->setFactoryObjectName($factoryObjectName);
$objectConfiguration->setFactoryMethodName('manufacture');
$objectConfiguration->setLifecycleInitializationMethodName('initializationMethod');
$objectConfiguration->setLifecycleShutdownMethodName('shutdownMethod');
$objectConfiguration->setAutowiring(Configuration::AUTOWIRING_MODE_OFF);
$configurationBuilder = $this->getAccessibleMock(ConfigurationBuilder::class, ['dummy']);
$builtObjectConfiguration = $configurationBuilder->_call('parseConfigurationArray', 'TestObject', $configurationArray, __CLASS__);
$this->assertEquals($objectConfiguration, $builtObjectConfiguration, 'The manually created and the built object configuration don\'t match.');
}