From e43dc808d7304b90327c1def4452f6e3d9946983 Mon Sep 17 00:00:00 2001 From: Ben Culkin Date: Tue, 16 Aug 2022 23:04:56 -0400 Subject: Update iterator capabilities --- src/test/java/bjc/data/MarkListIteratorTest.java | 41 ++++++++++++++++++++++++ src/test/java/bjc/test/TestUtils.java | 8 ++++- 2 files changed, 48 insertions(+), 1 deletion(-) create mode 100644 src/test/java/bjc/data/MarkListIteratorTest.java (limited to 'src/test/java') diff --git a/src/test/java/bjc/data/MarkListIteratorTest.java b/src/test/java/bjc/data/MarkListIteratorTest.java new file mode 100644 index 0000000..6eb4994 --- /dev/null +++ b/src/test/java/bjc/data/MarkListIteratorTest.java @@ -0,0 +1,41 @@ +package bjc.data; + +import static org.junit.Assert.*; + +import java.util.Arrays; +import java.util.List; + +import org.junit.Test; + +import bjc.test.TestUtils; + +/** + * Tests for {@link MarkListIterator} + * @author bjcul + * + */ +@SuppressWarnings("javadoc") +public class MarkListIteratorTest { + + @Test + public void test() { + List list1 = Arrays.asList("a", "b", "c"); + + MarkListIterator itr1 = new MarkListIterator<>(list1); + itr1.mark(); + + assertFalse(itr1.hasPrevious()); + assertTrue(itr1.hasNext()); + TestUtils.assertIteratorEquals(itr1, "a", "b", "c"); + + assertTrue(itr1.hasPrevious()); + assertFalse(itr1.hasNext()); + + itr1.rollback(false); + + assertFalse(itr1.hasPrevious()); + assertTrue(itr1.hasNext()); + TestUtils.assertIteratorEquals(itr1, "a", "b", "c"); + } + +} diff --git a/src/test/java/bjc/test/TestUtils.java b/src/test/java/bjc/test/TestUtils.java index d79157d..04cdf70 100644 --- a/src/test/java/bjc/test/TestUtils.java +++ b/src/test/java/bjc/test/TestUtils.java @@ -21,7 +21,13 @@ public class TestUtils { public static void assertIteratorEquals(Iterator src, T... vals) { for (int i = 0; i < vals.length; i++) { if (src.hasNext()) { - assertEquals(vals[i], src.next()); + T actNext = src.next(); + T expNext = vals[i]; + + String fmt = "mismatch at index %d"; + String msg = String.format(fmt, i); + + assertEquals(msg, expNext, actNext); } else { String msg = String.format("not enough values: got %d, wanted %d", i, vals.length); -- cgit v1.2.3