blob: b24ec56fc4a4ac9f6cb10c5e08588566ac838d3e [file] [log] [blame]
<?php
/**
*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*
* @copyright Copyright (C) 2005-2010 eZ Systems AS. All rights reserved.
* @license http://www.apache.org/licenses/LICENSE-2.0 Apache License, Version 2.0
* @version //autogentag//
* @filesource
* @package DatabaseSchema
* @subpackage Tests
*/
/**
* Require schema reader/writer implementation for tests
*/
require 'testfiles/schema-handler-implementations.php';
/**
* @package DatabaseSchema
* @subpackage Tests
*/
class ezcDatabaseSchemaHandlerManagerTest extends ezcTestCase
{
public function testGetReaderByFormat1()
{
self::assertEquals( 'ezcDbSchemaPhpArrayReader', ezcDbSchemaHandlerManager::getReaderByFormat( 'array' ) );
self::assertEquals( 'ezcDbSchemaMysqlReader', ezcDbSchemaHandlerManager::getReaderByFormat( 'mysql' ) );
self::assertEquals( 'ezcDbSchemaPgsqlReader', ezcDbSchemaHandlerManager::getReaderByFormat( 'pgsql' ) );
self::assertEquals( 'ezcDbSchemaSqliteReader', ezcDbSchemaHandlerManager::getReaderByFormat( 'sqlite' ) );
self::assertEquals( 'ezcDbSchemaOracleReader', ezcDbSchemaHandlerManager::getReaderByFormat( 'oracle' ) );
self::assertEquals( 'ezcDbSchemaXmlReader', ezcDbSchemaHandlerManager::getReaderByFormat( 'xml' ) );
}
public function testGetWriterByFormat1()
{
self::assertEquals( 'ezcDbSchemaPhpArrayWriter', ezcDbSchemaHandlerManager::getWriterByFormat( 'array' ) );
self::assertEquals( 'ezcDbSchemaMysqlWriter', ezcDbSchemaHandlerManager::getWriterByFormat( 'mysql' ) );
self::assertEquals( 'ezcDbSchemaPgsqlWriter', ezcDbSchemaHandlerManager::getWriterByFormat( 'pgsql' ) );
self::assertEquals( 'ezcDbSchemaSqliteWriter', ezcDbSchemaHandlerManager::getWriterByFormat( 'sqlite' ) );
self::assertEquals( 'ezcDbSchemaOracleWriter', ezcDbSchemaHandlerManager::getWriterByFormat( 'oracle' ) );
self::assertEquals( 'ezcDbSchemaXmlWriter', ezcDbSchemaHandlerManager::getWriterByFormat( 'xml' ) );
}
public function testGetDiffReaderByFormat1()
{
self::assertEquals( 'ezcDbSchemaPhpArrayReader', ezcDbSchemaHandlerManager::getReaderByFormat( 'array' ) );
self::assertEquals( 'ezcDbSchemaMysqlReader', ezcDbSchemaHandlerManager::getReaderByFormat( 'mysql' ) );
self::assertEquals( 'ezcDbSchemaPgsqlReader', ezcDbSchemaHandlerManager::getReaderByFormat( 'pgsql' ) );
self::assertEquals( 'ezcDbSchemaSqliteReader', ezcDbSchemaHandlerManager::getReaderByFormat( 'sqlite' ) );
self::assertEquals( 'ezcDbSchemaOracleReader', ezcDbSchemaHandlerManager::getReaderByFormat( 'oracle' ) );
self::assertEquals( 'ezcDbSchemaXmlReader', ezcDbSchemaHandlerManager::getReaderByFormat( 'xml' ) );
}
public function testGetDiffWriterByFormat1()
{
self::assertEquals( 'ezcDbSchemaPhpArrayWriter', ezcDbSchemaHandlerManager::getWriterByFormat( 'array' ) );
self::assertEquals( 'ezcDbSchemaMysqlWriter', ezcDbSchemaHandlerManager::getWriterByFormat( 'mysql' ) );
self::assertEquals( 'ezcDbSchemaPgsqlWriter', ezcDbSchemaHandlerManager::getWriterByFormat( 'pgsql' ) );
self::assertEquals( 'ezcDbSchemaSqliteWriter', ezcDbSchemaHandlerManager::getWriterByFormat( 'sqlite' ) );
self::assertEquals( 'ezcDbSchemaOracleWriter', ezcDbSchemaHandlerManager::getWriterByFormat( 'oracle' ) );
self::assertEquals( 'ezcDbSchemaXmlWriter', ezcDbSchemaHandlerManager::getWriterByFormat( 'xml' ) );
}
public function testGetReaderByFormatException()
{
try
{
$name = ezcDbSchemaHandlerManager::getReaderByFormat( 'bogus' );
self::fail( 'Expected exception not thrown' );
}
catch ( ezcDbSchemaUnknownFormatException $e )
{
self::assertEquals( "There is no 'read' handler available for the 'bogus' format.", $e->getMessage() );
}
}
public function testGetWriterByFormatException()
{
try
{
$name = ezcDbSchemaHandlerManager::getWriterByFormat( 'bogus' );
self::fail( 'Expected exception not thrown' );
}
catch ( ezcDbSchemaUnknownFormatException $e )
{
self::assertEquals( "There is no 'write' handler available for the 'bogus' format.", $e->getMessage() );
}
}
public function testGetDiffReaderByFormatException()
{
try
{
$name = ezcDbSchemaHandlerManager::getDiffReaderByFormat( 'bogus' );
self::fail( 'Expected exception not thrown' );
}
catch ( ezcDbSchemaUnknownFormatException $e )
{
self::assertEquals( "There is no 'difference read' handler available for the 'bogus' format.", $e->getMessage() );
}
}
public function testGetDiffWriterByFormatException()
{
try
{
$name = ezcDbSchemaHandlerManager::getDiffWriterByFormat( 'bogus' );
self::fail( 'Expected exception not thrown' );
}
catch ( ezcDbSchemaUnknownFormatException $e )
{
self::assertEquals( "There is no 'difference write' handler available for the 'bogus' format.", $e->getMessage() );
}
}
public function testSupportedFormats1()
{
$formats = ezcDbSchemaHandlerManager::getSupportedFormats();
self::assertEquals( array( 'array', 'mysql', 'oracle', 'pgsql', 'sqlite', 'xml', 'persistent' ), $formats );
}
public function testSupportedFormats2()
{
ezcDbSchemaHandlerManager::addReader( 'test1', 'TestSchemaReaderImplementation' );
$formats = ezcDbSchemaHandlerManager::getSupportedFormats();
self::assertEquals( array( 'array', 'mysql', 'oracle', 'pgsql', 'sqlite', 'xml', 'test1', 'persistent' ), $formats );
}
public function testSupportedFormats3()
{
ezcDbSchemaHandlerManager::addWriter( 'test1', 'TestSchemaWriterImplementation' );
$formats = ezcDbSchemaHandlerManager::getSupportedFormats();
self::assertEquals( array( 'array', 'mysql', 'oracle', 'pgsql', 'sqlite', 'xml', 'test1', 'persistent' ), $formats );
}
public function testSupportedFormats4()
{
ezcDbSchemaHandlerManager::addReader( 'test1', 'TestSchemaReaderImplementation' );
ezcDbSchemaHandlerManager::addWriter( 'test1', 'TestSchemaWriterImplementation' );
$formats = ezcDbSchemaHandlerManager::getSupportedFormats();
self::assertEquals( array( 'array', 'mysql', 'oracle', 'pgsql', 'sqlite', 'xml', 'test1', 'persistent' ), $formats );
}
public function testSupportedDiffFormats1()
{
$formats = ezcDbSchemaHandlerManager::getSupportedDiffFormats();
self::assertEquals( array( 'array', 'xml', 'mysql', 'oracle', 'pgsql', 'sqlite' ), $formats );
}
public function testSupportedDiffFormats2()
{
ezcDbSchemaHandlerManager::addDiffReader( 'test1', 'TestSchemaDiffReaderImplementation' );
$formats = ezcDbSchemaHandlerManager::getSupportedDiffFormats();
self::assertEquals( array( 'array', 'xml', 'test1', 'mysql', 'oracle', 'pgsql', 'sqlite' ), $formats );
}
public function testSupportedDiffFormats3()
{
ezcDbSchemaHandlerManager::addDiffWriter( 'test1', 'TestSchemaDiffWriterImplementation' );
$formats = ezcDbSchemaHandlerManager::getSupportedDiffFormats();
self::assertEquals( array( 'array', 'xml', 'test1', 'mysql', 'oracle', 'pgsql', 'sqlite' ), $formats );
}
public function testSupportedDiffFormats4()
{
ezcDbSchemaHandlerManager::addDiffReader( 'test1', 'TestSchemaDiffReaderImplementation' );
ezcDbSchemaHandlerManager::addDiffWriter( 'test1', 'TestSchemaDiffWriterImplementation' );
$formats = ezcDbSchemaHandlerManager::getSupportedDiffFormats();
self::assertEquals( array( 'array', 'xml', 'test1', 'mysql', 'oracle', 'pgsql', 'sqlite' ), $formats );
}
public function testWrongReaderClass1()
{
try
{
@ezcDbSchemaHandlerManager::addReader( 'dummy', 'fooBar' );
self::fail( "Expected exception not thrown" );
}
catch ( ezcDbSchemaInvalidReaderClassException $e )
{
$this->assertEquals( "Class 'fooBar' does not exist, or does not implement the 'ezcDbSchemaReader' interface.", $e->getMessage() );
}
}
public function testWrongReaderClass2()
{
try
{
ezcDbSchemaHandlerManager::addReader( 'dummy', 'stdClass' );
self::fail( "Expected exception not thrown" );
}
catch ( ezcDbSchemaInvalidReaderClassException $e )
{
$this->assertEquals( "Class 'stdClass' does not exist, or does not implement the 'ezcDbSchemaReader' interface.", $e->getMessage() );
}
}
public function testWrongWriterClass1()
{
try
{
@ezcDbSchemaHandlerManager::addWriter( 'dummy', 'fooBar' );
self::fail( "Expected exception not thrown" );
}
catch ( ezcDbSchemaInvalidWriterClassException $e )
{
$this->assertEquals( "Class 'fooBar' does not exist, or does not implement the 'ezcDbSchemaWriter' interface.", $e->getMessage() );
}
}
public function testWrongWriterClass2()
{
try
{
ezcDbSchemaHandlerManager::addWriter( 'dummy', 'stdClass' );
self::fail( "Expected exception not thrown" );
}
catch ( ezcDbSchemaInvalidWriterClassException $e )
{
$this->assertEquals( "Class 'stdClass' does not exist, or does not implement the 'ezcDbSchemaWriter' interface.", $e->getMessage() );
}
}
public function testWrongDiffReaderClass1()
{
try
{
@ezcDbSchemaHandlerManager::addDiffReader( 'dummy', 'fooBar' );
self::fail( "Expected exception not thrown" );
}
catch ( ezcDbSchemaInvalidDiffReaderClassException $e )
{
$this->assertEquals( "Class 'fooBar' does not exist, or does not implement the 'ezcDbSchemaDiffReader' interface.", $e->getMessage() );
}
}
public function testWrongDiffReaderClass2()
{
try
{
ezcDbSchemaHandlerManager::addDiffReader( 'dummy', 'stdClass' );
self::fail( "Expected exception not thrown" );
}
catch ( ezcDbSchemaInvalidDiffReaderClassException $e )
{
$this->assertEquals( "Class 'stdClass' does not exist, or does not implement the 'ezcDbSchemaDiffReader' interface.", $e->getMessage() );
}
}
public function testWrongDiffWriterClass1()
{
try
{
@ezcDbSchemaHandlerManager::addDiffWriter( 'dummy', 'fooBar' );
self::fail( "Expected exception not thrown" );
}
catch ( ezcDbSchemaInvalidDiffWriterClassException $e )
{
$this->assertEquals( "Class 'fooBar' does not exist, or does not implement the 'ezcDbSchemaDiffWriter' interface.", $e->getMessage() );
}
}
public function testWrongDiffWriterClass2()
{
try
{
ezcDbSchemaHandlerManager::addDiffWriter( 'dummy', 'stdClass' );
self::fail( "Expected exception not thrown" );
}
catch ( ezcDbSchemaInvalidDiffWriterClassException $e )
{
$this->assertEquals( "Class 'stdClass' does not exist, or does not implement the 'ezcDbSchemaDiffWriter' interface.", $e->getMessage() );
}
}
public static function suite()
{
return new PHPUnit_Framework_TestSuite( 'ezcDatabaseSchemaHandlerManagerTest' );
}
}
?>