From fefce70e973175f2124e2737c4fb77a2ffa39c29 Mon Sep 17 00:00:00 2001 From: James Ahlborn Date: Mon, 19 Aug 2019 01:07:26 +0000 Subject: [PATCH] add unit tests for access 97 text indexes git-svn-id: https://svn.code.sf.net/p/jackcess/code/jackcess/branches/a97_indexes@1313 f203690c-595d-4dc9-a70b-905162fa7fd2 --- src/test/data/V1997/testIndexCodesV1997.mdb | Bin 0 -> 364544 bytes .../jackcess/CursorTest.java | 201 +++++++++--------- .../jackcess/TestUtil.java | 18 +- .../jackcess/impl/IndexCodesTest.java | 10 +- .../jackcess/impl/JetFormatTest.java | 20 +- 5 files changed, 141 insertions(+), 108 deletions(-) create mode 100644 src/test/data/V1997/testIndexCodesV1997.mdb diff --git a/src/test/data/V1997/testIndexCodesV1997.mdb b/src/test/data/V1997/testIndexCodesV1997.mdb new file mode 100644 index 0000000000000000000000000000000000000000..f52a4ea6b956186d3796a1aeaaaf36d0e61e7f64 GIT binary patch literal 364544 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 INDEX_CURSOR_DBS = + static final List INDEX_CURSOR_DBS = TestDB.getSupportedForBasename(Basename.INDEX_CURSOR); @@ -82,9 +82,9 @@ public class CursorTest extends TestCase { expectedRows.subList(0, startIdx).clear(); return expectedRows; } - - private static Database createTestTable(final FileFormat fileFormat) - throws Exception + + private static Database createTestTable(final FileFormat fileFormat) + throws Exception { Database db = createMem(fileFormat); @@ -110,10 +110,10 @@ public class CursorTest extends TestCase { expectedRows.add(createExpectedRow("id", i, "value", "data" + i)); } return expectedRows; - } + } - static Database createTestIndexTable(final TestDB indexCursorDB) - throws Exception + static Database createTestIndexTable(final TestDB indexCursorDB) + throws Exception { Database db = openMem(indexCursorDB); @@ -141,8 +141,8 @@ public class CursorTest extends TestCase { return expectedRows; } - private static Database createDupeTestTable(final FileFormat fileFormat) - throws Exception + private static Database createDupeTestTable(final FileFormat fileFormat) + throws Exception { Database db = createMem(fileFormat); @@ -158,8 +158,8 @@ public class CursorTest extends TestCase { return db; } - static Database createDupeTestTable(final TestDB indexCursorDB) - throws Exception + static Database createDupeTestTable(final TestDB indexCursorDB) + throws Exception { Database db = openMem(indexCursorDB); @@ -185,7 +185,7 @@ public class CursorTest extends TestCase { .setEndRowInclusive(type == 0) .toCursor(); } - + public void testRowId() throws Exception { // test special cases RowIdImpl rowId1 = new RowIdImpl(1, 2); @@ -201,7 +201,7 @@ public class CursorTest extends TestCase { RowIdImpl.LAST_ROW_ID), sortedRowIds); } - + public void testSimple() throws Exception { for (final FileFormat fileFormat : JetFormatTest.SUPPORTED_FILEFORMATS) { Database db = createTestTable(fileFormat); @@ -266,7 +266,7 @@ public class CursorTest extends TestCase { assertTrue(cursor.moveToNextRow()); assertTrue(cursor.moveToPreviousRow()); assertEquals(expectedRow, cursor.getCurrentRow()); - + while(cursor.moveToNextRow()) { foundRows.add(cursor.getCurrentRow()); } @@ -285,7 +285,7 @@ public class CursorTest extends TestCase { assertTrue(cursor.isAfterLast()); cursor.restoreSavepoint(savepoint); - assertEquals(expectedRow, cursor.getCurrentRow()); + assertEquals(expectedRow, cursor.getCurrentRow()); } public void testMoveNoReset() throws Exception { @@ -305,18 +305,18 @@ public class CursorTest extends TestCase { { List> expectedRows = createTestTableData(); List> foundRows = new ArrayList>(); - + Iterator iter = cursor.newIterable().iterator(); for(int i = 0; i < 6; ++i) { foundRows.add(iter.next()); - } + } iter = cursor.newIterable().reset(false).reverse().iterator(); iter.next(); Map row = iter.next(); assertEquals(expectedRows.get(4), row); - + iter = cursor.newIterable().reset(false).iterator(); iter.next(); row = iter.next(); @@ -326,11 +326,11 @@ public class CursorTest extends TestCase { iter = cursor.newIterable().reset(false).iterator(); for(int i = 6; i < 10; ++i) { foundRows.add(iter.next()); - } + } assertEquals(expectedRows, foundRows); } - + public void testSearch() throws Exception { for (final FileFormat fileFormat : JetFormatTest.SUPPORTED_FILEFORMATS) { Database db = createTestTable(fileFormat); @@ -372,7 +372,7 @@ public class CursorTest extends TestCase { assertEquals(createExpectedRow("id", 7, "value", "data" + 7), cursor.getCurrentRow()); - + assertTrue(cursor.findFirstRow(table.getColumn("value"), "data" + 4)); assertEquals(createExpectedRow("id", 4, "value", "data" + 4), @@ -387,7 +387,7 @@ public class CursorTest extends TestCase { "id", outOfRangeValue, "value", "data" + outOfRangeValue))); } - + assertEquals("data" + 5, CursorBuilder.findValue(table, table.getColumn("value"), @@ -441,9 +441,9 @@ public class CursorTest extends TestCase { for(Map row : cursor.newIterable().reverse()) { foundRows.add(row); } - assertEquals(expectedRows, foundRows); + assertEquals(expectedRows, foundRows); } - + public void testLiveAddition() throws Exception { for (final FileFormat fileFormat : JetFormatTest.SUPPORTED_FILEFORMATS) { Database db = createTestTable(fileFormat); @@ -470,7 +470,7 @@ public class CursorTest extends TestCase { assertTrue(cursor2.isAfterLast()); table.addRow(newRowNum, "data" + newRowNum); - Map expectedRow = + Map expectedRow = createExpectedRow("id", newRowNum, "value", "data" + newRowNum); assertFalse(cursor1.isAfterLast()); @@ -484,7 +484,7 @@ public class CursorTest extends TestCase { assertTrue(cursor2.isAfterLast()); } - + public void testLiveDeletion() throws Exception { for (final FileFormat fileFormat : JetFormatTest.SUPPORTED_FILEFORMATS) { Database db = createTestTable(fileFormat); @@ -524,7 +524,7 @@ public class CursorTest extends TestCase { assertEquals(expectedDeletedRow, cursor2.getCurrentRow()); assertEquals(expectedDeletedRow, cursor3.getCurrentRow()); - + assertFalse(cursor2.isCurrentRowDeleted()); assertFalse(cursor3.isCurrentRowDeleted()); @@ -536,7 +536,7 @@ public class CursorTest extends TestCase { assertEquals(expectedNextRow, cursor1.getNextRow()); assertEquals(expectedNextRow, cursor2.getNextRow()); assertEquals(expectedNextRow, cursor3.getNextRow()); - + assertEquals(expectedPrevRow, cursor3.getPreviousRow()); assertTrue(cursor3.moveToNextRow()); @@ -606,7 +606,7 @@ public class CursorTest extends TestCase { db.close(); } } - + public void testReverseIndex() throws Exception { for (final TestDB indexCursorDB : INDEX_CURSOR_DBS) { Database db = createTestIndexTable(indexCursorDB); @@ -684,7 +684,7 @@ public class CursorTest extends TestCase { } } } - + public void testMoveIndexSubRange() throws Exception { for (final TestDB indexCursorDB : INDEX_CURSOR_DBS) { for(int i = 0; i < 2; ++i) { @@ -704,7 +704,7 @@ public class CursorTest extends TestCase { } } } - + public void testSearchIndexSubRange() throws Exception { for (final TestDB indexCursorDB : INDEX_CURSOR_DBS) { for(int i = 0; i < 2; ++i) { @@ -759,7 +759,7 @@ public class CursorTest extends TestCase { } } } - + public void testLiveDeletionIndexSubRange() throws Exception { for (final TestDB indexCursorDB : INDEX_CURSOR_DBS) { for(int i = 0; i < 2; ++i) { @@ -873,7 +873,7 @@ public class CursorTest extends TestCase { rows = RowFilterTest.toList( cursor.newIterable().setMatchPattern( Collections.singletonMap("id", 8))); - + expectedRows = createExpectedTable( createExpectedRow( @@ -883,7 +883,7 @@ public class CursorTest extends TestCase { assertEquals(expectedRows, rows); for(Map row : table) { - + List> tmpRows = new ArrayList>(); for(Map tmpRow : cursor) { if(row.equals(tmpRow)) { @@ -892,7 +892,7 @@ public class CursorTest extends TestCase { } expectedRows = tmpRows; assertFalse(expectedRows.isEmpty()); - + rows = RowFilterTest.toList(cursor.newIterable().setMatchPattern(row)); assertEquals(expectedRows, rows); @@ -944,9 +944,9 @@ public class CursorTest extends TestCase { db.close(); } } - + public void testColumnMatcher() throws Exception { - + for (final FileFormat fileFormat : JetFormatTest.SUPPORTED_FILEFORMATS) { Database db = createTestTable(fileFormat); @@ -958,7 +958,7 @@ public class CursorTest extends TestCase { Cursor cursor = CursorBuilder.createCursor(table); doTestMatcher(table, cursor, SimpleColumnMatcher.INSTANCE, false); - doTestMatcher(table, cursor, CaseInsensitiveColumnMatcher.INSTANCE, + doTestMatcher(table, cursor, CaseInsensitiveColumnMatcher.INSTANCE, true); db.close(); } @@ -979,8 +979,8 @@ public class CursorTest extends TestCase { assertFalse(columnMatcher.matches(table, "value", null, 13)); assertTrue(columnMatcher.matches(table, "value", 13, 13)); } - - private static void doTestMatcher(Table table, Cursor cursor, + + private static void doTestMatcher(Table table, Cursor cursor, ColumnMatcher columnMatcher, boolean caseInsensitive) throws Exception @@ -1021,7 +1021,7 @@ public class CursorTest extends TestCase { assertEquals(createExpectedRow("id", 7, "value", "data" + 7), cursor.getCurrentRow()); - + assertTrue(cursor.findFirstRow(createExpectedRow( "value", "Data" + 7)) == caseInsensitive); if(caseInsensitive) { @@ -1029,13 +1029,13 @@ public class CursorTest extends TestCase { "value", "data" + 7), cursor.getCurrentRow()); } - + assertTrue(cursor.findFirstRow(table.getColumn("value"), "data" + 4)); assertEquals(createExpectedRow("id", 4, "value", "data" + 4), cursor.getCurrentRow()); - assertTrue(cursor.findFirstRow(table.getColumn("value"), "Data" + 4) + assertTrue(cursor.findFirstRow(table.getColumn("value"), "Data" + 4) == caseInsensitive); if(caseInsensitive) { assertEquals(createExpectedRow("id", 4, @@ -1067,8 +1067,8 @@ public class CursorTest extends TestCase { } public void testIndexCursor() throws Exception - { - for (final TestDB testDB : TestDB.getSupportedForBasename(Basename.INDEX)) { + { + for (final TestDB testDB : TestDB.getSupportedForBasename(Basename.INDEX, true)) { Database db = openMem(testDB); Table t1 = db.getTable("Table1"); @@ -1081,7 +1081,7 @@ public class CursorTest extends TestCase { assertTrue(cursor.findFirstRowByEntry(1)); assertEquals(1, cursor.getCurrentRow().get("id")); - + cursor.findClosestRowByEntry(2); assertEquals(2, cursor.getCurrentRow().get("id")); @@ -1090,11 +1090,11 @@ public class CursorTest extends TestCase { assertTrue(cursor.isAfterLast()); db.close(); - } + } } - + public void testIndexCursorDelete() throws Exception - { + { for (final TestDB testDB : TestDB.getSupportedForBasename(Basename.INDEX)) { Database db = openMem(testDB); @@ -1111,7 +1111,7 @@ public class CursorTest extends TestCase { assertEquals(Arrays.asList("baz11", "baz11-2"), expectedData); expectedData = new ArrayList(); - for(Iterator iter = + for(Iterator iter = cursor.newEntryIterable(1).iterator(); iter.hasNext(); ) { expectedData.add(iter.next().getString("data")); @@ -1134,7 +1134,7 @@ public class CursorTest extends TestCase { } assertEquals(Arrays.asList("baz11", "baz11-2"), expectedData); - + expectedData = new ArrayList(); for(Row row : cursor.newEntryIterable(1) .addColumnNames("data")) { @@ -1142,13 +1142,13 @@ public class CursorTest extends TestCase { } assertTrue(expectedData.isEmpty()); - + db.close(); - } + } } - + public void testCursorDelete() throws Exception - { + { for (final TestDB testDB : TestDB.getSupportedForBasename(Basename.INDEX)) { Database db = openMem(testDB); @@ -1191,7 +1191,7 @@ public class CursorTest extends TestCase { } assertEquals(Arrays.asList("baz11", "baz11-2"), expectedData); - + expectedData = new ArrayList(); for(Row row : cursor.newIterable().setColumnNames( Arrays.asList("otherfk1", "data"))) { @@ -1201,11 +1201,11 @@ public class CursorTest extends TestCase { } assertTrue(expectedData.isEmpty()); - + db.close(); - } + } } - + public void testFindByRowId() throws Exception { for (final FileFormat fileFormat : JetFormatTest.SUPPORTED_FILEFORMATS) { Database db = createTestTable(fileFormat); @@ -1233,25 +1233,25 @@ public class CursorTest extends TestCase { } } - private static void doTestFindByRowId(Cursor cursor) + private static void doTestFindByRowId(Cursor cursor) throws Exception { for(int i = 0; i < 3; ++i) { cursor.moveToNextRow(); - } + } Row r1 = cursor.getCurrentRow(); for(int i = 0; i < 3; ++i) { cursor.moveToNextRow(); - } + } Row r2 = cursor.getCurrentRow(); doTestFindByRowId(cursor, r1, 2); doTestFindByRowId(cursor, r2, 5); - } + } private static void doTestFindByRowId(Cursor cursor, Row row, int id) throws Exception @@ -1273,7 +1273,7 @@ public class CursorTest extends TestCase { assertFalse(cursor.findRow(RowIdImpl.FIRST_ROW_ID)); - assertEquals(id - 1, cursor.getCurrentRow().get("id")); + assertEquals(id - 1, cursor.getCurrentRow().get("id")); } public void testIterationEarlyExit() throws Exception { @@ -1301,7 +1301,7 @@ public class CursorTest extends TestCase { IndexCursor cursor = CursorBuilder.createCursor( table.getIndex("value_idx")); - + try { cursor.newIterable() .addMatchPattern("value", "val-9") @@ -1336,7 +1336,7 @@ public class CursorTest extends TestCase { public void testPartialIndexFind() throws Exception { for (final FileFormat fileFormat : JetFormatTest.SUPPORTED_FILEFORMATS) { - + Database db = createMem(fileFormat); TableImpl t = (TableImpl)new TableBuilder("Test") @@ -1348,23 +1348,23 @@ public class CursorTest extends TestCase { .addIndex(new IndexBuilder("idx3").addColumns("data1", "num2", "key3")) .toTable(db); - Index idx = t.findIndexForColumns(Arrays.asList("data1"), + Index idx = t.findIndexForColumns(Arrays.asList("data1"), TableImpl.IndexFeature.ANY_MATCH); assertEquals("idx3", idx.getName()); - idx = t.findIndexForColumns(Arrays.asList("data1", "num2"), + idx = t.findIndexForColumns(Arrays.asList("data1", "num2"), TableImpl.IndexFeature.ANY_MATCH); assertEquals("idx3", idx.getName()); - idx = t.findIndexForColumns(Arrays.asList("data1", "num2", "key3"), + idx = t.findIndexForColumns(Arrays.asList("data1", "num2", "key3"), TableImpl.IndexFeature.ANY_MATCH); assertEquals("idx3", idx.getName()); - assertNull(t.findIndexForColumns(Arrays.asList("num2"), + assertNull(t.findIndexForColumns(Arrays.asList("num2"), TableImpl.IndexFeature.ANY_MATCH)); - assertNull(t.findIndexForColumns(Arrays.asList("data1", "key3"), + assertNull(t.findIndexForColumns(Arrays.asList("data1", "key3"), TableImpl.IndexFeature.ANY_MATCH)); - assertNull(t.findIndexForColumns(Arrays.asList("data1"), + assertNull(t.findIndexForColumns(Arrays.asList("data1"), TableImpl.IndexFeature.EXACT_MATCH)); @@ -1372,23 +1372,23 @@ public class CursorTest extends TestCase { .addColumns("data1", "num2") .addToTable(t); - idx = t.findIndexForColumns(Arrays.asList("data1"), + idx = t.findIndexForColumns(Arrays.asList("data1"), TableImpl.IndexFeature.ANY_MATCH); assertEquals("idx2", idx.getName()); - idx = t.findIndexForColumns(Arrays.asList("data1", "num2"), + idx = t.findIndexForColumns(Arrays.asList("data1", "num2"), TableImpl.IndexFeature.ANY_MATCH); assertEquals("idx2", idx.getName()); - idx = t.findIndexForColumns(Arrays.asList("data1", "num2", "key3"), + idx = t.findIndexForColumns(Arrays.asList("data1", "num2", "key3"), TableImpl.IndexFeature.ANY_MATCH); assertEquals("idx3", idx.getName()); - assertNull(t.findIndexForColumns(Arrays.asList("num2"), + assertNull(t.findIndexForColumns(Arrays.asList("num2"), TableImpl.IndexFeature.ANY_MATCH)); - assertNull(t.findIndexForColumns(Arrays.asList("data1", "key3"), + assertNull(t.findIndexForColumns(Arrays.asList("data1", "key3"), TableImpl.IndexFeature.ANY_MATCH)); - assertNull(t.findIndexForColumns(Arrays.asList("data1"), + assertNull(t.findIndexForColumns(Arrays.asList("data1"), TableImpl.IndexFeature.EXACT_MATCH)); @@ -1396,21 +1396,21 @@ public class CursorTest extends TestCase { .addColumns("data1") .addToTable(t); - idx = t.findIndexForColumns(Arrays.asList("data1"), + idx = t.findIndexForColumns(Arrays.asList("data1"), TableImpl.IndexFeature.ANY_MATCH); assertEquals("idx1", idx.getName()); - idx = t.findIndexForColumns(Arrays.asList("data1", "num2"), + idx = t.findIndexForColumns(Arrays.asList("data1", "num2"), TableImpl.IndexFeature.ANY_MATCH); assertEquals("idx2", idx.getName()); - idx = t.findIndexForColumns(Arrays.asList("data1", "num2", "key3"), + idx = t.findIndexForColumns(Arrays.asList("data1", "num2", "key3"), TableImpl.IndexFeature.ANY_MATCH); assertEquals("idx3", idx.getName()); - assertNull(t.findIndexForColumns(Arrays.asList("num2"), + assertNull(t.findIndexForColumns(Arrays.asList("num2"), TableImpl.IndexFeature.ANY_MATCH)); - assertNull(t.findIndexForColumns(Arrays.asList("data1", "key3"), + assertNull(t.findIndexForColumns(Arrays.asList("data1", "key3"), TableImpl.IndexFeature.ANY_MATCH)); db.close(); @@ -1420,7 +1420,7 @@ public class CursorTest extends TestCase { public void testPartialIndexLookup() throws Exception { for (final FileFormat fileFormat : JetFormatTest.SUPPORTED_FILEFORMATS) { - + Database db = createMem(fileFormat); TableImpl t = (TableImpl)new TableBuilder("Test") @@ -1482,7 +1482,7 @@ public class CursorTest extends TestCase { doFindFirstByEntry(c, 27, "C", 1, "K1"); doFindFirstByEntry(c, null, "C", 4, "K3"); } - + try { if(colCount > 2) { c.findFirstRowByEntry("C", 4, "K1", 14); @@ -1509,27 +1509,27 @@ public class CursorTest extends TestCase { doFindByEntry(c, new int[]{}, "B", 3, "K3"); } - doFindByRow(idx, 13, + doFindByRow(idx, 13, "data1", "B", "value", "value13"); - doFindByRow(idx, 13, + doFindByRow(idx, 13, "data1", "B", "key3", "K1", "value", "value13"); - doFindByRow(idx, 13, + doFindByRow(idx, 13, "data1", "B", "num2", 3, "key3", "K1", "value", "value13"); - doFindByRow(idx, 13, + doFindByRow(idx, 13, "num2", 3, "value", "value13"); - doFindByRow(idx, 13, + doFindByRow(idx, 13, "value", "value13"); - doFindByRow(idx, null, + doFindByRow(idx, null, "data1", "B", "num2", 5, "key3", "K1", "value", "value13"); - doFindByRow(idx, null, + doFindByRow(idx, null, "data1", "B", "value", "value4"); Column col = idx.getTable().getColumn("data1"); doFindValue(idx, 21, col, "C"); - doFindValue(idx, null, col, "Z"); + doFindValue(idx, null, col, "Z"); col = idx.getTable().getColumn("value"); doFindValue(idx, 21, col, "value21"); - doFindValue(idx, null, col, "valueZ"); + doFindValue(idx, null, col, "valueZ"); } private static void doFindFirstByEntry(IndexCursor c, Integer expectedId, @@ -1543,7 +1543,7 @@ public class CursorTest extends TestCase { assertFalse(c.findFirstRowByEntry(entry)); } } - + private static void doFindByEntryRange(IndexCursor c, int start, int end, Object... entry) { @@ -1553,7 +1553,7 @@ public class CursorTest extends TestCase { } doFindByEntry(c, expectedIds, entry); } - + private static void doFindByEntry(IndexCursor c, int[] ids, Object... entry) { @@ -1563,7 +1563,7 @@ public class CursorTest extends TestCase { } doFindByEntry(c, expectedIds, entry); } - + private static void doFindByEntry(IndexCursor c, List expectedIds, Object... entry) { @@ -1585,9 +1585,9 @@ public class CursorTest extends TestCase { } else { assertNull(r); } - } + } - private static void doFindValue(Index idx, Integer id, + private static void doFindValue(Index idx, Integer id, Column columnPattern, Object valuePattern) throws Exception { @@ -1598,6 +1598,5 @@ public class CursorTest extends TestCase { } else { assertNull(value); } - } + } } - diff --git a/src/test/java/com/healthmarketscience/jackcess/TestUtil.java b/src/test/java/com/healthmarketscience/jackcess/TestUtil.java index fef09cc..d4bccd8 100644 --- a/src/test/java/com/healthmarketscience/jackcess/TestUtil.java +++ b/src/test/java/com/healthmarketscience/jackcess/TestUtil.java @@ -26,11 +26,11 @@ import java.io.OutputStream; import java.io.PrintWriter; import java.lang.reflect.Field; import java.nio.ByteBuffer; +import java.nio.charset.Charset; import java.nio.channels.FileChannel; import java.time.Instant; import java.time.LocalDateTime; import java.time.ZoneId; -import java.time.ZoneOffset; import java.util.ArrayList; import java.util.Arrays; import java.util.Calendar; @@ -89,12 +89,20 @@ public class TestUtil public static Database open(FileFormat fileFormat, File file, boolean inMem) throws Exception + { + return open(fileFormat, file, inMem, null); + } + + public static Database open(FileFormat fileFormat, File file, boolean inMem, + Charset charset) + throws Exception { FileChannel channel = (inMem ? MemFileChannel.newChannel( file, MemFileChannel.RW_CHANNEL_MODE) : null); final Database db = new DatabaseBuilder(file).setReadOnly(true) - .setAutoSync(getTestAutoSync()).setChannel(channel).open(); + .setAutoSync(getTestAutoSync()).setChannel(channel) + .setCharset(charset).open(); Assert.assertEquals("Wrong JetFormat.", DatabaseImpl.getFileFormatDetails(fileFormat).getFormat(), ((DatabaseImpl)db).getFormat()); @@ -103,11 +111,13 @@ public class TestUtil } public static Database open(TestDB testDB) throws Exception { - return open(testDB.getExpectedFileFormat(), testDB.getFile()); + return open(testDB.getExpectedFileFormat(), testDB.getFile(), false, + testDB.getExpectedCharset()); } public static Database openMem(TestDB testDB) throws Exception { - return open(testDB.getExpectedFileFormat(), testDB.getFile(), true); + return open(testDB.getExpectedFileFormat(), testDB.getFile(), true, + testDB.getExpectedCharset()); } public static Database create(FileFormat fileFormat) throws Exception { diff --git a/src/test/java/com/healthmarketscience/jackcess/impl/IndexCodesTest.java b/src/test/java/com/healthmarketscience/jackcess/impl/IndexCodesTest.java index 878ffdc..bf386d8 100644 --- a/src/test/java/com/healthmarketscience/jackcess/impl/IndexCodesTest.java +++ b/src/test/java/com/healthmarketscience/jackcess/impl/IndexCodesTest.java @@ -63,7 +63,7 @@ public class IndexCodesTest extends TestCase { public void testIndexCodes() throws Exception { - for (final TestDB testDB : TestDB.getSupportedForBasename(Basename.INDEX_CODES)) { + for (final TestDB testDB : TestDB.getSupportedForBasename(Basename.INDEX_CODES, true)) { Database db = openMem(testDB); for(Table t : db) { @@ -86,6 +86,14 @@ public class IndexCodesTest extends TestCase { while(cursor.moveToNextRow()) { Row row = cursor.getCurrentRow(); + + Object data = row.get("data"); + if((testDB.getExpectedFileFormat() == Database.FileFormat.V1997) && + (data instanceof String) && ((String)data).contains("\uFFFD")) { + // this row has a character not supported in the v1997 charset + continue; + } + Cursor.Position curPos = cursor.getSavepoint().getCurrentPosition(); boolean success = false; try { diff --git a/src/test/java/com/healthmarketscience/jackcess/impl/JetFormatTest.java b/src/test/java/com/healthmarketscience/jackcess/impl/JetFormatTest.java index 66c8a71..9257e5e 100644 --- a/src/test/java/com/healthmarketscience/jackcess/impl/JetFormatTest.java +++ b/src/test/java/com/healthmarketscience/jackcess/impl/JetFormatTest.java @@ -3,6 +3,7 @@ package com.healthmarketscience.jackcess.impl; import java.io.File; import java.io.IOException; import java.io.InputStream; +import java.nio.charset.Charset; import java.nio.channels.FileChannel; import java.nio.channels.NonWritableChannelException; import java.sql.SQLException; @@ -67,6 +68,9 @@ public class JetFormatTest extends TestCase { public String toString() { return _basename; } } + /** charset for access 97 dbs */ + public static final Charset A97_CHARSET = Charset.forName("windows-1252"); + /** Defines currently supported db file formats. (can be modified at runtime via the system property "com.healthmarketscience.jackcess.testFormats") */ @@ -109,12 +113,15 @@ public class JetFormatTest extends TestCase { private final File dbFile; private final FileFormat expectedFileFormat; + private final Charset _charset; private TestDB(File databaseFile, - FileFormat expectedDBFileFormat) { + FileFormat expectedDBFileFormat, + Charset charset) { dbFile = databaseFile; expectedFileFormat = expectedDBFileFormat; + _charset = charset; } public final File getFile() { return dbFile; } @@ -127,6 +134,10 @@ public class JetFormatTest extends TestCase { return DatabaseImpl.getFileFormatDetails(expectedFileFormat).getFormat(); } + public final Charset getExpectedCharset() { + return _charset; + } + @Override public final String toString() { return "dbFile: " + dbFile.getAbsolutePath() @@ -162,7 +173,12 @@ public class JetFormatTest extends TestCase { throw new RuntimeException(e); } - supportedTestDBs.add(new TestDB(testFile, fileFormat)); + Charset charset = null; + if(fileFormat == FileFormat.V1997) { + charset = A97_CHARSET; + } + + supportedTestDBs.add(new TestDB(testFile, fileFormat, charset)); } return supportedTestDBs; } -- 2.39.5