blob: 610fde0755b1a5319716f2b795a6c77abd921122 [file] [log] [blame]
package org.apache.ddlutils.io;
/*
* 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.
*/
import java.math.BigDecimal;
import java.sql.Date;
import java.util.List;
import junit.framework.Test;
/**
* Tests database alterations that drop columns.
*
* @version $Revision: $
*/
public class TestDropColumn extends RoundtripTestBase
{
/**
* Parameterized test case pattern.
*
* @return The tests
*/
public static Test suite() throws Exception
{
return getTests(TestDropColumn.class);
}
/**
* Tests the removal of a column.
*/
public void testDropColumn()
{
final String model1Xml =
"<?xml version='1.0' encoding='ISO-8859-1'?>\n"+
"<database name='roundtriptest'>\n"+
" <table name='roundtrip'>\n"+
" <column name='pk' type='INTEGER' primaryKey='true' required='true'/>\n"+
" <column name='avalue' type='TIMESTAMP'/>\n"+
" </table>\n"+
"</database>";
final String model2Xml =
"<?xml version='1.0' encoding='ISO-8859-1'?>\n"+
"<database name='roundtriptest'>\n"+
" <table name='roundtrip'>\n"+
" <column name='pk' type='INTEGER' primaryKey='true' required='true'/>\n"+
" </table>\n"+
"</database>";
createDatabase(model1Xml);
insertRow("roundtrip", new Object[] { new Integer(1), new Date(new java.util.Date().getTime()) });
alterDatabase(model2Xml);
assertEquals(getAdjustedModel(),
readModelFromDatabase("roundtriptest"));
List beans = getRows("roundtrip");
assertEquals(new Integer(1), beans.get(0), "pk");
}
/**
* Tests the removal of a auto increment column.
*/
public void testDropAutoIncrementColumn()
{
if (!getPlatformInfo().isNonPKIdentityColumnsSupported())
{
return;
}
final String model1Xml =
"<?xml version='1.0' encoding='ISO-8859-1'?>\n"+
"<database name='roundtriptest'>\n"+
" <table name='roundtrip'>\n"+
" <column name='pk' type='INTEGER' primaryKey='true' required='true'/>\n"+
" <column name='avalue' type='INTEGER' autoIncrement='true'/>\n"+
" </table>\n"+
"</database>";
final String model2Xml =
"<?xml version='1.0' encoding='ISO-8859-1'?>\n"+
"<database name='roundtriptest'>\n"+
" <table name='roundtrip'>\n"+
" <column name='pk' type='INTEGER' primaryKey='true' required='true'/>\n"+
" </table>\n"+
"</database>";
createDatabase(model1Xml);
insertRow("roundtrip", new Object[] { new Integer(1) });
alterDatabase(model2Xml);
assertEquals(getAdjustedModel(),
readModelFromDatabase("roundtriptest"));
List beans = getRows("roundtrip");
assertEquals(new Integer(1), beans.get(0), "pk");
}
/**
* Tests the removal of a required column.
*/
public void testDropRequiredColumn()
{
final String model1Xml =
"<?xml version='1.0' encoding='ISO-8859-1'?>\n"+
"<database name='roundtriptest'>\n"+
" <table name='roundtrip'>\n"+
" <column name='pk' type='INTEGER' primaryKey='true' required='true'/>\n"+
" <column name='avalue' type='NUMERIC' size='12,0' required='true'/>\n"+
" </table>\n"+
"</database>";
final String model2Xml =
"<?xml version='1.0' encoding='ISO-8859-1'?>\n"+
"<database name='roundtriptest'>\n"+
" <table name='roundtrip'>\n"+
" <column name='pk' type='INTEGER' primaryKey='true' required='true'/>\n"+
" </table>\n"+
"</database>";
createDatabase(model1Xml);
insertRow("roundtrip", new Object[] { new Integer(1), new BigDecimal(2) });
alterDatabase(model2Xml);
assertEquals(getAdjustedModel(),
readModelFromDatabase("roundtriptest"));
List beans = getRows("roundtrip");
assertEquals(new Integer(1), beans.get(0), "pk");
}
/**
* Tests the removal of a column that has a default value.
*/
public void testDropColumnWithDefault()
{
final String model1Xml =
"<?xml version='1.0' encoding='ISO-8859-1'?>\n"+
"<database name='roundtriptest'>\n"+
" <table name='roundtrip'>\n"+
" <column name='pk' type='INTEGER' primaryKey='true' required='true'/>\n"+
" <column name='avalue' type='DOUBLE' default='3.1'/>\n"+
" </table>\n"+
"</database>";
final String model2Xml =
"<?xml version='1.0' encoding='ISO-8859-1'?>\n"+
"<database name='roundtriptest'>\n"+
" <table name='roundtrip'>\n"+
" <column name='pk' type='INTEGER' primaryKey='true' required='true'/>\n"+
" </table>\n"+
"</database>";
createDatabase(model1Xml);
insertRow("roundtrip", new Object[] { new Integer(1) });
alterDatabase(model2Xml);
assertEquals(getAdjustedModel(),
readModelFromDatabase("roundtriptest"));
List beans = getRows("roundtrip");
assertEquals(new Integer(1), beans.get(0), "pk");
}
/**
* Tests the removal of a required column that has a default value.
*/
public void testDropRequiredColumnWithDefault()
{
final String model1Xml =
"<?xml version='1.0' encoding='ISO-8859-1'?>\n"+
"<database name='roundtriptest'>\n"+
" <table name='roundtrip'>\n"+
" <column name='pk' type='INTEGER' primaryKey='true' required='true'/>\n"+
" <column name='avalue' type='CHAR' size='8' required='true' default='text'/>\n"+
" </table>\n"+
"</database>";
final String model2Xml =
"<?xml version='1.0' encoding='ISO-8859-1'?>\n"+
"<database name='roundtriptest'>\n"+
" <table name='roundtrip'>\n"+
" <column name='pk' type='INTEGER' primaryKey='true' required='true'/>\n"+
" </table>\n"+
"</database>";
createDatabase(model1Xml);
insertRow("roundtrip", new Object[] { new Integer(1) });
alterDatabase(model2Xml);
assertEquals(getAdjustedModel(),
readModelFromDatabase("roundtriptest"));
List beans = getRows("roundtrip");
assertEquals(new Integer(1), beans.get(0), "pk");
}
/**
* Tests the removal of multiple columns.
*/
public void testDropMultipleColumns()
{
final String model1Xml =
"<?xml version='1.0' encoding='ISO-8859-1'?>\n"+
"<database name='roundtriptest'>\n"+
" <table name='roundtrip'>\n"+
" <column name='pk' type='INTEGER' primaryKey='true' required='true'/>\n"+
" <column name='avalue1' type='CHAR' size='8' default='text'/>\n"+
" <column name='avalue2' type='INTEGER'/>\n"+
" <column name='avalue3' type='DOUBLE' required='true'/>\n"+
" </table>\n"+
"</database>";
final String model2Xml =
"<?xml version='1.0' encoding='ISO-8859-1'?>\n"+
"<database name='roundtriptest'>\n"+
" <table name='roundtrip'>\n"+
" <column name='pk' type='INTEGER' primaryKey='true' required='true'/>\n"+
" <column name='avalue2' type='INTEGER'/>\n"+
" </table>\n"+
"</database>";
createDatabase(model1Xml);
insertRow("roundtrip", new Object[] { new Integer(1), null, new Integer(2), new Double(2) });
alterDatabase(model2Xml);
assertEquals(getAdjustedModel(),
readModelFromDatabase("roundtriptest"));
List beans = getRows("roundtrip");
assertEquals(new Integer(1), beans.get(0), "pk");
assertEquals(new Integer(2), beans.get(0), "avalue2");
}
/**
* Tests the removal of multiple columns, including one with auto incremen.
*/
public void testDropMultipleColumnsInclAutoIncrement()
{
if (!getPlatformInfo().isNonPKIdentityColumnsSupported())
{
return;
}
final String model1Xml =
"<?xml version='1.0' encoding='ISO-8859-1'?>\n"+
"<database name='roundtriptest'>\n"+
" <table name='roundtrip'>\n"+
" <column name='pk' type='INTEGER' primaryKey='true' required='true'/>\n"+
" <column name='avalue1' type='CHAR' size='8' default='text'/>\n"+
" <column name='avalue2' type='DOUBLE' required='true'/>\n"+
" <column name='avalue3' type='INTEGER' autoIncrement='true'/>\n"+
" </table>\n"+
"</database>";
final String model2Xml =
"<?xml version='1.0' encoding='ISO-8859-1'?>\n"+
"<database name='roundtriptest'>\n"+
" <table name='roundtrip'>\n"+
" <column name='pk' type='INTEGER' primaryKey='true' required='true'/>\n"+
" <column name='avalue2' type='DOUBLE' required='true'/>\n"+
" </table>\n"+
"</database>";
createDatabase(model1Xml);
insertRow("roundtrip", new Object[] { new Integer(1), null, new Double(2), null });
alterDatabase(model2Xml);
assertEquals(getAdjustedModel(),
readModelFromDatabase("roundtriptest"));
List beans = getRows("roundtrip");
assertEquals(new Integer(1), beans.get(0), "pk");
assertEquals(new Double(2), beans.get(0), "avalue2");
}
/**
* Tests the removal of a primary key column.
*/
public void testDropPKColumn()
{
final String model1Xml =
"<?xml version='1.0' encoding='ISO-8859-1'?>\n"+
"<database name='roundtriptest'>\n"+
" <table name='roundtrip'>\n"+
" <column name='pk1' type='INTEGER' primaryKey='true' required='true'/>\n"+
" <column name='pk2' type='INTEGER' primaryKey='true' required='true'/>\n"+
" <column name='avalue' type='INTEGER'/>\n"+
" </table>\n"+
"</database>";
final String model2Xml =
"<?xml version='1.0' encoding='ISO-8859-1'?>\n"+
"<database name='roundtriptest'>\n"+
" <table name='roundtrip'>\n"+
" <column name='pk2' type='INTEGER' primaryKey='true' required='true'/>\n"+
" <column name='avalue' type='INTEGER'/>\n"+
" </table>\n"+
"</database>";
createDatabase(model1Xml);
insertRow("roundtrip", new Object[] { new Integer(1), new Integer(2), new Integer(3) });
alterDatabase(model2Xml);
assertEquals(getAdjustedModel(),
readModelFromDatabase("roundtriptest"));
List beans = getRows("roundtrip");
assertEquals(new Integer(2), beans.get(0), "pk2");
assertEquals(new Integer(3), beans.get(0), "avalue");
}
/**
* Tests the removal of the single primary key column.
*/
public void testDropSinglePKColumn()
{
final String model1Xml =
"<?xml version='1.0' encoding='ISO-8859-1'?>\n"+
"<database name='roundtriptest'>\n"+
" <table name='roundtrip'>\n"+
" <column name='pk' type='INTEGER' primaryKey='true' required='true'/>\n"+
" <column name='avalue' type='INTEGER'/>\n"+
" </table>\n"+
"</database>";
final String model2Xml =
"<?xml version='1.0' encoding='ISO-8859-1'?>\n"+
"<database name='roundtriptest'>\n"+
" <table name='roundtrip'>\n"+
" <column name='avalue' type='INTEGER'/>\n"+
" </table>\n"+
"</database>";
createDatabase(model1Xml);
insertRow("roundtrip", new Object[] { new Integer(1), new Integer(2) });
alterDatabase(model2Xml);
assertEquals(getAdjustedModel(),
readModelFromDatabase("roundtriptest"));
List beans = getRows("roundtrip");
assertEquals(new Integer(2), beans.get(0), "avalue");
}
/**
* Tests the removal of multiple primary key columns.
*/
public void testDropMultiplePKColumns()
{
final String model1Xml =
"<?xml version='1.0' encoding='ISO-8859-1'?>\n"+
"<database name='roundtriptest'>\n"+
" <table name='roundtrip'>\n"+
" <column name='pk1' type='INTEGER' primaryKey='true' required='true'/>\n"+
" <column name='pk2' type='INTEGER' primaryKey='true' required='true'/>\n"+
" <column name='pk3' type='INTEGER' primaryKey='true' required='true'/>\n"+
" <column name='avalue' type='INTEGER'/>\n"+
" </table>\n"+
"</database>";
final String model2Xml =
"<?xml version='1.0' encoding='ISO-8859-1'?>\n"+
"<database name='roundtriptest'>\n"+
" <table name='roundtrip'>\n"+
" <column name='pk2' type='INTEGER' primaryKey='true' required='true'/>\n"+
" <column name='avalue' type='INTEGER'/>\n"+
" </table>\n"+
"</database>";
createDatabase(model1Xml);
insertRow("roundtrip", new Object[] { new Integer(1), new Integer(2), new Integer(3), new Integer(4) });
alterDatabase(model2Xml);
assertEquals(getAdjustedModel(),
readModelFromDatabase("roundtriptest"));
List beans = getRows("roundtrip");
assertEquals(new Integer(2), beans.get(0), "pk2");
assertEquals(new Integer(4), beans.get(0), "avalue");
}
/**
* Tests the removal of all primary key columns.
*/
public void testDropAllPKColumns()
{
final String model1Xml =
"<?xml version='1.0' encoding='ISO-8859-1'?>\n"+
"<database name='roundtriptest'>\n"+
" <table name='roundtrip'>\n"+
" <column name='pk1' type='INTEGER' primaryKey='true' required='true'/>\n"+
" <column name='pk2' type='INTEGER' primaryKey='true' required='true'/>\n"+
" <column name='pk3' type='INTEGER' primaryKey='true' required='true'/>\n"+
" <column name='avalue' type='INTEGER'/>\n"+
" </table>\n"+
"</database>";
final String model2Xml =
"<?xml version='1.0' encoding='ISO-8859-1'?>\n"+
"<database name='roundtriptest'>\n"+
" <table name='roundtrip'>\n"+
" <column name='avalue' type='INTEGER'/>\n"+
" </table>\n"+
"</database>";
createDatabase(model1Xml);
insertRow("roundtrip", new Object[] { new Integer(1), new Integer(2), new Integer(3), new Integer(4) });
alterDatabase(model2Xml);
assertEquals(getAdjustedModel(),
readModelFromDatabase("roundtriptest"));
List beans = getRows("roundtrip");
assertEquals(new Integer(4), beans.get(0), "avalue");
}
/**
* Tests the removal of a column from a non-unique index.
*/
public void testDropColumnFromIndex()
{
if (!getPlatformInfo().isIndicesSupported())
{
return;
}
final String model1Xml =
"<?xml version='1.0' encoding='ISO-8859-1'?>\n"+
"<database name='roundtriptest'>\n"+
" <table name='roundtrip'>\n"+
" <column name='pk' type='INTEGER' primaryKey='true' required='true'/>\n"+
" <column name='avalue1' type='INTEGER'/>\n"+
" <column name='avalue2' type='VARCHAR' size='32'/>\n"+
" <index name='test'>\n"+
" <index-column name='avalue1'/>\n"+
" <index-column name='avalue2'/>\n"+
" </index>\n"+
" </table>\n"+
"</database>";
final String model2Xml =
"<?xml version='1.0' encoding='ISO-8859-1'?>\n"+
"<database name='roundtriptest'>\n"+
" <table name='roundtrip'>\n"+
" <column name='pk' type='INTEGER' primaryKey='true' required='true'/>\n"+
" <column name='avalue2' type='VARCHAR' size='32'/>\n"+
" <index name='test'>\n"+
" <index-column name='avalue2'/>\n"+
" </index>\n"+
" </table>\n"+
"</database>";
createDatabase(model1Xml);
insertRow("roundtrip", new Object[] { new Integer(1), new Integer(2), "text" });
alterDatabase(model2Xml);
assertEquals(getAdjustedModel(),
readModelFromDatabase("roundtriptest"));
List beans = getRows("roundtrip");
assertEquals(new Integer(1), beans.get(0), "pk");
assertEquals((Object)"text", beans.get(0), "avalue2");
}
/**
* Tests the removal of the single column from an unique index.
*/
public void testDropSingleColumnFromIndex()
{
if (!getPlatformInfo().isIndicesSupported())
{
return;
}
final String model1Xml =
"<?xml version='1.0' encoding='ISO-8859-1'?>\n"+
"<database name='roundtriptest'>\n"+
" <table name='roundtrip'>\n"+
" <column name='pk' type='INTEGER' primaryKey='true' required='true'/>\n"+
" <column name='avalue' type='INTEGER'/>\n"+
" <unique name='test'>\n"+
" <unique-column name='avalue'/>\n"+
" </unique>\n"+
" </table>\n"+
"</database>";
final String model2Xml =
"<?xml version='1.0' encoding='ISO-8859-1'?>\n"+
"<database name='roundtriptest'>\n"+
" <table name='roundtrip'>\n"+
" <column name='pk' type='INTEGER' primaryKey='true' required='true'/>\n"+
" </table>\n"+
"</database>";
createDatabase(model1Xml);
insertRow("roundtrip", new Object[] { new Integer(1), new Integer(2) });
alterDatabase(model2Xml);
assertEquals(getAdjustedModel(),
readModelFromDatabase("roundtriptest"));
List beans = getRows("roundtrip");
assertEquals(new Integer(1), beans.get(0), "pk");
}
/**
* Tests the removal of a column from a non-unique index.
*/
public void testDropMultipleColumnsFromIndex()
{
if (!getPlatformInfo().isIndicesSupported())
{
return;
}
final String model1Xml =
"<?xml version='1.0' encoding='ISO-8859-1'?>\n"+
"<database name='roundtriptest'>\n"+
" <table name='roundtrip'>\n"+
" <column name='pk' type='INTEGER' primaryKey='true' required='true'/>\n"+
" <column name='avalue1' type='INTEGER'/>\n"+
" <column name='avalue2' type='VARCHAR' size='32'/>\n"+
" <column name='avalue3' type='TIMESTAMP'/>\n"+
" <index name='test'>\n"+
" <index-column name='avalue1'/>\n"+
" <index-column name='avalue2'/>\n"+
" <index-column name='avalue3'/>\n"+
" </index>\n"+
" </table>\n"+
"</database>";
final String model2Xml =
"<?xml version='1.0' encoding='ISO-8859-1'?>\n"+
"<database name='roundtriptest'>\n"+
" <table name='roundtrip'>\n"+
" <column name='pk' type='INTEGER' primaryKey='true' required='true'/>\n"+
" <column name='avalue2' type='VARCHAR' size='32'/>\n"+
" <index name='test'>\n"+
" <index-column name='avalue2'/>\n"+
" </index>\n"+
" </table>\n"+
"</database>";
createDatabase(model1Xml);
insertRow("roundtrip", new Object[] { new Integer(1), new Integer(2), "text" });
alterDatabase(model2Xml);
assertEquals(getAdjustedModel(),
readModelFromDatabase("roundtriptest"));
List beans = getRows("roundtrip");
assertEquals(new Integer(1), beans.get(0), "pk");
assertEquals((Object)"text", beans.get(0), "avalue2");
}
/**
* Tests the removal of all column from an unique index.
*/
public void testDropAllColumnsFromIndex()
{
if (!getPlatformInfo().isIndicesSupported())
{
return;
}
final String model1Xml =
"<?xml version='1.0' encoding='ISO-8859-1'?>\n"+
"<database name='roundtriptest'>\n"+
" <table name='roundtrip'>\n"+
" <column name='pk' type='INTEGER' primaryKey='true' required='true'/>\n"+
" <column name='avalue1' type='INTEGER' required='true'/>\n"+
" <column name='avalue2' type='VARCHAR' size='32' required='true'/>\n"+
" <column name='avalue3' type='DOUBLE' required='true'/>\n"+
" <unique name='test'>\n"+
" <unique-column name='avalue1'/>\n"+
" <unique-column name='avalue2'/>\n"+
" <unique-column name='avalue3'/>\n"+
" </unique>\n"+
" </table>\n"+
"</database>";
final String model2Xml =
"<?xml version='1.0' encoding='ISO-8859-1'?>\n"+
"<database name='roundtriptest'>\n"+
" <table name='roundtrip'>\n"+
" <column name='pk' type='INTEGER' primaryKey='true' required='true'/>\n"+
" </table>\n"+
"</database>";
createDatabase(model1Xml);
insertRow("roundtrip", new Object[] { new Integer(1), new Integer(2), "text", new Double(2.0) });
alterDatabase(model2Xml);
assertEquals(getAdjustedModel(),
readModelFromDatabase("roundtriptest"));
List beans = getRows("roundtrip");
assertEquals(new Integer(1), beans.get(0), "pk");
}
/**
* Tests the removal of the single local column from a foreign key.
*/
public void testDropSingleLocalColumnFromFK()
{
final String model1Xml =
"<?xml version='1.0' encoding='ISO-8859-1'?>\n"+
"<database name='roundtriptest'>\n"+
" <table name='roundtrip1'>\n"+
" <column name='pk' type='VARCHAR' size='32' primaryKey='true' required='true'/>\n"+
" </table>\n"+
" <table name='roundtrip2'>\n"+
" <column name='pk' type='INTEGER' primaryKey='true' required='true'/>\n"+
" <column name='avalue' type='VARCHAR' size='32'/>\n"+
" <foreign-key foreignTable='roundtrip1'>\n"+
" <reference local='avalue' foreign='pk'/>\n"+
" </foreign-key>\n"+
" </table>\n"+
"</database>";
final String model2Xml =
"<?xml version='1.0' encoding='ISO-8859-1'?>\n"+
"<database name='roundtriptest'>\n"+
" <table name='roundtrip1'>\n"+
" <column name='pk' type='VARCHAR' size='32' primaryKey='true' required='true'/>\n"+
" </table>\n"+
" <table name='roundtrip2'>\n"+
" <column name='pk' type='INTEGER' primaryKey='true' required='true'/>\n"+
" </table>\n"+
"</database>";
createDatabase(model1Xml);
insertRow("roundtrip1", new Object[] { "text" });
insertRow("roundtrip2", new Object[] { new Integer(1), "text" });
alterDatabase(model2Xml);
assertEquals(getAdjustedModel(),
readModelFromDatabase("roundtriptest"));
List beans1 = getRows("roundtrip1");
List beans2 = getRows("roundtrip2");
assertEquals((Object)"text", beans1.get(0), "pk");
assertEquals(new Integer(1), beans2.get(0), "pk");
}
/**
* Tests the removal of the single foreign column from a foreign key.
*/
public void testDropSingleForeignColumnFromFK()
{
final String model1Xml =
"<?xml version='1.0' encoding='ISO-8859-1'?>\n"+
"<database name='roundtriptest'>\n"+
" <table name='roundtrip1'>\n"+
" <column name='pk' type='VARCHAR' size='32' primaryKey='true' required='true'/>\n"+
" <column name='avalue' type='INTEGER'/>\n"+
" </table>\n"+
" <table name='roundtrip2'>\n"+
" <column name='pk' type='INTEGER' primaryKey='true' required='true'/>\n"+
" <column name='avalue' type='VARCHAR' size='32'/>\n"+
" <foreign-key foreignTable='roundtrip1'>\n"+
" <reference local='avalue' foreign='pk'/>\n"+
" </foreign-key>\n"+
" </table>\n"+
"</database>";
final String model2Xml =
"<?xml version='1.0' encoding='ISO-8859-1'?>\n"+
"<database name='roundtriptest'>\n"+
" <table name='roundtrip1'>\n"+
" <column name='avalue' type='INTEGER'/>\n"+
" </table>\n"+
" <table name='roundtrip2'>\n"+
" <column name='pk' type='INTEGER' primaryKey='true' required='true'/>\n"+
" <column name='avalue' type='VARCHAR' size='32'/>\n"+
" </table>\n"+
"</database>";
createDatabase(model1Xml);
insertRow("roundtrip1", new Object[] { "text", new Integer(2) });
insertRow("roundtrip2", new Object[] { new Integer(1), "text" });
alterDatabase(model2Xml);
assertEquals(getAdjustedModel(),
readModelFromDatabase("roundtriptest"));
List beans1 = getRows("roundtrip1");
List beans2 = getRows("roundtrip2");
assertEquals(new Integer(2), beans1.get(0), "avalue");
assertEquals(new Integer(1), beans2.get(0), "pk");
assertEquals((Object)"text", beans2.get(0), "avalue");
}
/**
* Tests the removal of all local columns from a foreign key.
*/
public void testDropAllLocalColumnsFromFK()
{
final String model1Xml =
"<?xml version='1.0' encoding='ISO-8859-1'?>\n"+
"<database name='roundtriptest'>\n"+
" <table name='roundtrip1'>\n"+
" <column name='pk1' type='VARCHAR' size='32' primaryKey='true' required='true'/>\n"+
" <column name='pk2' type='INTEGER' primaryKey='true' required='true'/>\n"+
" </table>\n"+
" <table name='roundtrip2'>\n"+
" <column name='pk' type='INTEGER' primaryKey='true' required='true'/>\n"+
" <column name='avalue1' type='VARCHAR' size='32'/>\n"+
" <column name='avalue2' type='INTEGER'/>\n"+
" <foreign-key foreignTable='roundtrip1'>\n"+
" <reference local='avalue1' foreign='pk1'/>\n"+
" <reference local='avalue2' foreign='pk2'/>\n"+
" </foreign-key>\n"+
" </table>\n"+
"</database>";
final String model2Xml =
"<?xml version='1.0' encoding='ISO-8859-1'?>\n"+
"<database name='roundtriptest'>\n"+
" <table name='roundtrip1'>\n"+
" <column name='pk1' type='VARCHAR' size='32' primaryKey='true' required='true'/>\n"+
" <column name='pk2' type='INTEGER' primaryKey='true' required='true'/>\n"+
" </table>\n"+
" <table name='roundtrip2'>\n"+
" <column name='pk' type='INTEGER' primaryKey='true' required='true'/>\n"+
" </table>\n"+
"</database>";
createDatabase(model1Xml);
insertRow("roundtrip1", new Object[] { "text", new Integer(2) });
insertRow("roundtrip2", new Object[] { new Integer(1), "text", new Integer(2) });
alterDatabase(model2Xml);
assertEquals(getAdjustedModel(),
readModelFromDatabase("roundtriptest"));
List beans1 = getRows("roundtrip1");
List beans2 = getRows("roundtrip2");
assertEquals((Object)"text", beans1.get(0), "pk1");
assertEquals(new Integer(2), beans1.get(0), "pk2");
assertEquals(new Integer(1), beans2.get(0), "pk");
}
/**
* Tests the removal of all foreign columns from a foreign key.
*/
public void testDropAllForeignColumnsFromFK()
{
final String model1Xml =
"<?xml version='1.0' encoding='ISO-8859-1'?>\n"+
"<database name='roundtriptest'>\n"+
" <table name='roundtrip1'>\n"+
" <column name='pk1' type='VARCHAR' size='32' primaryKey='true' required='true'/>\n"+
" <column name='pk2' type='INTEGER' primaryKey='true' required='true'/>\n"+
" <column name='avalue' type='INTEGER'/>\n"+
" </table>\n"+
" <table name='roundtrip2'>\n"+
" <column name='pk' type='INTEGER' primaryKey='true' required='true'/>\n"+
" <column name='avalue1' type='VARCHAR' size='32'/>\n"+
" <column name='avalue2' type='INTEGER'/>\n"+
" <foreign-key foreignTable='roundtrip1'>\n"+
" <reference local='avalue1' foreign='pk1'/>\n"+
" <reference local='avalue2' foreign='pk2'/>\n"+
" </foreign-key>\n"+
" </table>\n"+
"</database>";
final String model2Xml =
"<?xml version='1.0' encoding='ISO-8859-1'?>\n"+
"<database name='roundtriptest'>\n"+
" <table name='roundtrip1'>\n"+
" <column name='avalue' type='INTEGER'/>\n"+
" </table>\n"+
" <table name='roundtrip2'>\n"+
" <column name='pk' type='INTEGER' primaryKey='true' required='true'/>\n"+
" <column name='avalue1' type='VARCHAR' size='32'/>\n"+
" <column name='avalue2' type='INTEGER'/>\n"+
" </table>\n"+
"</database>";
createDatabase(model1Xml);
insertRow("roundtrip1", new Object[] { "text", new Integer(2), new Integer(3) });
insertRow("roundtrip2", new Object[] { new Integer(1), "text", new Integer(2) });
alterDatabase(model2Xml);
assertEquals(getAdjustedModel(),
readModelFromDatabase("roundtriptest"));
List beans1 = getRows("roundtrip1");
List beans2 = getRows("roundtrip2");
assertEquals(new Integer(3), beans1.get(0), "avalue");
assertEquals(new Integer(1), beans2.get(0), "pk");
assertEquals((Object)"text", beans2.get(0), "avalue1");
assertEquals(new Integer(2), beans2.get(0), "avalue2");
}
/**
* Tests the removal of a local and foreign column from a foreign key.
*/
public void testDropLocalAndForeignColumnFromFK()
{
final String model1Xml =
"<?xml version='1.0' encoding='ISO-8859-1'?>\n"+
"<database name='roundtriptest'>\n"+
" <table name='roundtrip1'>\n"+
" <column name='pk1' type='VARCHAR' size='32' primaryKey='true' required='true'/>\n"+
" <column name='pk2' type='INTEGER' primaryKey='true' required='true'/>\n"+
" <column name='avalue' type='INTEGER'/>\n"+
" </table>\n"+
" <table name='roundtrip2'>\n"+
" <column name='pk' type='INTEGER' primaryKey='true' required='true'/>\n"+
" <column name='avalue1' type='VARCHAR' size='32'/>\n"+
" <column name='avalue2' type='INTEGER'/>\n"+
" <foreign-key foreignTable='roundtrip1'>\n"+
" <reference local='avalue1' foreign='pk1'/>\n"+
" <reference local='avalue2' foreign='pk2'/>\n"+
" </foreign-key>\n"+
" </table>\n"+
"</database>";
final String model2Xml =
"<?xml version='1.0' encoding='ISO-8859-1'?>\n"+
"<database name='roundtriptest'>\n"+
" <table name='roundtrip1'>\n"+
" <column name='pk2' type='INTEGER' primaryKey='true' required='true'/>\n"+
" <column name='avalue' type='INTEGER'/>\n"+
" </table>\n"+
" <table name='roundtrip2'>\n"+
" <column name='pk' type='INTEGER' primaryKey='true' required='true'/>\n"+
" <column name='avalue2' type='INTEGER'/>\n"+
" <foreign-key foreignTable='roundtrip1'>\n"+
" <reference local='avalue2' foreign='pk2'/>\n"+
" </foreign-key>\n"+
" </table>\n"+
"</database>";
createDatabase(model1Xml);
insertRow("roundtrip1", new Object[] { "text", new Integer(2), new Integer(3) });
insertRow("roundtrip2", new Object[] { new Integer(1), "text", new Integer(2) });
alterDatabase(model2Xml);
assertEquals(getAdjustedModel(),
readModelFromDatabase("roundtriptest"));
List beans1 = getRows("roundtrip1");
List beans2 = getRows("roundtrip2");
assertEquals(new Integer(2), beans1.get(0), "pk2");
assertEquals(new Integer(3), beans1.get(0), "avalue");
assertEquals(new Integer(1), beans2.get(0), "pk");
assertEquals(new Integer(2), beans2.get(0), "avalue2");
}
/**
* Tests the removal of multiple local and foreign columns from a foreign key.
*/
public void testDropMultipleLocalAndForeignColumnsFromFK()
{
final String model1Xml =
"<?xml version='1.0' encoding='ISO-8859-1'?>\n"+
"<database name='roundtriptest'>\n"+
" <table name='roundtrip1'>\n"+
" <column name='pk1' type='VARCHAR' size='32' primaryKey='true' required='true'/>\n"+
" <column name='pk2' type='INTEGER' primaryKey='true' required='true'/>\n"+
" <column name='pk3' type='DOUBLE' primaryKey='true' required='true'/>\n"+
" <column name='avalue' type='INTEGER'/>\n"+
" </table>\n"+
" <table name='roundtrip2'>\n"+
" <column name='pk' type='INTEGER' primaryKey='true' required='true'/>\n"+
" <column name='avalue1' type='VARCHAR' size='32'/>\n"+
" <column name='avalue2' type='INTEGER'/>\n"+
" <column name='avalue3' type='DOUBLE'/>\n"+
" <foreign-key foreignTable='roundtrip1'>\n"+
" <reference local='avalue1' foreign='pk1'/>\n"+
" <reference local='avalue2' foreign='pk2'/>\n"+
" <reference local='avalue3' foreign='pk3'/>\n"+
" </foreign-key>\n"+
" </table>\n"+
"</database>";
final String model2Xml =
"<?xml version='1.0' encoding='ISO-8859-1'?>\n"+
"<database name='roundtriptest'>\n"+
" <table name='roundtrip1'>\n"+
" <column name='pk2' type='INTEGER' primaryKey='true' required='true'/>\n"+
" <column name='avalue' type='INTEGER'/>\n"+
" </table>\n"+
" <table name='roundtrip2'>\n"+
" <column name='pk' type='INTEGER' primaryKey='true' required='true'/>\n"+
" <column name='avalue2' type='INTEGER'/>\n"+
" <foreign-key foreignTable='roundtrip1'>\n"+
" <reference local='avalue2' foreign='pk2'/>\n"+
" </foreign-key>\n"+
" </table>\n"+
"</database>";
createDatabase(model1Xml);
insertRow("roundtrip1", new Object[] { "text", new Integer(2), new Double(4), new Integer(3) });
insertRow("roundtrip2", new Object[] { new Integer(1), "text", new Integer(2), new Double(4) });
alterDatabase(model2Xml);
assertEquals(getAdjustedModel(),
readModelFromDatabase("roundtriptest"));
List beans1 = getRows("roundtrip1");
List beans2 = getRows("roundtrip2");
assertEquals(new Integer(2), beans1.get(0), "pk2");
assertEquals(new Integer(3), beans1.get(0), "avalue");
assertEquals(new Integer(1), beans2.get(0), "pk");
assertEquals(new Integer(2), beans2.get(0), "avalue2");
}
/**
* Tests the removal of all local and foreign columns from a foreign key.
*/
public void testDropAllLocalAndForeignColumnsFromFK()
{
final String model1Xml =
"<?xml version='1.0' encoding='ISO-8859-1'?>\n"+
"<database name='roundtriptest'>\n"+
" <table name='roundtrip1'>\n"+
" <column name='pk1' type='VARCHAR' size='32' primaryKey='true' required='true'/>\n"+
" <column name='pk2' type='INTEGER' primaryKey='true' required='true'/>\n"+
" <column name='pk3' type='DOUBLE' primaryKey='true' required='true'/>\n"+
" <column name='avalue' type='INTEGER'/>\n"+
" </table>\n"+
" <table name='roundtrip2'>\n"+
" <column name='pk' type='INTEGER' primaryKey='true' required='true'/>\n"+
" <column name='avalue1' type='VARCHAR' size='32'/>\n"+
" <column name='avalue2' type='INTEGER'/>\n"+
" <column name='avalue3' type='DOUBLE'/>\n"+
" <foreign-key foreignTable='roundtrip1'>\n"+
" <reference local='avalue1' foreign='pk1'/>\n"+
" <reference local='avalue2' foreign='pk2'/>\n"+
" <reference local='avalue3' foreign='pk3'/>\n"+
" </foreign-key>\n"+
" </table>\n"+
"</database>";
final String model2Xml =
"<?xml version='1.0' encoding='ISO-8859-1'?>\n"+
"<database name='roundtriptest'>\n"+
" <table name='roundtrip1'>\n"+
" <column name='avalue' type='INTEGER'/>\n"+
" </table>\n"+
" <table name='roundtrip2'>\n"+
" <column name='pk' type='INTEGER' primaryKey='true' required='true'/>\n"+
" </table>\n"+
"</database>";
createDatabase(model1Xml);
insertRow("roundtrip1", new Object[] { "text", new Integer(2), new Double(4), new Integer(3) });
insertRow("roundtrip2", new Object[] { new Integer(1), "text", new Integer(2), new Double(4) });
alterDatabase(model2Xml);
assertEquals(getAdjustedModel(),
readModelFromDatabase("roundtriptest"));
List beans1 = getRows("roundtrip1");
List beans2 = getRows("roundtrip2");
assertEquals(new Integer(3), beans1.get(0), "avalue");
assertEquals(new Integer(1), beans2.get(0), "pk");
}
}