This is an automated email from the ASF dual-hosted git repository. ggregory pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/commons-collections.git
The following commit(s) were added to refs/heads/master by this push: new 954c29f Add a test case in AbstractMultiValuedMapTest for AbstractMultiValuedMapTest.MultiValuedMapIterator (#108) 954c29f is described below commit 954c29f969beb1953343337130da4286bd92402e Author: dota17 <50514813+dot...@users.noreply.github.com> AuthorDate: Fri Nov 1 23:42:00 2019 +0800 Add a test case in AbstractMultiValuedMapTest for AbstractMultiValuedMapTest.MultiValuedMapIterator (#108) --- .../multimap/AbstractMultiValuedMapTest.java | 61 ++++++++++++++++++++++ .../multimap/HashSetValuedHashMapTest.java | 5 ++ 2 files changed, 66 insertions(+) diff --git a/src/test/java/org/apache/commons/collections4/multimap/AbstractMultiValuedMapTest.java b/src/test/java/org/apache/commons/collections4/multimap/AbstractMultiValuedMapTest.java index b821e79..ea851cc 100644 --- a/src/test/java/org/apache/commons/collections4/multimap/AbstractMultiValuedMapTest.java +++ b/src/test/java/org/apache/commons/collections4/multimap/AbstractMultiValuedMapTest.java @@ -104,6 +104,17 @@ public abstract class AbstractMultiValuedMapTest<K, V> extends AbstractObjectTes return true; } + /** + * Returns true if the maps produced by {@link #makeObject()} and + * {@link #makeFullMap()} supports set value. + * <p> + * Default implementation returns false. Override if your collection class + * supports set value. + */ + public boolean isHashSetValue() { + return false; + } + @Override public boolean isTestSerialization() { return true; @@ -778,6 +789,56 @@ public abstract class AbstractMultiValuedMapTest<K, V> extends AbstractObjectTes } } + public void testMultiValuedMapIterator() { + final MultiValuedMap<K, V> map = makeFullMap(); + final MapIterator<K, V> it = map.mapIterator(); + + try { + it.getKey(); + fail(); + } catch (final IllegalStateException ise) { + } + try { + it.getValue(); + fail(); + } catch (final IllegalStateException ise) { + } + if (isAddSupported()) { + try { + it.setValue((V) "V"); + fail(); + } catch (final IllegalStateException ise) { + } + } + + if (!isHashSetValue() && isAddSupported()) { + assertTrue(it.hasNext() ); + assertEquals("one", it.next()); + assertEquals("one", it.getKey()); + assertEquals("uno", it.getValue()); + assertEquals("one", it.next()); + assertEquals("one", it.getKey()); + assertEquals("un", it.getValue()); + assertEquals("two", it.next()); + assertEquals("two", it.getKey()); + assertEquals("dos", it.getValue()); + assertEquals("two", it.next()); + assertEquals("two", it.getKey()); + assertEquals("deux", it.getValue()); + assertEquals("three", it.next()); + assertEquals("three", it.getKey()); + assertEquals("tres", it.getValue()); + assertEquals("three", it.next()); + assertEquals("three", it.getKey()); + assertEquals("trois", it.getValue()); + try { + it.setValue((V) "threetrois"); + fail(); + } catch (final UnsupportedOperationException e) { + } + } + } + // ----------------------------------------------------------------------- // Manual serialization testing as this class cannot easily // extend the AbstractTestMap diff --git a/src/test/java/org/apache/commons/collections4/multimap/HashSetValuedHashMapTest.java b/src/test/java/org/apache/commons/collections4/multimap/HashSetValuedHashMapTest.java index 8a33998..846488e 100644 --- a/src/test/java/org/apache/commons/collections4/multimap/HashSetValuedHashMapTest.java +++ b/src/test/java/org/apache/commons/collections4/multimap/HashSetValuedHashMapTest.java @@ -53,6 +53,11 @@ public class HashSetValuedHashMapTest<K, V> extends AbstractMultiValuedMapTest<K return new HashSetValuedHashMap<>(); } + @Override + public boolean isHashSetValue() { + return true; + } + // ----------------------------------------------------------------------- @SuppressWarnings("unchecked") public void testSetValuedMapAdd() {