<?php require_once 'PHPUnit/Extensions/Database/DataSet/AbstractDataSet.php'; require_once 'PHPUnit/Extensions/Database/DataSet/DefaultTableIterator.php'; require_once 'PHPUnit/Extensions/Database/DataSet/DefaultTable.php'; require_once 'PHPUnit/Extensions/Database/DataSet/DefaultTableMetaData.php'; class SchemaTesting_DbUnit_ArrayDataSet extends PHPUnit_Extensions_Database_DataSet_AbstractDataSet { /** * @var array */ protected $tables = array(); /** * @param array $data */ public function __construct( array $data ) { foreach ( $data AS $tableName => $rows ) { $columns = array(); if ( isset( $rows[0] ) ) { $columns = array_keys($rows[0]); } $metaData = new PHPUnit_Extensions_Database_DataSet_DefaultTableMetaData( $tableName, $columns ); $table = new PHPUnit_Extensions_Database_DataSet_DefaultTable( $metaData ); foreach ( $rows AS $row ) { $table->addRow( $row ); } $this->tables[$tableName] = $table; } } protected function createIterator( $reverse = FALSE ) { return new PHPUnit_Extensions_Database_DataSet_DefaultTableIterator( $this->tables, $reverse ); } public function getTable( $tableName ) { if ( !isset( $this->tables[$tableName] ) ) { throw new InvalidArgumentException( "$tableName is not a table in the current database." ); } return $this->tables[$tableName]; } } ?>