public function testGetAlterTableSqlDispatchEvent()
 {
     $events = array('onSchemaAlterTable', 'onSchemaAlterTableAddColumn', 'onSchemaAlterTableRemoveColumn', 'onSchemaAlterTableChangeColumn', 'onSchemaAlterTableRenameColumn');
     $listenerMock = $this->getMock('GetAlterTableSqlDispatchEvenListener', $events);
     $listenerMock->expects($this->once())->method('onSchemaAlterTable');
     $listenerMock->expects($this->once())->method('onSchemaAlterTableAddColumn');
     $listenerMock->expects($this->once())->method('onSchemaAlterTableRemoveColumn');
     $listenerMock->expects($this->once())->method('onSchemaAlterTableChangeColumn');
     $listenerMock->expects($this->once())->method('onSchemaAlterTableRenameColumn');
     $eventManager = new EventManager();
     $events = array(Events::onSchemaAlterTable, Events::onSchemaAlterTableAddColumn, Events::onSchemaAlterTableRemoveColumn, Events::onSchemaAlterTableChangeColumn, Events::onSchemaAlterTableRenameColumn);
     $eventManager->addEventListener($events, $listenerMock);
     $this->_platform->setEventManager($eventManager);
     $tableDiff = new TableDiff('mytable');
     $tableDiff->addedColumns['added'] = new \Doctrine\DBAL\Schema\Column('added', \Doctrine\DBAL\Types\Type::getType('integer'), array());
     $tableDiff->removedColumns['removed'] = new \Doctrine\DBAL\Schema\Column('removed', \Doctrine\DBAL\Types\Type::getType('integer'), array());
     $tableDiff->changedColumns['changed'] = new \Doctrine\DBAL\Schema\ColumnDiff('changed', new \Doctrine\DBAL\Schema\Column('changed2', \Doctrine\DBAL\Types\Type::getType('string'), array()), array());
     $tableDiff->renamedColumns['renamed'] = new \Doctrine\DBAL\Schema\Column('renamed2', \Doctrine\DBAL\Types\Type::getType('integer'), array());
     $this->_platform->getAlterTableSQL($tableDiff);
 }
 /**
  * Initializes a new instance of the Connection class.
  *
  * @param array $params  The connection parameters.
  * @param Driver $driver
  * @param Configuration $config
  * @param EventManager $eventManager
  */
 public function __construct(array $params, Driver $driver, Configuration $config = null, EventManager $eventManager = null)
 {
     $this->_driver = $driver;
     $this->_params = $params;
     if (isset($params['pdo'])) {
         $this->_conn = $params['pdo'];
         $this->_isConnected = true;
     }
     // Create default config and event manager if none given
     if (!$config) {
         $config = new Configuration();
     }
     if (!$eventManager) {
         $eventManager = new EventManager();
     }
     $this->_config = $config;
     $this->_eventManager = $eventManager;
     $this->_expr = new Query\Expression\ExpressionBuilder($this);
     if (!isset($params['platform'])) {
         $this->_platform = $driver->getDatabasePlatform();
     } else {
         if ($params['platform'] instanceof Platforms\AbstractPlatform) {
             $this->_platform = $params['platform'];
         } else {
             throw DBALException::invalidPlatformSpecified();
         }
     }
     $this->_platform->setEventManager($eventManager);
     $this->_transactionIsolationLevel = $this->_platform->getDefaultTransactionIsolationLevel();
 }