Added test for DDLUTILS-179: Output trunked when using the method write(Database, OutputStream) of DatabaseIO
git-svn-id: https://svn.apache.org/repos/asf/db/ddlutils/trunk@634941 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/src/test/org/apache/ddlutils/io/TestMisc.java b/src/test/org/apache/ddlutils/io/TestMisc.java
index 1c977a8..2a1d88b 100644
--- a/src/test/org/apache/ddlutils/io/TestMisc.java
+++ b/src/test/org/apache/ddlutils/io/TestMisc.java
@@ -19,6 +19,8 @@
* under the License.
*/
+import java.io.File;
+import java.io.FileOutputStream;
import java.io.Reader;
import java.io.StringReader;
import java.io.StringWriter;
@@ -30,6 +32,7 @@
import junit.framework.Test;
import org.apache.commons.beanutils.DynaBean;
+import org.apache.ddlutils.model.Database;
import org.apache.ddlutils.platform.hsqldb.HsqlDbPlatform;
import org.apache.ddlutils.platform.sybase.SybasePlatform;
import org.dom4j.Document;
@@ -1068,4 +1071,86 @@
assertEquals(getAdjustedModel(),
readModelFromDatabase("roundtriptest"));
}
+
+ /**
+ * Test for DDLUTILS-179.
+ */
+ public void testDdlUtils179() throws Exception
+ {
+ final String modelXml =
+ "<?xml version='1.0' encoding='ISO-8859-1'?>\n"+
+ "<database name='roundtriptest'>\n"+
+ " <table name='A'>\n"+
+ " <column name='pk' type='INTEGER' primaryKey='true' required='true'/>\n"+
+ " <column name='fk' type='INTEGER' required='false'/>\n"+
+ " <foreign-key name='AtoA' foreignTable='A'>\n"+
+ " <reference local='fk' foreign='pk'/>\n"+
+ " </foreign-key>\n"+
+ " </table>\n"+
+ " <table name='B'>\n"+
+ " <column name='pk' type='INTEGER' primaryKey='true' required='true'/>\n"+
+ " <column name='fk1' type='INTEGER' required='false'/>\n"+
+ " <column name='fk2' type='INTEGER' required='false'/>\n"+
+ " <foreign-key name='BtoB' foreignTable='B'>\n"+
+ " <reference local='fk1' foreign='pk'/>\n"+
+ " </foreign-key>\n"+
+ " <foreign-key name='BtoG' foreignTable='G'>\n"+
+ " <reference local='fk2' foreign='pk'/>\n"+
+ " </foreign-key>\n"+
+ " </table>\n"+
+ " <table name='C'>\n"+
+ " <column name='pk' type='INTEGER' primaryKey='true' required='true'/>\n"+
+ " <column name='fk' type='INTEGER' required='false'/>\n"+
+ " <foreign-key name='CtoD' foreignTable='D'>\n"+
+ " <reference local='fk' foreign='pk'/>\n"+
+ " </foreign-key>\n"+
+ " </table>\n"+
+ " <table name='D'>\n"+
+ " <column name='pk' type='INTEGER' primaryKey='true' required='true'/>\n"+
+ " <column name='fk' type='INTEGER' required='false'/>\n"+
+ " <foreign-key name='DtoF' foreignTable='F'>\n"+
+ " <reference local='fk' foreign='pk'/>\n"+
+ " </foreign-key>\n"+
+ " </table>\n"+
+ " <table name='E'>\n"+
+ " <column name='pk' type='INTEGER' primaryKey='true' required='true'/>\n"+
+ " </table>\n"+
+ " <table name='F'>\n"+
+ " <column name='pk' type='INTEGER' primaryKey='true' required='true'/>\n"+
+ " <column name='fk' type='INTEGER' required='false'/>\n"+
+ " <foreign-key name='FtoC' foreignTable='C'>\n"+
+ " <reference local='fk' foreign='pk'/>\n"+
+ " </foreign-key>\n"+
+ " </table>\n"+
+ " <table name='G'>\n"+
+ " <column name='pk' type='INTEGER' primaryKey='true' required='true'/>\n"+
+ " </table>\n"+
+ "</database>";
+
+ createDatabase(modelXml);
+
+ Database readModel = readModelFromDatabase("roundtriptest");
+
+ assertEquals(getAdjustedModel(),
+ readModel);
+
+ File tmpFile = File.createTempFile("model", ".xml");
+
+ try
+ {
+ DatabaseIO dbIO = new DatabaseIO();
+ FileOutputStream out = new FileOutputStream(tmpFile);
+
+ dbIO.write(readModel, out);
+ out.flush();
+ out.close();
+
+ assertEquals(getAdjustedModel(),
+ dbIO.read(tmpFile));
+ }
+ finally
+ {
+ tmpFile.delete();
+ }
+ }
}