Use UnsignedLongSet instead of RangeSet in metadata
[controller.git] / opendaylight / md-sal / sal-distributed-datastore / src / test / java / org / opendaylight / controller / cluster / datastore / utils / UnsignedLongSetTest.java
index 7742cf3b753851cc3e58f1af7e477374f22c6d77..1a6754772292dfac8c4c758c1916a1db8a90ab3b 100644 (file)
@@ -7,40 +7,43 @@
  */
 package org.opendaylight.controller.cluster.datastore.utils;
 
+import static org.junit.Assert.assertArrayEquals;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertTrue;
 
-import com.google.common.collect.ImmutableRangeSet;
-import com.google.common.collect.Range;
-import com.google.common.primitives.UnsignedLong;
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.DataInputStream;
+import java.io.DataOutputStream;
+import java.io.IOException;
 import org.junit.Test;
 
 public class UnsignedLongSetTest {
     @Test
     public void testOperations() {
-        final var set = UnsignedLongSet.of();
-        assertEquals("UnsignedLongSet{size=0}", set.toString());
+        final var set = MutableUnsignedLongSet.of();
+        assertEquals("MutableUnsignedLongSet{size=0}", set.toString());
         assertFalse(set.contains(0));
 
         set.add(0);
         assertTrue(set.contains(0));
-        assertEquals("UnsignedLongSet{span=[0..0], size=1}", set.toString());
+        assertEquals("MutableUnsignedLongSet{span=[0..0], size=1}", set.toString());
 
         set.add(1);
         assertTrue(set.contains(1));
-        assertEquals("UnsignedLongSet{span=[0..1], size=1}", set.toString());
+        assertEquals("MutableUnsignedLongSet{span=[0..1], size=1}", set.toString());
         set.add(1);
-        assertEquals("UnsignedLongSet{span=[0..1], size=1}", set.toString());
+        assertEquals("MutableUnsignedLongSet{span=[0..1], size=1}", set.toString());
 
         set.add(4);
-        assertEquals("UnsignedLongSet{span=[0..4], size=2}", set.toString());
+        assertEquals("MutableUnsignedLongSet{span=[0..4], size=2}", set.toString());
 
         set.add(3);
-        assertEquals("UnsignedLongSet{span=[0..4], size=2}", set.toString());
+        assertEquals("MutableUnsignedLongSet{span=[0..4], size=2}", set.toString());
 
         set.add(2);
-        assertEquals("UnsignedLongSet{span=[0..4], size=1}", set.toString());
+        assertEquals("MutableUnsignedLongSet{span=[0..4], size=1}", set.toString());
 
         assertTrue(set.contains(2));
         assertTrue(set.contains(3));
@@ -48,18 +51,35 @@ public class UnsignedLongSetTest {
     }
 
     @Test
-    public void testOfRangeSet() {
-        final var rangeSet = ImmutableRangeSet.<UnsignedLong>builder()
-            .add(Range.closedOpen(UnsignedLong.valueOf(0), UnsignedLong.valueOf(2)))
-            .add(Range.closedOpen(UnsignedLong.valueOf(3), UnsignedLong.valueOf(5)))
-            .build();
-        assertEquals("[[0..2), [3..5)]", rangeSet.toString());
-        assertEquals("UnsignedLongSet{span=[0..4], size=2}", UnsignedLongSet.of(rangeSet).toString());
+    public void testSerialization() throws IOException {
+        final var tmp = MutableUnsignedLongSet.of();
+        tmp.add(0);
+        tmp.add(1);
+        tmp.add(4);
+        tmp.add(3);
+
+        final var set = tmp.immutableCopy();
+
+        final var bos = new ByteArrayOutputStream();
+        try (var out = new DataOutputStream(bos)) {
+            set.writeTo(out);
+        }
+
+        final var bytes = bos.toByteArray();
+        assertArrayEquals(new byte[] { 0, 0, 0, 2, 16, 2, 17, 3, 5 }, bytes);
+
+        final ImmutableUnsignedLongSet read;
+        try (var in = new DataInputStream(new ByteArrayInputStream(bytes))) {
+            read = ImmutableUnsignedLongSet.readFrom(in);
+            assertEquals(0, in.available());
+        }
+
+        assertEquals(set, read);
     }
 
     @Test
     public void testToRangeSet() {
-        final var set = UnsignedLongSet.of();
+        final var set = MutableUnsignedLongSet.of();
         set.add(0);
         set.add(1);
         set.add(4);