From fcf9ef1843ed249e2bc2797151c809811baa9121 Mon Sep 17 00:00:00 2001 From: James Ahlborn Date: Mon, 27 Apr 2015 02:27:15 +0000 Subject: [PATCH] reorg a bunch of utility code into the TestUtil class git-svn-id: https://svn.code.sf.net/p/jackcess/code/jackcess/trunk@938 f203690c-595d-4dc9-a70b-905162fa7fd2 --- .../jackcess/BigIndexTest.java | 7 +- .../jackcess/ComplexColumnTest.java | 5 +- .../jackcess/CursorTest.java | 6 +- .../jackcess/DatabaseTest.java | 419 +--------------- .../jackcess/IndexTest.java | 10 +- .../jackcess/PropertiesTest.java | 3 +- .../jackcess/RelationshipTest.java | 2 +- .../jackcess/TableTest.java | 2 +- .../jackcess/TestUtil.java | 455 ++++++++++++++++++ .../jackcess/impl/CalcFieldTest.java | 4 +- .../jackcess/impl/CodecHandlerTest.java | 8 +- .../jackcess/impl/FKEnforcerTest.java | 2 +- .../jackcess/impl/IndexCodesTest.java | 2 +- .../jackcess/impl/JetFormatTest.java | 2 +- .../jackcess/query/QueryTest.java | 4 +- .../jackcess/util/ColumnValidatorTest.java | 6 +- .../jackcess/util/ErrorHandlerTest.java | 4 +- .../jackcess/util/ExportTest.java | 4 +- .../jackcess/util/ImportTest.java | 2 +- .../jackcess/util/JoinerTest.java | 2 +- .../jackcess/util/MemFileChannelTest.java | 7 +- .../jackcess/util/OleBlobTest.java | 5 +- .../jackcess/util/RowFilterTest.java | 2 +- 23 files changed, 503 insertions(+), 460 deletions(-) create mode 100644 src/test/java/com/healthmarketscience/jackcess/TestUtil.java diff --git a/src/test/java/com/healthmarketscience/jackcess/BigIndexTest.java b/src/test/java/com/healthmarketscience/jackcess/BigIndexTest.java index edf950b..0c5a222 100644 --- a/src/test/java/com/healthmarketscience/jackcess/BigIndexTest.java +++ b/src/test/java/com/healthmarketscience/jackcess/BigIndexTest.java @@ -18,15 +18,14 @@ package com.healthmarketscience.jackcess; import java.util.ArrayList; import java.util.List; -import java.util.Map; import java.util.Random; import junit.framework.TestCase; -import static com.healthmarketscience.jackcess.DatabaseTest.*; import static com.healthmarketscience.jackcess.impl.JetFormatTest.*; import com.healthmarketscience.jackcess.impl.TableImpl; import com.healthmarketscience.jackcess.impl.IndexImpl; +import static com.healthmarketscience.jackcess.TestUtil.*; /** * @author james @@ -63,7 +62,7 @@ public class BigIndexTest extends TestCase { assertEquals(0, index.getIndexData().getEntryCount()); db.close(); - DatabaseTest.setTestAutoSync(false); + TestUtil.setTestAutoSync(false); try { String extraText = " some random text to fill out the index and make it fill up pages with lots of extra bytes so i will keep typing until i think that i probably have enough text in the index entry so that i do not need to add as many entries in order"; @@ -192,7 +191,7 @@ public class BigIndexTest extends TestCase { db.close(); } finally { - DatabaseTest.clearTestAutoSync(); + TestUtil.clearTestAutoSync(); } } } diff --git a/src/test/java/com/healthmarketscience/jackcess/ComplexColumnTest.java b/src/test/java/com/healthmarketscience/jackcess/ComplexColumnTest.java index c7e134d..a2fd2eb 100644 --- a/src/test/java/com/healthmarketscience/jackcess/ComplexColumnTest.java +++ b/src/test/java/com/healthmarketscience/jackcess/ComplexColumnTest.java @@ -20,9 +20,7 @@ import java.nio.ByteBuffer; import java.util.Arrays; import java.util.Date; import java.util.List; -import java.util.Map; -import static com.healthmarketscience.jackcess.DatabaseTest.*; import com.healthmarketscience.jackcess.complex.Attachment; import com.healthmarketscience.jackcess.complex.ComplexDataType; import com.healthmarketscience.jackcess.complex.ComplexValueForeignKey; @@ -31,9 +29,10 @@ import com.healthmarketscience.jackcess.complex.UnsupportedValue; import com.healthmarketscience.jackcess.complex.Version; import com.healthmarketscience.jackcess.impl.ByteUtil; import com.healthmarketscience.jackcess.impl.ColumnImpl; -import static com.healthmarketscience.jackcess.impl.JetFormatTest.*; import com.healthmarketscience.jackcess.impl.PageChannel; import junit.framework.TestCase; +import static com.healthmarketscience.jackcess.TestUtil.*; +import static com.healthmarketscience.jackcess.impl.JetFormatTest.*; /** diff --git a/src/test/java/com/healthmarketscience/jackcess/CursorTest.java b/src/test/java/com/healthmarketscience/jackcess/CursorTest.java index 7834d18..4ebe5f6 100644 --- a/src/test/java/com/healthmarketscience/jackcess/CursorTest.java +++ b/src/test/java/com/healthmarketscience/jackcess/CursorTest.java @@ -26,7 +26,6 @@ import java.util.NoSuchElementException; import java.util.TreeSet; import static com.healthmarketscience.jackcess.Database.*; -import static com.healthmarketscience.jackcess.DatabaseTest.*; import com.healthmarketscience.jackcess.impl.ColumnImpl; import com.healthmarketscience.jackcess.impl.JetFormatTest; import static com.healthmarketscience.jackcess.impl.JetFormatTest.*; @@ -36,6 +35,7 @@ import com.healthmarketscience.jackcess.util.ColumnMatcher; import com.healthmarketscience.jackcess.util.RowFilterTest; import com.healthmarketscience.jackcess.util.SimpleColumnMatcher; import junit.framework.TestCase; +import static com.healthmarketscience.jackcess.TestUtil.*; /** * @author James Ahlborn @@ -52,12 +52,12 @@ public class CursorTest extends TestCase { @Override protected void setUp() { - DatabaseTest.setTestAutoSync(false); + TestUtil.setTestAutoSync(false); } @Override protected void tearDown() { - DatabaseTest.clearTestAutoSync(); + TestUtil.clearTestAutoSync(); } private static List> createTestTableData() diff --git a/src/test/java/com/healthmarketscience/jackcess/DatabaseTest.java b/src/test/java/com/healthmarketscience/jackcess/DatabaseTest.java index b78d7ff..95f4d6c 100644 --- a/src/test/java/com/healthmarketscience/jackcess/DatabaseTest.java +++ b/src/test/java/com/healthmarketscience/jackcess/DatabaseTest.java @@ -16,19 +16,11 @@ limitations under the License. package com.healthmarketscience.jackcess; -import java.io.DataInputStream; import java.io.File; -import java.io.FileInputStream; import java.io.FileNotFoundException; -import java.io.FileOutputStream; import java.io.IOException; -import java.io.InputStream; -import java.io.OutputStream; -import java.io.PrintWriter; -import java.lang.reflect.Field; import java.math.BigDecimal; import java.nio.ByteBuffer; -import java.nio.channels.FileChannel; import java.sql.Types; import java.text.DateFormat; import java.text.SimpleDateFormat; @@ -48,21 +40,17 @@ import java.util.TreeSet; import java.util.UUID; import static com.healthmarketscience.jackcess.Database.*; -import com.healthmarketscience.jackcess.complex.ComplexValueForeignKey; -import com.healthmarketscience.jackcess.impl.ByteUtil; import com.healthmarketscience.jackcess.impl.ColumnImpl; import com.healthmarketscience.jackcess.impl.DatabaseImpl; -import com.healthmarketscience.jackcess.impl.IndexData; -import com.healthmarketscience.jackcess.impl.IndexImpl; import com.healthmarketscience.jackcess.impl.JetFormat; import static com.healthmarketscience.jackcess.impl.JetFormatTest.*; import com.healthmarketscience.jackcess.impl.RowIdImpl; import com.healthmarketscience.jackcess.impl.RowImpl; import com.healthmarketscience.jackcess.impl.TableImpl; import com.healthmarketscience.jackcess.util.LinkResolver; -import com.healthmarketscience.jackcess.util.MemFileChannel; import com.healthmarketscience.jackcess.util.RowFilterTest; import junit.framework.TestCase; +import static com.healthmarketscience.jackcess.TestUtil.*; /** @@ -70,114 +58,10 @@ import junit.framework.TestCase; */ public class DatabaseTest extends TestCase { - - public static final TimeZone TEST_TZ = - TimeZone.getTimeZone("America/New_York"); - - private static final ThreadLocal _autoSync = - new ThreadLocal(); - - public DatabaseTest(String name) throws Exception { super(name); } - static void setTestAutoSync(boolean autoSync) { - _autoSync.set(autoSync); - } - - static void clearTestAutoSync() { - _autoSync.remove(); - } - - static boolean getTestAutoSync() { - Boolean autoSync = _autoSync.get(); - return ((autoSync != null) ? autoSync : Database.DEFAULT_AUTO_SYNC); - } - - public static Database open(FileFormat fileFormat, File file) - throws Exception - { - return open(fileFormat, file, false); - } - - private static Database open(FileFormat fileFormat, File file, - boolean inMem) - throws Exception - { - FileChannel channel = (inMem ? MemFileChannel.newChannel(file, "r") - : null); - final Database db = new DatabaseBuilder(file).setReadOnly(true) - .setAutoSync(getTestAutoSync()).setChannel(channel).open(); - assertEquals("Wrong JetFormat.", - DatabaseImpl.getFileFormatDetails(fileFormat).getFormat(), - ((DatabaseImpl)db).getFormat()); - assertEquals("Wrong FileFormat.", fileFormat, db.getFileFormat()); - return db; - } - - public static Database open(TestDB testDB) throws Exception { - return open(testDB.getExpectedFileFormat(), testDB.getFile()); - } - - public static Database openMem(TestDB testDB) throws Exception { - return open(testDB.getExpectedFileFormat(), testDB.getFile(), true); - } - - public static Database create(FileFormat fileFormat) throws Exception { - return create(fileFormat, false); - } - - public static Database create(FileFormat fileFormat, boolean keep) - throws Exception - { - return create(fileFormat, keep, false); - } - - public static Database createMem(FileFormat fileFormat) throws Exception { - return create(fileFormat, false, true); - } - - private static Database create(FileFormat fileFormat, boolean keep, - boolean inMem) - throws Exception - { - FileChannel channel = (inMem ? MemFileChannel.newChannel() : null); - return new DatabaseBuilder(createTempFile(keep)).setFileFormat(fileFormat) - .setAutoSync(getTestAutoSync()).setChannel(channel).create(); - } - - - public static Database openCopy(TestDB testDB) throws Exception { - return openCopy(testDB, false); - } - - public static Database openCopy(TestDB testDB, boolean keep) - throws Exception - { - return openCopy(testDB.getExpectedFileFormat(), testDB.getFile(), keep); - } - - public static Database openCopy(FileFormat fileFormat, File file) - throws Exception - { - return openCopy(fileFormat, file, false); - } - - public static Database openCopy(FileFormat fileFormat, File file, - boolean keep) - throws Exception - { - File tmp = createTempFile(keep); - copyFile(file, tmp); - Database db = new DatabaseBuilder(tmp).setAutoSync(getTestAutoSync()).open(); - assertEquals("Wrong JetFormat.", - DatabaseImpl.getFileFormatDetails(fileFormat).getFormat(), - ((DatabaseImpl)db).getFormat()); - assertEquals("Wrong FileFormat.", fileFormat, db.getFileFormat()); - return db; - } - public void testInvalidTableDefs() throws Exception { for (final FileFormat fileFormat : SUPPORTED_FILEFORMATS) { @@ -266,8 +150,9 @@ public class DatabaseTest extends TestCase } } - static void checkColumn(List columns, int columnNumber, - String name, DataType dataType) + private static void checkColumn( + List columns, int columnNumber, String name, + DataType dataType) throws Exception { Column column = columns.get(columnNumber); @@ -297,46 +182,6 @@ public class DatabaseTest extends TestCase } } - static void checkTestDBTable1RowABCDEFG(final TestDB testDB, final Table table, final Row row) - throws IOException { - assertEquals("testDB: " + testDB + "; table: " + table, "abcdefg", row.get("A")); - assertEquals("hijklmnop", row.get("B")); - assertEquals(new Byte((byte) 2), row.get("C")); - assertEquals(new Short((short) 222), row.get("D")); - assertEquals(new Integer(333333333), row.get("E")); - assertEquals(new Double(444.555d), row.get("F")); - final Calendar cal = Calendar.getInstance(); - cal.setTime(row.getDate("G")); - assertEquals(Calendar.SEPTEMBER, cal.get(Calendar.MONTH)); - assertEquals(21, cal.get(Calendar.DAY_OF_MONTH)); - assertEquals(1974, cal.get(Calendar.YEAR)); - assertEquals(0, cal.get(Calendar.HOUR_OF_DAY)); - assertEquals(0, cal.get(Calendar.MINUTE)); - assertEquals(0, cal.get(Calendar.SECOND)); - assertEquals(0, cal.get(Calendar.MILLISECOND)); - assertEquals(Boolean.TRUE, row.get("I")); - } - - static void checkTestDBTable1RowA(final TestDB testDB, final Table table, final Row row) - throws IOException { - assertEquals("testDB: " + testDB + "; table: " + table, "a", row.get("A")); - assertEquals("b", row.get("B")); - assertEquals(new Byte((byte) 0), row.get("C")); - assertEquals(new Short((short) 0), row.get("D")); - assertEquals(new Integer(0), row.get("E")); - assertEquals(new Double(0d), row.get("F")); - final Calendar cal = Calendar.getInstance(); - cal.setTime(row.getDate("G")); - assertEquals(Calendar.DECEMBER, cal.get(Calendar.MONTH)); - assertEquals(12, cal.get(Calendar.DAY_OF_MONTH)); - assertEquals(1981, cal.get(Calendar.YEAR)); - assertEquals(0, cal.get(Calendar.HOUR_OF_DAY)); - assertEquals(0, cal.get(Calendar.MINUTE)); - assertEquals(0, cal.get(Calendar.SECOND)); - assertEquals(0, cal.get(Calendar.MILLISECOND)); - assertEquals(Boolean.FALSE, row.get("I")); - } - public void testCreate() throws Exception { for (final FileFormat fileFormat : SUPPORTED_FILEFORMATS) { Database db = create(fileFormat); @@ -1580,7 +1425,7 @@ public class DatabaseTest extends TestCase db.close(); } - private void checkRawValue(String expected, Object val) + private static void checkRawValue(String expected, Object val) { if(expected != null) { assertTrue(ColumnImpl.isRawData(val)); @@ -1590,259 +1435,5 @@ public class DatabaseTest extends TestCase } } - static Object[] createTestRow(String col1Val) { - return new Object[] {col1Val, "R", "McCune", 1234, (byte) 0xad, 555.66d, - 777.88f, (short) 999, new Date()}; - } - - static Object[] createTestRow() { - return createTestRow("Tim"); - } - - static Map createTestRowMap(String col1Val) { - return createExpectedRow("A", col1Val, "B", "R", "C", "McCune", - "D", 1234, "E", (byte) 0xad, "F", 555.66d, - "G", 777.88f, "H", (short) 999, "I", new Date()); - } - - static void createTestTable(Database db) throws Exception { - new TableBuilder("test") - .addColumn(new ColumnBuilder("A", DataType.TEXT)) - .addColumn(new ColumnBuilder("B", DataType.TEXT)) - .addColumn(new ColumnBuilder("C", DataType.TEXT)) - .addColumn(new ColumnBuilder("D", DataType.LONG)) - .addColumn(new ColumnBuilder("E", DataType.BYTE)) - .addColumn(new ColumnBuilder("F", DataType.DOUBLE)) - .addColumn(new ColumnBuilder("G", DataType.FLOAT)) - .addColumn(new ColumnBuilder("H", DataType.INT)) - .addColumn(new ColumnBuilder("I", DataType.SHORT_DATE_TIME)) - .toTable(db); - } - - public static String createString(int len) { - return createString(len, 'a'); - } - - static String createNonAsciiString(int len) { - return createString(len, '\u0CC0'); - } - - private static String createString(int len, char firstChar) { - StringBuilder builder = new StringBuilder(len); - for(int i = 0; i < len; ++i) { - builder.append((char)(firstChar + (i % 26))); - } - return builder.toString(); - } - - static void assertRowCount(int expectedRowCount, Table table) - throws Exception - { - assertEquals(expectedRowCount, countRows(table)); - assertEquals(expectedRowCount, table.getRowCount()); - } - - public static int countRows(Table table) throws Exception { - int rtn = 0; - for(Map row : CursorBuilder.createCursor(table)) { - rtn++; - } - return rtn; - } - - public static void assertTable( - List> expectedTable, - Table table) - throws IOException - { - assertCursor(expectedTable, CursorBuilder.createCursor(table)); - } - - public static void assertCursor( - List> expectedTable, - Cursor cursor) - { - List> foundTable = - new ArrayList>(); - for(Map row : cursor) { - foundTable.add(row); - } - assertEquals(expectedTable.size(), foundTable.size()); - for(int i = 0; i < expectedTable.size(); ++i) { - assertEquals(expectedTable.get(i), foundTable.get(i)); - } - } - - public static RowImpl createExpectedRow(Object... rowElements) { - RowImpl row = new RowImpl((RowIdImpl)null); - for(int i = 0; i < rowElements.length; i += 2) { - row.put((String)rowElements[i], - rowElements[i + 1]); - } - return row; - } - - @SuppressWarnings("unchecked") - public static List createExpectedTable(Row... rows) { - return Arrays.asList(rows); - } - - static void dumpDatabase(Database mdb) throws Exception { - dumpDatabase(mdb, false); - } - - static void dumpDatabase(Database mdb, boolean systemTables) - throws Exception - { - dumpDatabase(mdb, systemTables, new PrintWriter(System.out, true)); - } - - static void dumpTable(Table table) throws Exception { - dumpTable(table, new PrintWriter(System.out, true)); - } - - static void dumpDatabase(Database mdb, boolean systemTables, - PrintWriter writer) throws Exception - { - writer.println("DATABASE:"); - for(Table table : mdb) { - dumpTable(table, writer); - } - if(systemTables) { - for(String sysTableName : mdb.getSystemTableNames()) { - dumpTable(mdb.getSystemTable(sysTableName), writer); - } - } - } - - static void dumpTable(Table table, PrintWriter writer) throws Exception { - // make sure all indexes are read - for(Index index : table.getIndexes()) { - ((IndexImpl)index).initialize(); - } - - writer.println("TABLE: " + table.getName()); - List colNames = new ArrayList(); - for(Column col : table.getColumns()) { - colNames.add(col.getName()); - } - writer.println("COLUMNS: " + colNames); - for(Map row : CursorBuilder.createCursor(table)) { - writer.println(massageRow(row)); - } - } - - private static Map massageRow(Map row) - throws IOException - { - for(Map.Entry entry : row.entrySet()) { - Object v = entry.getValue(); - if(v instanceof byte[]) { - // make byte[] printable - byte[] bv = (byte[])v; - entry.setValue(ByteUtil.toHexString(ByteBuffer.wrap(bv), bv.length)); - } else if(v instanceof ComplexValueForeignKey) { - // deref complex values - String str = "ComplexValue(" + v + ")" + - ((ComplexValueForeignKey)v).getValues(); - entry.setValue(str); - } - } - - return row; - } - - static void dumpIndex(Index index) throws Exception { - dumpIndex(index, new PrintWriter(System.out, true)); - } - - static void dumpIndex(Index index, PrintWriter writer) throws Exception { - writer.println("INDEX: " + index); - IndexData.EntryCursor ec = ((IndexImpl)index).cursor(); - IndexData.Entry lastE = ec.getLastEntry(); - IndexData.Entry e = null; - while((e = ec.getNextEntry()) != lastE) { - writer.println(e); - } - } - - static void assertSameDate(Date expected, Date found) - { - if(expected == found) { - return; - } - if((expected == null) || (found == null)) { - throw new AssertionError("Expected " + expected + ", found " + found); - } - long expTime = expected.getTime(); - long foundTime = found.getTime(); - // there are some rounding issues due to dates being stored as doubles, - // but it results in a 1 millisecond difference, so i'm not going to worry - // about it - if((expTime != foundTime) && (Math.abs(expTime - foundTime) > 1)) { - throw new AssertionError("Expected " + expTime + " (" + expected + - "), found " + foundTime + " (" + found + ")"); - } - } - - static void copyFile(File srcFile, File dstFile) - throws IOException - { - // FIXME should really be using commons io FileUtils here, but don't want - // to add dep for one simple test method - byte[] buf = new byte[1024]; - OutputStream ostream = new FileOutputStream(dstFile); - InputStream istream = new FileInputStream(srcFile); - try { - int numBytes = 0; - while((numBytes = istream.read(buf)) >= 0) { - ostream.write(buf, 0, numBytes); - } - } finally { - ostream.close(); - } - } - - static File createTempFile(boolean keep) throws Exception { - File tmp = File.createTempFile("databaseTest", ".mdb"); - if(keep) { - System.out.println("Created " + tmp); - } else { - tmp.deleteOnExit(); - } - return tmp; - } - - public static void clearTableCache(Database db) throws Exception - { - Field f = db.getClass().getDeclaredField("_tableCache"); - f.setAccessible(true); - Object val = f.get(db); - f = val.getClass().getDeclaredField("_tables"); - f.setAccessible(true); - val = f.get(val); - ((Map)val).clear(); - } - - public static byte[] toByteArray(File file) - throws IOException - { - return toByteArray(new FileInputStream(file), file.length()); - } - - public static byte[] toByteArray(InputStream in, long length) - throws IOException - { - // FIXME should really be using commons io IOUtils here, but don't want - // to add dep for one simple test method - try { - DataInputStream din = new DataInputStream(in); - byte[] bytes = new byte[(int)length]; - din.readFully(bytes); - return bytes; - } finally { - in.close(); - } - } } diff --git a/src/test/java/com/healthmarketscience/jackcess/IndexTest.java b/src/test/java/com/healthmarketscience/jackcess/IndexTest.java index fbcd189..28e2ff9 100644 --- a/src/test/java/com/healthmarketscience/jackcess/IndexTest.java +++ b/src/test/java/com/healthmarketscience/jackcess/IndexTest.java @@ -26,7 +26,6 @@ import java.util.SortedSet; import java.util.TreeSet; import static com.healthmarketscience.jackcess.Database.*; -import static com.healthmarketscience.jackcess.DatabaseTest.*; import com.healthmarketscience.jackcess.impl.ByteUtil; import com.healthmarketscience.jackcess.impl.IndexCodesTest; import com.healthmarketscience.jackcess.impl.IndexData; @@ -35,6 +34,7 @@ import static com.healthmarketscience.jackcess.impl.JetFormatTest.*; import com.healthmarketscience.jackcess.impl.RowIdImpl; import com.healthmarketscience.jackcess.impl.TableImpl; import junit.framework.TestCase; +import static com.healthmarketscience.jackcess.TestUtil.*; /** * @author James Ahlborn @@ -47,12 +47,12 @@ public class IndexTest extends TestCase { @Override protected void setUp() { - DatabaseTest.setTestAutoSync(false); + TestUtil.setTestAutoSync(false); } @Override protected void tearDown() { - DatabaseTest.clearTestAutoSync(); + TestUtil.clearTestAutoSync(); } public void testByteOrder() throws Exception { @@ -390,9 +390,9 @@ public class IndexTest extends TestCase { // Row order is arbitrary, so v2007 row order difference is valid if (testDB.getExpectedFileFormat().ordinal() >= Database.FileFormat.V2007.ordinal()) { - DatabaseTest.checkTestDBTable1RowA(testDB, table, row); + TestUtil.checkTestDBTable1RowA(testDB, table, row); } else { - DatabaseTest.checkTestDBTable1RowABCDEFG(testDB, table, row); + TestUtil.checkTestDBTable1RowABCDEFG(testDB, table, row); } c.deleteCurrentRow(); diff --git a/src/test/java/com/healthmarketscience/jackcess/PropertiesTest.java b/src/test/java/com/healthmarketscience/jackcess/PropertiesTest.java index bd74c6d..a5ec859 100644 --- a/src/test/java/com/healthmarketscience/jackcess/PropertiesTest.java +++ b/src/test/java/com/healthmarketscience/jackcess/PropertiesTest.java @@ -31,6 +31,7 @@ import com.healthmarketscience.jackcess.impl.PropertyMapImpl; import com.healthmarketscience.jackcess.impl.PropertyMaps; import com.healthmarketscience.jackcess.impl.TableImpl; import junit.framework.TestCase; +import static com.healthmarketscience.jackcess.TestUtil.*; /** * @author James Ahlborn @@ -348,7 +349,7 @@ public class PropertiesTest extends TestCase public void testCreateDbProperties() throws Exception { for(FileFormat ff : SUPPORTED_FILEFORMATS) { - File file = DatabaseTest.createTempFile(false); + File file = TestUtil.createTempFile(false); Database db = new DatabaseBuilder(file) .setFileFormat(ff) .putUserDefinedProperty("testing", "123") diff --git a/src/test/java/com/healthmarketscience/jackcess/RelationshipTest.java b/src/test/java/com/healthmarketscience/jackcess/RelationshipTest.java index 2fe73fa..0d7774d 100644 --- a/src/test/java/com/healthmarketscience/jackcess/RelationshipTest.java +++ b/src/test/java/com/healthmarketscience/jackcess/RelationshipTest.java @@ -22,10 +22,10 @@ import java.util.Collections; import java.util.Comparator; import java.util.List; -import static com.healthmarketscience.jackcess.DatabaseTest.*; import static com.healthmarketscience.jackcess.impl.JetFormatTest.*; import com.healthmarketscience.jackcess.impl.RelationshipImpl; import junit.framework.TestCase; +import static com.healthmarketscience.jackcess.TestUtil.*; /** * @author James Ahlborn diff --git a/src/test/java/com/healthmarketscience/jackcess/TableTest.java b/src/test/java/com/healthmarketscience/jackcess/TableTest.java index d3b9d2c..339ba39 100644 --- a/src/test/java/com/healthmarketscience/jackcess/TableTest.java +++ b/src/test/java/com/healthmarketscience/jackcess/TableTest.java @@ -81,7 +81,7 @@ public class TableTest extends TestCase { String small = "this is a string"; String smallNotAscii = "this is a string\0"; - String large = DatabaseTest.createString(30); + String large = TestUtil.createString(30); String largeNotAscii = large + "\0"; ByteBuffer[] buf1 = encodeColumns(small, large); diff --git a/src/test/java/com/healthmarketscience/jackcess/TestUtil.java b/src/test/java/com/healthmarketscience/jackcess/TestUtil.java new file mode 100644 index 0000000..25cb585 --- /dev/null +++ b/src/test/java/com/healthmarketscience/jackcess/TestUtil.java @@ -0,0 +1,455 @@ +/* +Copyright (c) 2015 James Ahlborn + +Licensed 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. +*/ + +package com.healthmarketscience.jackcess; + +import java.io.DataInputStream; +import java.io.File; +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.io.PrintWriter; +import java.lang.reflect.Field; +import java.nio.ByteBuffer; +import java.nio.channels.FileChannel; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Calendar; +import java.util.Date; +import java.util.List; +import java.util.Map; +import java.util.TimeZone; + +import static com.healthmarketscience.jackcess.Database.*; +import com.healthmarketscience.jackcess.complex.ComplexValueForeignKey; +import com.healthmarketscience.jackcess.impl.ByteUtil; +import com.healthmarketscience.jackcess.impl.DatabaseImpl; +import com.healthmarketscience.jackcess.impl.IndexData; +import com.healthmarketscience.jackcess.impl.IndexImpl; +import com.healthmarketscience.jackcess.impl.JetFormatTest.TestDB; +import com.healthmarketscience.jackcess.impl.RowIdImpl; +import com.healthmarketscience.jackcess.impl.RowImpl; +import com.healthmarketscience.jackcess.util.MemFileChannel; +import org.junit.Assert; + +/** + * Utilty code for the test cases. + * + * @author James Ahlborn + */ +public class TestUtil +{ + public static final TimeZone TEST_TZ = + TimeZone.getTimeZone("America/New_York"); + + private static final ThreadLocal _autoSync = + new ThreadLocal(); + + private TestUtil() {} + + static void setTestAutoSync(boolean autoSync) { + _autoSync.set(autoSync); + } + + static void clearTestAutoSync() { + _autoSync.remove(); + } + + static boolean getTestAutoSync() { + Boolean autoSync = _autoSync.get(); + return ((autoSync != null) ? autoSync : Database.DEFAULT_AUTO_SYNC); + } + + public static Database open(FileFormat fileFormat, File file) + throws Exception + { + return open(fileFormat, file, false); + } + + static Database open(FileFormat fileFormat, File file, boolean inMem) + throws Exception + { + FileChannel channel = (inMem ? MemFileChannel.newChannel(file, "r") + : null); + final Database db = new DatabaseBuilder(file).setReadOnly(true) + .setAutoSync(getTestAutoSync()).setChannel(channel).open(); + Assert.assertEquals("Wrong JetFormat.", + DatabaseImpl.getFileFormatDetails(fileFormat).getFormat(), + ((DatabaseImpl)db).getFormat()); + Assert.assertEquals("Wrong FileFormat.", fileFormat, db.getFileFormat()); + return db; + } + + public static Database open(TestDB testDB) throws Exception { + return open(testDB.getExpectedFileFormat(), testDB.getFile()); + } + + public static Database openMem(TestDB testDB) throws Exception { + return open(testDB.getExpectedFileFormat(), testDB.getFile(), true); + } + + public static Database create(FileFormat fileFormat) throws Exception { + return create(fileFormat, false); + } + + public static Database create(FileFormat fileFormat, boolean keep) + throws Exception + { + return create(fileFormat, keep, false); + } + + public static Database createMem(FileFormat fileFormat) throws Exception { + return create(fileFormat, false, true); + } + + private static Database create(FileFormat fileFormat, boolean keep, + boolean inMem) + throws Exception + { + FileChannel channel = (inMem ? MemFileChannel.newChannel() : null); + return new DatabaseBuilder(createTempFile(keep)).setFileFormat(fileFormat) + .setAutoSync(getTestAutoSync()).setChannel(channel).create(); + } + + + public static Database openCopy(TestDB testDB) throws Exception { + return openCopy(testDB, false); + } + + public static Database openCopy(TestDB testDB, boolean keep) + throws Exception + { + return openCopy(testDB.getExpectedFileFormat(), testDB.getFile(), keep); + } + + public static Database openCopy(FileFormat fileFormat, File file) + throws Exception + { + return openCopy(fileFormat, file, false); + } + + public static Database openCopy(FileFormat fileFormat, File file, + boolean keep) + throws Exception + { + File tmp = createTempFile(keep); + copyFile(file, tmp); + Database db = new DatabaseBuilder(tmp).setAutoSync(getTestAutoSync()).open(); + Assert.assertEquals("Wrong JetFormat.", + DatabaseImpl.getFileFormatDetails(fileFormat).getFormat(), + ((DatabaseImpl)db).getFormat()); + Assert.assertEquals("Wrong FileFormat.", fileFormat, db.getFileFormat()); + return db; + } + + + static Object[] createTestRow(String col1Val) { + return new Object[] {col1Val, "R", "McCune", 1234, (byte) 0xad, 555.66d, + 777.88f, (short) 999, new Date()}; + } + + static Object[] createTestRow() { + return createTestRow("Tim"); + } + + static Map createTestRowMap(String col1Val) { + return createExpectedRow("A", col1Val, "B", "R", "C", "McCune", + "D", 1234, "E", (byte) 0xad, "F", 555.66d, + "G", 777.88f, "H", (short) 999, "I", new Date()); + } + + static void createTestTable(Database db) throws Exception { + new TableBuilder("test") + .addColumn(new ColumnBuilder("A", DataType.TEXT)) + .addColumn(new ColumnBuilder("B", DataType.TEXT)) + .addColumn(new ColumnBuilder("C", DataType.TEXT)) + .addColumn(new ColumnBuilder("D", DataType.LONG)) + .addColumn(new ColumnBuilder("E", DataType.BYTE)) + .addColumn(new ColumnBuilder("F", DataType.DOUBLE)) + .addColumn(new ColumnBuilder("G", DataType.FLOAT)) + .addColumn(new ColumnBuilder("H", DataType.INT)) + .addColumn(new ColumnBuilder("I", DataType.SHORT_DATE_TIME)) + .toTable(db); + } + + public static String createString(int len) { + return createString(len, 'a'); + } + + static String createNonAsciiString(int len) { + return createString(len, '\u0CC0'); + } + + private static String createString(int len, char firstChar) { + StringBuilder builder = new StringBuilder(len); + for(int i = 0; i < len; ++i) { + builder.append((char)(firstChar + (i % 26))); + } + return builder.toString(); + } + + static void assertRowCount(int expectedRowCount, Table table) + throws Exception + { + Assert.assertEquals(expectedRowCount, countRows(table)); + Assert.assertEquals(expectedRowCount, table.getRowCount()); + } + + public static int countRows(Table table) throws Exception { + int rtn = 0; + for(Map row : CursorBuilder.createCursor(table)) { + rtn++; + } + return rtn; + } + + public static void assertTable( + List> expectedTable, + Table table) + throws IOException + { + assertCursor(expectedTable, CursorBuilder.createCursor(table)); + } + + public static void assertCursor( + List> expectedTable, + Cursor cursor) + { + List> foundTable = + new ArrayList>(); + for(Map row : cursor) { + foundTable.add(row); + } + Assert.assertEquals(expectedTable.size(), foundTable.size()); + for(int i = 0; i < expectedTable.size(); ++i) { + Assert.assertEquals(expectedTable.get(i), foundTable.get(i)); + } + } + + public static RowImpl createExpectedRow(Object... rowElements) { + RowImpl row = new RowImpl((RowIdImpl)null); + for(int i = 0; i < rowElements.length; i += 2) { + row.put((String)rowElements[i], + rowElements[i + 1]); + } + return row; + } + + public static List createExpectedTable(Row... rows) { + return Arrays.asList(rows); + } + + static void dumpDatabase(Database mdb) throws Exception { + dumpDatabase(mdb, false); + } + + static void dumpDatabase(Database mdb, boolean systemTables) + throws Exception + { + dumpDatabase(mdb, systemTables, new PrintWriter(System.out, true)); + } + + static void dumpTable(Table table) throws Exception { + dumpTable(table, new PrintWriter(System.out, true)); + } + + static void dumpDatabase(Database mdb, boolean systemTables, + PrintWriter writer) throws Exception + { + writer.println("DATABASE:"); + for(Table table : mdb) { + dumpTable(table, writer); + } + if(systemTables) { + for(String sysTableName : mdb.getSystemTableNames()) { + dumpTable(mdb.getSystemTable(sysTableName), writer); + } + } + } + + static void dumpTable(Table table, PrintWriter writer) throws Exception { + // make sure all indexes are read + for(Index index : table.getIndexes()) { + ((IndexImpl)index).initialize(); + } + + writer.println("TABLE: " + table.getName()); + List colNames = new ArrayList(); + for(Column col : table.getColumns()) { + colNames.add(col.getName()); + } + writer.println("COLUMNS: " + colNames); + for(Map row : CursorBuilder.createCursor(table)) { + writer.println(massageRow(row)); + } + } + + private static Map massageRow(Map row) + throws IOException + { + for(Map.Entry entry : row.entrySet()) { + Object v = entry.getValue(); + if(v instanceof byte[]) { + // make byte[] printable + byte[] bv = (byte[])v; + entry.setValue(ByteUtil.toHexString(ByteBuffer.wrap(bv), bv.length)); + } else if(v instanceof ComplexValueForeignKey) { + // deref complex values + String str = "ComplexValue(" + v + ")" + + ((ComplexValueForeignKey)v).getValues(); + entry.setValue(str); + } + } + + return row; + } + + static void dumpIndex(Index index) throws Exception { + dumpIndex(index, new PrintWriter(System.out, true)); + } + + static void dumpIndex(Index index, PrintWriter writer) throws Exception { + writer.println("INDEX: " + index); + IndexData.EntryCursor ec = ((IndexImpl)index).cursor(); + IndexData.Entry lastE = ec.getLastEntry(); + IndexData.Entry e = null; + while((e = ec.getNextEntry()) != lastE) { + writer.println(e); + } + } + + static void assertSameDate(Date expected, Date found) + { + if(expected == found) { + return; + } + if((expected == null) || (found == null)) { + throw new AssertionError("Expected " + expected + ", found " + found); + } + long expTime = expected.getTime(); + long foundTime = found.getTime(); + // there are some rounding issues due to dates being stored as doubles, + // but it results in a 1 millisecond difference, so i'm not going to worry + // about it + if((expTime != foundTime) && (Math.abs(expTime - foundTime) > 1)) { + throw new AssertionError("Expected " + expTime + " (" + expected + + "), found " + foundTime + " (" + found + ")"); + } + } + + static void copyFile(File srcFile, File dstFile) + throws IOException + { + // FIXME should really be using commons io FileUtils here, but don't want + // to add dep for one simple test method + byte[] buf = new byte[1024]; + OutputStream ostream = new FileOutputStream(dstFile); + InputStream istream = new FileInputStream(srcFile); + try { + int numBytes = 0; + while((numBytes = istream.read(buf)) >= 0) { + ostream.write(buf, 0, numBytes); + } + } finally { + ostream.close(); + } + } + + static File createTempFile(boolean keep) throws Exception { + File tmp = File.createTempFile("databaseTest", ".mdb"); + if(keep) { + System.out.println("Created " + tmp); + } else { + tmp.deleteOnExit(); + } + return tmp; + } + + public static void clearTableCache(Database db) throws Exception + { + Field f = db.getClass().getDeclaredField("_tableCache"); + f.setAccessible(true); + Object val = f.get(db); + f = val.getClass().getDeclaredField("_tables"); + f.setAccessible(true); + val = f.get(val); + ((Map)val).clear(); + } + + public static byte[] toByteArray(File file) + throws IOException + { + return toByteArray(new FileInputStream(file), file.length()); + } + + public static byte[] toByteArray(InputStream in, long length) + throws IOException + { + // FIXME should really be using commons io IOUtils here, but don't want + // to add dep for one simple test method + try { + DataInputStream din = new DataInputStream(in); + byte[] bytes = new byte[(int)length]; + din.readFully(bytes); + return bytes; + } finally { + in.close(); + } + } + + static void checkTestDBTable1RowABCDEFG(final TestDB testDB, final Table table, final Row row) + throws IOException { + Assert.assertEquals("testDB: " + testDB + "; table: " + table, "abcdefg", row.get("A")); + Assert.assertEquals("hijklmnop", row.get("B")); + Assert.assertEquals(new Byte((byte) 2), row.get("C")); + Assert.assertEquals(new Short((short) 222), row.get("D")); + Assert.assertEquals(new Integer(333333333), row.get("E")); + Assert.assertEquals(new Double(444.555d), row.get("F")); + final Calendar cal = Calendar.getInstance(); + cal.setTime(row.getDate("G")); + Assert.assertEquals(Calendar.SEPTEMBER, cal.get(Calendar.MONTH)); + Assert.assertEquals(21, cal.get(Calendar.DAY_OF_MONTH)); + Assert.assertEquals(1974, cal.get(Calendar.YEAR)); + Assert.assertEquals(0, cal.get(Calendar.HOUR_OF_DAY)); + Assert.assertEquals(0, cal.get(Calendar.MINUTE)); + Assert.assertEquals(0, cal.get(Calendar.SECOND)); + Assert.assertEquals(0, cal.get(Calendar.MILLISECOND)); + Assert.assertEquals(Boolean.TRUE, row.get("I")); + } + + static void checkTestDBTable1RowA(final TestDB testDB, final Table table, final Row row) + throws IOException { + Assert.assertEquals("testDB: " + testDB + "; table: " + table, "a", row.get("A")); + Assert.assertEquals("b", row.get("B")); + Assert.assertEquals(new Byte((byte) 0), row.get("C")); + Assert.assertEquals(new Short((short) 0), row.get("D")); + Assert.assertEquals(new Integer(0), row.get("E")); + Assert.assertEquals(new Double(0d), row.get("F")); + final Calendar cal = Calendar.getInstance(); + cal.setTime(row.getDate("G")); + Assert.assertEquals(Calendar.DECEMBER, cal.get(Calendar.MONTH)); + Assert.assertEquals(12, cal.get(Calendar.DAY_OF_MONTH)); + Assert.assertEquals(1981, cal.get(Calendar.YEAR)); + Assert.assertEquals(0, cal.get(Calendar.HOUR_OF_DAY)); + Assert.assertEquals(0, cal.get(Calendar.MINUTE)); + Assert.assertEquals(0, cal.get(Calendar.SECOND)); + Assert.assertEquals(0, cal.get(Calendar.MILLISECOND)); + Assert.assertEquals(Boolean.FALSE, row.get("I")); + } + +} diff --git a/src/test/java/com/healthmarketscience/jackcess/impl/CalcFieldTest.java b/src/test/java/com/healthmarketscience/jackcess/impl/CalcFieldTest.java index 959662b..b5afcd3 100644 --- a/src/test/java/com/healthmarketscience/jackcess/impl/CalcFieldTest.java +++ b/src/test/java/com/healthmarketscience/jackcess/impl/CalcFieldTest.java @@ -27,13 +27,13 @@ import com.healthmarketscience.jackcess.Column; import com.healthmarketscience.jackcess.ColumnBuilder; import com.healthmarketscience.jackcess.DataType; import com.healthmarketscience.jackcess.Database; -import static com.healthmarketscience.jackcess.DatabaseTest.*; import com.healthmarketscience.jackcess.PropertyMap; import com.healthmarketscience.jackcess.Row; import com.healthmarketscience.jackcess.Table; import com.healthmarketscience.jackcess.TableBuilder; -import static com.healthmarketscience.jackcess.impl.JetFormatTest.*; import junit.framework.TestCase; +import static com.healthmarketscience.jackcess.TestUtil.*; +import static com.healthmarketscience.jackcess.impl.JetFormatTest.*; /** * diff --git a/src/test/java/com/healthmarketscience/jackcess/impl/CodecHandlerTest.java b/src/test/java/com/healthmarketscience/jackcess/impl/CodecHandlerTest.java index 1ff7b18..d6c788c 100644 --- a/src/test/java/com/healthmarketscience/jackcess/impl/CodecHandlerTest.java +++ b/src/test/java/com/healthmarketscience/jackcess/impl/CodecHandlerTest.java @@ -29,13 +29,13 @@ import com.healthmarketscience.jackcess.Cursor; import com.healthmarketscience.jackcess.DataType; import com.healthmarketscience.jackcess.Database; import com.healthmarketscience.jackcess.DatabaseBuilder; -import com.healthmarketscience.jackcess.DatabaseTest; import com.healthmarketscience.jackcess.IndexBuilder; import com.healthmarketscience.jackcess.Row; import com.healthmarketscience.jackcess.Table; import com.healthmarketscience.jackcess.TableBuilder; import static com.healthmarketscience.jackcess.impl.JetFormatTest.*; import junit.framework.TestCase; +import com.healthmarketscience.jackcess.TestUtil; /** * @@ -72,7 +72,7 @@ public class CodecHandlerTest extends TestCase private static void doTestCodecHandler(boolean simple) throws Exception { for(Database.FileFormat ff : SUPPORTED_FILEFORMATS) { - Database db = DatabaseTest.create(ff); + Database db = TestUtil.create(ff); int pageSize = ((DatabaseImpl)db).getFormat().PAGE_SIZE; File dbFile = db.getFile(); db.close(); @@ -115,8 +115,8 @@ public class CodecHandlerTest extends TestCase ((DatabaseImpl)db).getPageChannel().startWrite(); try { for(int i = start; i < end; ++i) { - t1.addRow(null, "rowdata-" + i + DatabaseTest.createString(100)); - t2.addRow(null, "rowdata-" + i + DatabaseTest.createString(100)); + t1.addRow(null, "rowdata-" + i + TestUtil.createString(100)); + t2.addRow(null, "rowdata-" + i + TestUtil.createString(100)); } } finally { ((DatabaseImpl)db).getPageChannel().finishWrite(); diff --git a/src/test/java/com/healthmarketscience/jackcess/impl/FKEnforcerTest.java b/src/test/java/com/healthmarketscience/jackcess/impl/FKEnforcerTest.java index 66a0ae3..c3150ea 100644 --- a/src/test/java/com/healthmarketscience/jackcess/impl/FKEnforcerTest.java +++ b/src/test/java/com/healthmarketscience/jackcess/impl/FKEnforcerTest.java @@ -25,11 +25,11 @@ import com.healthmarketscience.jackcess.Column; import com.healthmarketscience.jackcess.Cursor; import com.healthmarketscience.jackcess.CursorBuilder; import com.healthmarketscience.jackcess.Database; -import static com.healthmarketscience.jackcess.DatabaseTest.*; import com.healthmarketscience.jackcess.Row; import com.healthmarketscience.jackcess.Table; import static com.healthmarketscience.jackcess.impl.JetFormatTest.*; import junit.framework.TestCase; +import static com.healthmarketscience.jackcess.TestUtil.*; /** * diff --git a/src/test/java/com/healthmarketscience/jackcess/impl/IndexCodesTest.java b/src/test/java/com/healthmarketscience/jackcess/impl/IndexCodesTest.java index ca1fde7..5b7a440 100644 --- a/src/test/java/com/healthmarketscience/jackcess/impl/IndexCodesTest.java +++ b/src/test/java/com/healthmarketscience/jackcess/impl/IndexCodesTest.java @@ -31,13 +31,13 @@ import com.healthmarketscience.jackcess.Cursor; import com.healthmarketscience.jackcess.CursorBuilder; import com.healthmarketscience.jackcess.DataType; import com.healthmarketscience.jackcess.Database; -import static com.healthmarketscience.jackcess.DatabaseTest.*; import com.healthmarketscience.jackcess.Index; import com.healthmarketscience.jackcess.Row; import com.healthmarketscience.jackcess.Table; import com.healthmarketscience.jackcess.TableBuilder; import static com.healthmarketscience.jackcess.impl.JetFormatTest.*; import junit.framework.TestCase; +import static com.healthmarketscience.jackcess.TestUtil.*; /** * @author James Ahlborn diff --git a/src/test/java/com/healthmarketscience/jackcess/impl/JetFormatTest.java b/src/test/java/com/healthmarketscience/jackcess/impl/JetFormatTest.java index c73e777..f84cc16 100644 --- a/src/test/java/com/healthmarketscience/jackcess/impl/JetFormatTest.java +++ b/src/test/java/com/healthmarketscience/jackcess/impl/JetFormatTest.java @@ -11,8 +11,8 @@ import java.util.Set; import com.healthmarketscience.jackcess.Database; import static com.healthmarketscience.jackcess.Database.*; import com.healthmarketscience.jackcess.DatabaseBuilder; -import static com.healthmarketscience.jackcess.DatabaseTest.*; import junit.framework.TestCase; +import static com.healthmarketscience.jackcess.TestUtil.*; /** diff --git a/src/test/java/com/healthmarketscience/jackcess/query/QueryTest.java b/src/test/java/com/healthmarketscience/jackcess/query/QueryTest.java index d712917..3af50ec 100644 --- a/src/test/java/com/healthmarketscience/jackcess/query/QueryTest.java +++ b/src/test/java/com/healthmarketscience/jackcess/query/QueryTest.java @@ -25,7 +25,7 @@ import java.util.Map; import com.healthmarketscience.jackcess.DataType; import com.healthmarketscience.jackcess.Database; -import com.healthmarketscience.jackcess.DatabaseTest; +import com.healthmarketscience.jackcess.TestUtil; import com.healthmarketscience.jackcess.impl.query.QueryImpl; import com.healthmarketscience.jackcess.impl.query.QueryImpl.Row; import junit.framework.TestCase; @@ -245,7 +245,7 @@ public class QueryTest extends TestCase "DataDefinitionQuery", multiline( "CREATE TABLE Table5 (col1 CHAR, col2 CHAR);\0")); - Database db = DatabaseTest.open(testDB); + Database db = TestUtil.open(testDB); for(Query q : db.getQueries()) { assertEquals(expectedQueries.remove(q.getName()), q.toSQLString()); diff --git a/src/test/java/com/healthmarketscience/jackcess/util/ColumnValidatorTest.java b/src/test/java/com/healthmarketscience/jackcess/util/ColumnValidatorTest.java index d5ebbed..e3634d0 100644 --- a/src/test/java/com/healthmarketscience/jackcess/util/ColumnValidatorTest.java +++ b/src/test/java/com/healthmarketscience/jackcess/util/ColumnValidatorTest.java @@ -19,19 +19,19 @@ package com.healthmarketscience.jackcess.util; import java.util.List; import java.util.Map; +import static com.healthmarketscience.jackcess.Database.*; import com.healthmarketscience.jackcess.Column; import com.healthmarketscience.jackcess.ColumnBuilder; import com.healthmarketscience.jackcess.CursorBuilder; import com.healthmarketscience.jackcess.DataType; import com.healthmarketscience.jackcess.Database; -import static com.healthmarketscience.jackcess.Database.*; -import static com.healthmarketscience.jackcess.DatabaseTest.*; import com.healthmarketscience.jackcess.IndexCursor; import com.healthmarketscience.jackcess.Row; import com.healthmarketscience.jackcess.Table; import com.healthmarketscience.jackcess.TableBuilder; -import static com.healthmarketscience.jackcess.impl.JetFormatTest.*; import junit.framework.TestCase; +import static com.healthmarketscience.jackcess.TestUtil.*; +import static com.healthmarketscience.jackcess.impl.JetFormatTest.*; /** * diff --git a/src/test/java/com/healthmarketscience/jackcess/util/ErrorHandlerTest.java b/src/test/java/com/healthmarketscience/jackcess/util/ErrorHandlerTest.java index d95f6cf..dbc7f94 100644 --- a/src/test/java/com/healthmarketscience/jackcess/util/ErrorHandlerTest.java +++ b/src/test/java/com/healthmarketscience/jackcess/util/ErrorHandlerTest.java @@ -22,20 +22,20 @@ import java.lang.reflect.Modifier; import java.nio.ByteOrder; import java.util.List; +import static com.healthmarketscience.jackcess.Database.*; import com.healthmarketscience.jackcess.Column; import com.healthmarketscience.jackcess.ColumnBuilder; import com.healthmarketscience.jackcess.Cursor; import com.healthmarketscience.jackcess.CursorBuilder; import com.healthmarketscience.jackcess.DataType; import com.healthmarketscience.jackcess.Database; -import static com.healthmarketscience.jackcess.Database.*; -import static com.healthmarketscience.jackcess.DatabaseTest.*; import com.healthmarketscience.jackcess.Table; import com.healthmarketscience.jackcess.TableBuilder; import com.healthmarketscience.jackcess.impl.ColumnImpl; import com.healthmarketscience.jackcess.impl.JetFormatTest; import com.healthmarketscience.jackcess.impl.TableImpl; import junit.framework.TestCase; +import static com.healthmarketscience.jackcess.TestUtil.*; /** * @author James Ahlborn diff --git a/src/test/java/com/healthmarketscience/jackcess/util/ExportTest.java b/src/test/java/com/healthmarketscience/jackcess/util/ExportTest.java index 128e81c..754be06 100644 --- a/src/test/java/com/healthmarketscience/jackcess/util/ExportTest.java +++ b/src/test/java/com/healthmarketscience/jackcess/util/ExportTest.java @@ -22,16 +22,16 @@ import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Date; +import static com.healthmarketscience.jackcess.Database.*; import com.healthmarketscience.jackcess.ColumnBuilder; import com.healthmarketscience.jackcess.DataType; import com.healthmarketscience.jackcess.Database; -import static com.healthmarketscience.jackcess.Database.*; -import static com.healthmarketscience.jackcess.DatabaseTest.*; import com.healthmarketscience.jackcess.Table; import com.healthmarketscience.jackcess.TableBuilder; import com.healthmarketscience.jackcess.impl.JetFormatTest; import junit.framework.TestCase; import org.apache.commons.lang.SystemUtils; +import static com.healthmarketscience.jackcess.TestUtil.*; /** * diff --git a/src/test/java/com/healthmarketscience/jackcess/util/ImportTest.java b/src/test/java/com/healthmarketscience/jackcess/util/ImportTest.java index 5ff9a52..51241aa 100644 --- a/src/test/java/com/healthmarketscience/jackcess/util/ImportTest.java +++ b/src/test/java/com/healthmarketscience/jackcess/util/ImportTest.java @@ -33,11 +33,11 @@ import com.healthmarketscience.jackcess.ColumnBuilder; import com.healthmarketscience.jackcess.DataType; import com.healthmarketscience.jackcess.Database; import static com.healthmarketscience.jackcess.Database.*; -import static com.healthmarketscience.jackcess.DatabaseTest.*; import com.healthmarketscience.jackcess.Table; import com.healthmarketscience.jackcess.TableBuilder; import com.healthmarketscience.jackcess.impl.JetFormatTest; import junit.framework.TestCase; +import static com.healthmarketscience.jackcess.TestUtil.*; /** * @author Rob Di Marco diff --git a/src/test/java/com/healthmarketscience/jackcess/util/JoinerTest.java b/src/test/java/com/healthmarketscience/jackcess/util/JoinerTest.java index e0c5575..986c8b5 100644 --- a/src/test/java/com/healthmarketscience/jackcess/util/JoinerTest.java +++ b/src/test/java/com/healthmarketscience/jackcess/util/JoinerTest.java @@ -25,13 +25,13 @@ import java.util.Map; import java.util.Set; import com.healthmarketscience.jackcess.Database; -import static com.healthmarketscience.jackcess.DatabaseTest.*; import com.healthmarketscience.jackcess.Index; import com.healthmarketscience.jackcess.Row; import com.healthmarketscience.jackcess.Table; import com.healthmarketscience.jackcess.impl.RowImpl; import static com.healthmarketscience.jackcess.impl.JetFormatTest.*; import junit.framework.TestCase; +import static com.healthmarketscience.jackcess.TestUtil.*; /** * diff --git a/src/test/java/com/healthmarketscience/jackcess/util/MemFileChannelTest.java b/src/test/java/com/healthmarketscience/jackcess/util/MemFileChannelTest.java index 711ed8b..58b8e60 100644 --- a/src/test/java/com/healthmarketscience/jackcess/util/MemFileChannelTest.java +++ b/src/test/java/com/healthmarketscience/jackcess/util/MemFileChannelTest.java @@ -19,7 +19,6 @@ package com.healthmarketscience.jackcess.util; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; -import java.io.RandomAccessFile; import java.nio.ByteBuffer; import java.nio.channels.FileChannel; import java.nio.channels.NonWritableChannelException; @@ -27,7 +26,7 @@ import java.util.Arrays; import junit.framework.TestCase; -import com.healthmarketscience.jackcess.DatabaseTest; +import com.healthmarketscience.jackcess.TestUtil; /** * @@ -131,8 +130,8 @@ public class MemFileChannelTest extends TestCase assertEquals(testFile.length(), tmpFile.length()); - assertTrue(Arrays.equals(DatabaseTest.toByteArray(testFile), - DatabaseTest.toByteArray(tmpFile))); + assertTrue(Arrays.equals(TestUtil.toByteArray(testFile), + TestUtil.toByteArray(tmpFile))); ch2.truncate(0L); assertTrue(ch2.isOpen()); diff --git a/src/test/java/com/healthmarketscience/jackcess/util/OleBlobTest.java b/src/test/java/com/healthmarketscience/jackcess/util/OleBlobTest.java index e9c2020..be3a0a9 100644 --- a/src/test/java/com/healthmarketscience/jackcess/util/OleBlobTest.java +++ b/src/test/java/com/healthmarketscience/jackcess/util/OleBlobTest.java @@ -25,19 +25,18 @@ import com.healthmarketscience.jackcess.ColumnBuilder; import com.healthmarketscience.jackcess.DataType; import com.healthmarketscience.jackcess.Database; import com.healthmarketscience.jackcess.Database.FileFormat; -import static com.healthmarketscience.jackcess.DatabaseTest.*; import com.healthmarketscience.jackcess.Row; import com.healthmarketscience.jackcess.Table; import com.healthmarketscience.jackcess.TableBuilder; import com.healthmarketscience.jackcess.complex.Attachment; -import com.healthmarketscience.jackcess.complex.ComplexValueForeignKey; import com.healthmarketscience.jackcess.impl.ByteUtil; import com.healthmarketscience.jackcess.impl.CompoundOleUtil; -import static com.healthmarketscience.jackcess.impl.JetFormatTest.*; import junit.framework.TestCase; import org.apache.poi.poifs.filesystem.DocumentEntry; import org.apache.poi.poifs.filesystem.DocumentInputStream; import org.apache.poi.poifs.filesystem.NPOIFSFileSystem; +import static com.healthmarketscience.jackcess.TestUtil.*; +import static com.healthmarketscience.jackcess.impl.JetFormatTest.*; /** * diff --git a/src/test/java/com/healthmarketscience/jackcess/util/RowFilterTest.java b/src/test/java/com/healthmarketscience/jackcess/util/RowFilterTest.java index 85058cd..4a247d9 100644 --- a/src/test/java/com/healthmarketscience/jackcess/util/RowFilterTest.java +++ b/src/test/java/com/healthmarketscience/jackcess/util/RowFilterTest.java @@ -21,10 +21,10 @@ import java.util.Arrays; import java.util.List; import com.healthmarketscience.jackcess.DataType; -import static com.healthmarketscience.jackcess.DatabaseTest.*; import com.healthmarketscience.jackcess.Row; import com.healthmarketscience.jackcess.impl.ColumnImpl; import junit.framework.TestCase; +import static com.healthmarketscience.jackcess.TestUtil.*; /** * @author James Ahlborn -- 2.39.5