From 2c900e17e9bd5299ecbc7c4bc19eff06583e1069 Mon Sep 17 00:00:00 2001 From: James Ahlborn Date: Mon, 26 Nov 2007 20:18:09 +0000 Subject: make usagemap cursor work similarly to Cursor; handle live additions and deletions better git-svn-id: https://svn.code.sf.net/p/jackcess/code/jackcess/trunk@183 f203690c-595d-4dc9-a70b-905162fa7fd2 --- .../healthmarketscience/jackcess/CursorTest.java | 72 ++++++++++++++++++++++ 1 file changed, 72 insertions(+) (limited to 'test/src/java') diff --git a/test/src/java/com/healthmarketscience/jackcess/CursorTest.java b/test/src/java/com/healthmarketscience/jackcess/CursorTest.java index ed3e5c5..dc6cc01 100644 --- a/test/src/java/com/healthmarketscience/jackcess/CursorTest.java +++ b/test/src/java/com/healthmarketscience/jackcess/CursorTest.java @@ -155,5 +155,77 @@ public class CursorTest extends TestCase { db.close(); } + public void testLiveAddition() throws Exception { + Database db = createTestTable(); + + Table table = db.getTable("test"); + + Cursor cursor1 = Cursor.createCursor(table); + Cursor cursor2 = Cursor.createCursor(table); + cursor1.skipNextRows(11); + cursor2.skipNextRows(11); + + assertTrue(cursor1.isAfterLast()); + assertTrue(cursor2.isAfterLast()); + + int newRowNum = 11; + table.addRow(newRowNum, "data" + newRowNum); + Map expectedRow = + createExpectedRow("id", newRowNum, "value", "data" + newRowNum); + + assertFalse(cursor1.isAfterLast()); + assertFalse(cursor2.isAfterLast()); + + assertEquals(expectedRow, cursor1.getCurrentRow()); + assertEquals(expectedRow, cursor2.getCurrentRow()); + assertFalse(cursor1.moveToNextRow()); + assertFalse(cursor2.moveToNextRow()); + assertTrue(cursor1.isAfterLast()); + assertTrue(cursor2.isAfterLast()); + + db.close(); + } + + public void testLiveDeletion() throws Exception { + Database db = createTestTable(); + + Table table = db.getTable("test"); + + Cursor cursor1 = Cursor.createCursor(table); + Cursor cursor2 = Cursor.createCursor(table); + Cursor cursor3 = Cursor.createCursor(table); + Cursor cursor4 = Cursor.createCursor(table); + cursor1.skipNextRows(2); + cursor2.skipNextRows(3); + cursor3.skipNextRows(3); + cursor4.skipNextRows(4); + + Map expectedPrevRow = + createExpectedRow("id", 1, "value", "data" + 1); + Map expectedDeletedRow = + createExpectedRow("id", 2, "value", "data" + 2); + Map expectedNextRow = + createExpectedRow("id", 3, "value", "data" + 3); + + assertEquals(expectedDeletedRow, cursor2.getCurrentRow()); + assertEquals(expectedDeletedRow, cursor3.getCurrentRow()); + + assertFalse(cursor2.isCurrentRowDeleted()); + assertFalse(cursor3.isCurrentRowDeleted()); + + cursor2.deleteCurrentRow(); + + assertTrue(cursor2.isCurrentRowDeleted()); + assertTrue(cursor3.isCurrentRowDeleted()); + + assertEquals(expectedNextRow, cursor1.getNextRow()); + assertEquals(expectedNextRow, cursor2.getNextRow()); + assertEquals(expectedNextRow, cursor3.getNextRow()); + + assertEquals(expectedPrevRow, cursor3.getPreviousRow()); + + db.close(); + } + } -- cgit v1.2.3