Increased unit test coverage of serialization factories
[openflowjava.git] / openflow-protocol-impl / src / test / java / org / opendaylight / openflowjava / protocol / impl / serialization / factories / multipart / MultipartRequestGroupFeaturesTest.java
diff --git a/openflow-protocol-impl/src/test/java/org/opendaylight/openflowjava/protocol/impl/serialization/factories/multipart/MultipartRequestGroupFeaturesTest.java b/openflow-protocol-impl/src/test/java/org/opendaylight/openflowjava/protocol/impl/serialization/factories/multipart/MultipartRequestGroupFeaturesTest.java
new file mode 100644 (file)
index 0000000..2097974
--- /dev/null
@@ -0,0 +1,77 @@
+/*\r
+ * Copyright (c) 2014 Pantheon Technologies s.r.o. and others. All rights reserved.\r
+ *\r
+ * This program and the accompanying materials are made available under the\r
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,\r
+ * and is available at http://www.eclipse.org/legal/epl-v10.html\r
+ */\r
+\r
+package org.opendaylight.openflowjava.protocol.impl.serialization.factories.multipart;\r
+\r
+import io.netty.buffer.ByteBuf;\r
+import io.netty.buffer.UnpooledByteBufAllocator;\r
+\r
+import org.junit.Assert;\r
+import org.junit.Before;\r
+import org.junit.Test;\r
+import org.opendaylight.openflowjava.protocol.api.extensibility.MessageTypeKey;\r
+import org.opendaylight.openflowjava.protocol.api.extensibility.OFSerializer;\r
+import org.opendaylight.openflowjava.protocol.api.extensibility.SerializerRegistry;\r
+import org.opendaylight.openflowjava.protocol.api.util.EncodeConstants;\r
+import org.opendaylight.openflowjava.protocol.impl.serialization.SerializerRegistryImpl;\r
+import org.opendaylight.openflowjava.protocol.impl.serialization.factories.MultipartRequestInputFactory;\r
+import org.opendaylight.openflowjava.protocol.impl.util.BufferHelper;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.MultipartRequestFlags;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.MultipartType;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.MultipartRequestInput;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.MultipartRequestInputBuilder;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.MultipartRequestGroupFeaturesCaseBuilder;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.multipart.request.group.features._case.MultipartRequestGroupFeaturesBuilder;\r
+\r
+/**\r
+ * @author michal.polkorab\r
+ *\r
+ */\r
+public class MultipartRequestGroupFeaturesTest {\r
+\r
+    private SerializerRegistry registry;\r
+    private OFSerializer<MultipartRequestInput> multipartFactory;\r
+\r
+    /**\r
+     * Initializes serializer registry and stores correct factory in field\r
+     */\r
+    @Before\r
+    public void startUp() {\r
+        registry = new SerializerRegistryImpl();\r
+        registry.init();\r
+        multipartFactory = registry.getSerializer(\r
+                new MessageTypeKey<>(EncodeConstants.OF13_VERSION_ID, MultipartRequestInput.class));\r
+    }\r
+\r
+    /**\r
+     * Tests {@link MultipartRequestInputFactory} - GroupFeatures case\r
+     * @throws Exception \r
+     */\r
+    @Test\r
+    public void test() throws Exception {\r
+        MultipartRequestInputBuilder builder = new MultipartRequestInputBuilder();\r
+        BufferHelper.setupHeader(builder, EncodeConstants.OF13_VERSION_ID);\r
+        builder.setType(MultipartType.OFPMPGROUPFEATURES);\r
+        builder.setFlags(new MultipartRequestFlags(false));\r
+        MultipartRequestGroupFeaturesCaseBuilder caseBuilder = new MultipartRequestGroupFeaturesCaseBuilder();\r
+        MultipartRequestGroupFeaturesBuilder featuresBuilder = new MultipartRequestGroupFeaturesBuilder();\r
+        featuresBuilder.setEmpty(true);\r
+        caseBuilder.setMultipartRequestGroupFeatures(featuresBuilder.build());\r
+        builder.setMultipartRequestBody(caseBuilder.build());\r
+        MultipartRequestInput message = builder.build();\r
+\r
+        ByteBuf out = UnpooledByteBufAllocator.DEFAULT.buffer();\r
+        multipartFactory.serialize(message, out);\r
+\r
+        BufferHelper.checkHeaderV13(out, (byte) 18, 16);\r
+        Assert.assertEquals("Wrong type", 8, out.readUnsignedShort());\r
+        Assert.assertEquals("Wrong flags", 0, out.readUnsignedShort());\r
+        out.skipBytes(4); // skip padding\r
+        Assert.assertTrue("Unexpected data", out.readableBytes() == 0);\r
+    }\r
+}
\ No newline at end of file