public function test()
 {
     $tableName = mt_rand();
     $subject = new Table($tableName);
     static::assertSame($tableName, $subject->getName());
     static::assertCount(0, $subject->getColumns());
     $columnName = mt_rand();
     $column = new Column($columnName);
     $subject->addColumn($column);
     static::assertCount(1, $subject->getColumns());
     $firstColumn = reset($subject->getColumns());
     static::assertSame($columnName, $firstColumn->getName());
     $dataRow = new DataRow();
     static::assertCount(0, $subject->getDataRows());
     $subject->addDataRow($dataRow);
     static::assertCount(1, $subject->getDataRows());
 }
 /**
  * @throws \InvalidArgumentException
  * @return \DatabaseExporterImporter\Entity\Table[]
  */
 private function createTables()
 {
     $tables = [];
     foreach ($this->parsedData as $tableName => $tableData) {
         $table = new Table($tableName);
         if (false === is_array($tableData)) {
             throw new \InvalidArgumentException('The data structure is incorrect.');
         }
         if (false === array_key_exists('columns', $tableData)) {
             throw new \InvalidArgumentException("The data structure is incorrect: 'columns' key is absent.");
         }
         foreach ($this->columnsCreator->getColumns($tableData['columns']) as $column) {
             $table->addColumn($column);
         }
         foreach ($this->dataRowsCreator->getDataRows($tableData['data_rows']) as $dataRow) {
             $table->addDataRow($dataRow);
         }
         $tables[] = $table;
     }
     return $tables;
 }