summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/test/java/com/amazon/carbonado/cursor/TestCursors.java77
1 files changed, 77 insertions, 0 deletions
diff --git a/src/test/java/com/amazon/carbonado/cursor/TestCursors.java b/src/test/java/com/amazon/carbonado/cursor/TestCursors.java
index fa5d8a7..b93fe11 100644
--- a/src/test/java/com/amazon/carbonado/cursor/TestCursors.java
+++ b/src/test/java/com/amazon/carbonado/cursor/TestCursors.java
@@ -92,6 +92,83 @@ public class TestCursors extends TestCase {
assertFalse(cursor.hasNext());
}
+ public void testView() throws Exception {
+ Cursor<Element> view;
+
+ // Empty source.
+ view = new ViewCursor<Element>(createElements(), 10, 100);
+ compareElements(view);
+ view = new ViewCursor<Element>(createElements(), 10, 10);
+ compareElements(view);
+
+ // start at zero
+ view = new ViewCursor<Element>(createElements(1, 2, 3, 4, 5), 0, 100);
+ compareElements(view, 1, 2, 3, 4, 5);
+ view = new ViewCursor<Element>(createElements(1, 2, 3, 4, 5), 0, 5);
+ compareElements(view, 1, 2, 3, 4, 5);
+ view = new ViewCursor<Element>(createElements(1, 2, 3, 4, 5), 0, 4);
+ compareElements(view, 1, 2, 3, 4);
+ view = new ViewCursor<Element>(createElements(1, 2, 3, 4, 5), 0, 1);
+ compareElements(view, 1);
+ view = new ViewCursor<Element>(createElements(1, 2, 3, 4, 5), 0, 0);
+ compareElements(view);
+
+ // start after zero
+ view = new ViewCursor<Element>(createElements(1, 2, 3, 4, 5), 1, 100);
+ compareElements(view, 2, 3, 4, 5);
+ view = new ViewCursor<Element>(createElements(1, 2, 3, 4, 5), 1, 5);
+ compareElements(view, 2, 3, 4, 5);
+ view = new ViewCursor<Element>(createElements(1, 2, 3, 4, 5), 1, 4);
+ compareElements(view, 2, 3, 4);
+ view = new ViewCursor<Element>(createElements(1, 2, 3, 4, 5), 1, 2);
+ compareElements(view, 2);
+ view = new ViewCursor<Element>(createElements(1, 2, 3, 4, 5), 1, 1);
+ compareElements(view);
+
+ // start too high
+ view = new ViewCursor<Element>(createElements(1, 2, 3, 4, 5), 5, 100);
+ compareElements(view);
+ view = new ViewCursor<Element>(createElements(1, 2, 3, 4, 5), 50, 100);
+ compareElements(view);
+
+ // start in middle but end high
+ view = new ViewCursor<Element>(createElements(1, 2, 3, 4, 5), 2, 100);
+ compareElements(view, 3, 4, 5);
+
+ // start after zero and skip
+ view = new ViewCursor<Element>(createElements(1, 2, 3, 4, 5), 2, 100);
+ assertEquals(1, view.skipNext(1));
+ compareElements(view, 4, 5);
+ view = new ViewCursor<Element>(createElements(1, 2, 3, 4, 5), 2, 4);
+ assertEquals(1, view.skipNext(1));
+ compareElements(view, 4);
+ view = new ViewCursor<Element>(createElements(1, 2, 3, 4, 5), 2, 100);
+ assertEquals(2, view.skipNext(2));
+ compareElements(view, 5);
+ view = new ViewCursor<Element>(createElements(1, 2, 3, 4, 5), 2, 100);
+ assertEquals(3, view.skipNext(3));
+ compareElements(view);
+ view = new ViewCursor<Element>(createElements(1, 2, 3, 4, 5), 2, 100);
+ assertEquals(3, view.skipNext(4));
+ compareElements(view);
+
+ // start in middle, end high, and skip
+ view = new ViewCursor<Element>(createElements(1, 2, 3, 4, 5), 2, 100);
+ assertEquals(2, view.skipNext(2));
+ compareElements(view, 5);
+
+ // start too high and skip
+ view = new ViewCursor<Element>(createElements(1, 2, 3, 4, 5), 5, 100);
+ assertEquals(0, view.skipNext(1));
+ compareElements(view);
+ view = new ViewCursor<Element>(createElements(1, 2, 3, 4, 5), 5, 5);
+ assertEquals(0, view.skipNext(1));
+ compareElements(view);
+ view = new ViewCursor<Element>(createElements(1, 2, 3, 4, 5), 500, 600);
+ assertEquals(0, view.skipNext(1));
+ compareElements(view);
+ }
+
public void testUnion() throws Exception {
Cursor<Element> left, right, union;