X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=common%2Futil%2Fsrc%2Ftest%2Fjava%2Forg%2Fopendaylight%2Fyangtools%2Futil%2FOffsetMapTest.java;h=578b87bc140828837f040e89d100dea5ee4e1f2d;hb=136f1755f17cfe70dfe854e9d886ac0eedf97c19;hp=9022228ad4956a446306270dcfbf0c0cab619bc9;hpb=47be99e64e3f1b33834220289a6875935e12b5e6;p=yangtools.git diff --git a/common/util/src/test/java/org/opendaylight/yangtools/util/OffsetMapTest.java b/common/util/src/test/java/org/opendaylight/yangtools/util/OffsetMapTest.java index 9022228ad4..578b87bc14 100644 --- a/common/util/src/test/java/org/opendaylight/yangtools/util/OffsetMapTest.java +++ b/common/util/src/test/java/org/opendaylight/yangtools/util/OffsetMapTest.java @@ -15,7 +15,7 @@ import static org.junit.Assert.assertSame; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; import com.google.common.collect.ImmutableMap; -import com.google.common.collect.ImmutableSet; +import com.google.common.collect.Iterables; import com.google.common.collect.Iterators; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; @@ -30,6 +30,7 @@ import java.util.Map; import java.util.Map.Entry; import java.util.NoSuchElementException; import java.util.Set; +import org.junit.Before; import org.junit.Test; public class OffsetMapTest { @@ -40,9 +41,14 @@ public class OffsetMapTest { return (ImmutableOffsetMap) ImmutableOffsetMap.copyOf(twoEntryMap); } + @Before + public void setup() { + OffsetMapCache.invalidateCache(); + } + @Test(expected=IllegalArgumentException.class) public void testWrongImmutableConstruction() { - new ImmutableOffsetMap(Collections.emptyMap(), new Object[1]); + new ImmutableOffsetMap.Ordered(Collections.emptyMap(), new String[1]); } @Test @@ -60,7 +66,7 @@ public class OffsetMapTest { final Map result = ImmutableOffsetMap.copyOf(source); assertEquals(source, result); - assertTrue(result instanceof ImmutableMap); + assertTrue(result instanceof SharedSingletonMap); } @Test @@ -98,15 +104,6 @@ public class OffsetMapTest { assertFalse(map.equals("string")); } - @Test - public void testImmutableCopyConstructor() { - final ImmutableOffsetMap source = createMap(); - final ImmutableOffsetMap result = new ImmutableOffsetMap<>(source); - - assertSame(source.offsets(), result.offsets()); - assertSame(source.objects(), result.objects()); - } - @Test public void testImmutableGet() { final Map map = createMap(); @@ -330,19 +327,16 @@ public class OffsetMapTest { mutable.put("k1", "v1"); final ImmutableOffsetMap result = (ImmutableOffsetMap) mutable.toUnmodifiableMap(); - assertEquals(source, result); + assertTrue(source.equals(result)); + assertTrue(result.equals(source)); - // Only offsets should be shared - assertSame(source.offsets(), result.offsets()); - assertNotSame(source.objects(), result.objects()); - - // Iterator order needs to be preserved - assertTrue(Iterators.elementsEqual(source.entrySet().iterator(), result.entrySet().iterator())); + // Iterator order must not be preserved + assertFalse(Iterators.elementsEqual(source.entrySet().iterator(), result.entrySet().iterator())); } @Test public void testEmptyMutable() throws CloneNotSupportedException { - final MutableOffsetMap map = new MutableOffsetMap<>(); + final MutableOffsetMap map = MutableOffsetMap.of(); assertTrue(map.isEmpty()); final Map other = map.clone(); @@ -350,15 +344,6 @@ public class OffsetMapTest { assertNotSame(other, map); } - @Test - public void testMutableWithKeyset() { - final MutableOffsetMap map = new MutableOffsetMap<>(ImmutableSet.of("k1", "k2")); - assertTrue(map.isEmpty()); - assertTrue(map.keySet().isEmpty()); - assertNull(map.get("k1")); - assertNull(map.remove("k2")); - } - @Test public void testMutableToEmpty() { final MutableOffsetMap mutable = createMap().toModifiableMap(); @@ -379,7 +364,7 @@ public class OffsetMapTest { final Map result = mutable.toUnmodifiableMap(); // Should devolve to a singleton - assertTrue(result instanceof ImmutableMap); + assertTrue(result instanceof SharedSingletonMap); assertEquals(ImmutableMap.of("k2", "v2"), result); } @@ -417,14 +402,14 @@ public class OffsetMapTest { mutable.put("k3", "v3"); mutable.put("k1", "v1"); - assertEquals(ImmutableMap.of("k3", "v3"), mutable.newKeys()); + assertEquals(ImmutableMap.of("k1", "v1", "k3", "v3"), mutable.newKeys()); final Map result = mutable.toUnmodifiableMap(); assertTrue(result instanceof ImmutableOffsetMap); assertEquals(threeEntryMap, result); assertEquals(result, threeEntryMap); - assertTrue(Iterators.elementsEqual(threeEntryMap.entrySet().iterator(), result.entrySet().iterator())); + assertFalse(Iterators.elementsEqual(threeEntryMap.entrySet().iterator(), result.entrySet().iterator())); } @Test @@ -469,10 +454,12 @@ public class OffsetMapTest { assertFalse(source.needClone()); assertTrue(result.needClone()); - // Creates a immutable view, which shares the array + // Forced copy, no cloning needed, but maps are equal final ImmutableOffsetMap immutable = (ImmutableOffsetMap) source.toUnmodifiableMap(); - assertTrue(source.needClone()); - assertSame(source.array(), immutable.objects()); + assertFalse(source.needClone()); + assertTrue(source.equals(immutable)); + assertTrue(immutable.equals(source)); + assertTrue(Iterables.elementsEqual(source.entrySet(), immutable.entrySet())); } @Test