Add more serialization assertions
[controller.git] / opendaylight / md-sal / cds-access-api / src / test / java / org / opendaylight / controller / cluster / access / concepts / AbstractIdentifierTest.java
index 080e1e46b4854a74615e1ac8d9a08bd3066cb01c..8fcc9fa1f5ffe1f7eabf3326f65982ac56ed6b64 100644 (file)
@@ -26,6 +26,8 @@ public abstract class AbstractIdentifierTest<T extends Identifier> {
 
     abstract T equalObject();
 
+    abstract int expectedSize();
+
     @Test
     public final void testEquals() {
         assertTrue(object().equals(object()));
@@ -40,22 +42,26 @@ public abstract class AbstractIdentifierTest<T extends Identifier> {
         assertEquals(object().hashCode(), equalObject().hashCode());
     }
 
+
+    @Test
+    public final void testSerialization() throws Exception {
+        assertTrue(object().equals(copy(object())));
+        assertTrue(object().equals(copy(equalObject())));
+        assertFalse(differentObject().equals(copy(object())));
+    }
+
     @SuppressWarnings("unchecked")
-    private static <T> T copy(T obj) throws IOException, ClassNotFoundException {
+    private T copy(final T obj) throws IOException, ClassNotFoundException {
         final ByteArrayOutputStream bos = new ByteArrayOutputStream();
         try (ObjectOutputStream oos = new ObjectOutputStream(bos)) {
             oos.writeObject(obj);
         }
 
-        try (ObjectInputStream ois = new ObjectInputStream(new ByteArrayInputStream(bos.toByteArray()))) {
+        final byte[] bytes = bos.toByteArray();
+        assertEquals(expectedSize(), bytes.length);
+
+        try (ObjectInputStream ois = new ObjectInputStream(new ByteArrayInputStream(bytes))) {
             return (T) ois.readObject();
         }
     }
-
-    @Test
-    public final void testSerialization() throws Exception {
-        assertTrue(object().equals(copy(object())));
-        assertTrue(object().equals(copy(equalObject())));
-        assertFalse(differentObject().equals(copy(object())));
-    }
 }