*/
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));
}
@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);