Added unit tests
[openflowjava.git] / openflow-protocol-impl / src / test / java / org / opendaylight / openflowjava / protocol / impl / core / OFDatagramPacketEncoderTest.java
diff --git a/openflow-protocol-impl/src/test/java/org/opendaylight/openflowjava/protocol/impl/core/OFDatagramPacketEncoderTest.java b/openflow-protocol-impl/src/test/java/org/opendaylight/openflowjava/protocol/impl/core/OFDatagramPacketEncoderTest.java
new file mode 100644 (file)
index 0000000..ac06368
--- /dev/null
@@ -0,0 +1,88 @@
+/*\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.core;\r
+\r
+import static org.mockito.Mockito.times;\r
+import static org.mockito.Mockito.verify;\r
+import io.netty.channel.ChannelHandlerContext;\r
+import io.netty.util.concurrent.Future;\r
+import io.netty.util.concurrent.GenericFutureListener;\r
+\r
+import java.net.InetSocketAddress;\r
+import java.util.ArrayList;\r
+import java.util.List;\r
+\r
+import org.junit.Assert;\r
+import org.junit.Test;\r
+import org.mockito.Mock;\r
+import org.mockito.MockitoAnnotations;\r
+import org.opendaylight.openflowjava.protocol.api.util.EncodeConstants;\r
+import org.opendaylight.openflowjava.protocol.impl.connection.UdpMessageListenerWrapper;\r
+import org.opendaylight.openflowjava.protocol.impl.serialization.SerializationFactory;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.HelloInput;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.HelloInputBuilder;\r
+\r
+/**\r
+ * @author michal.polkorab\r
+ *\r
+ */\r
+public class OFDatagramPacketEncoderTest {\r
+\r
+    @Mock ChannelHandlerContext ctx;\r
+    @Mock GenericFutureListener<Future<Void>> listener;\r
+    @Mock SerializationFactory factory;\r
+\r
+    private UdpMessageListenerWrapper wrapper;\r
+    private InetSocketAddress address = new InetSocketAddress("10.0.0.1", 6653);\r
+    private List<Object> out;\r
+\r
+    /**\r
+     * Initializes mocks and other objects\r
+     * @param version openflow protocol wire version\r
+     */\r
+    public void startUp(Short version) {\r
+        MockitoAnnotations.initMocks(this);\r
+        out = new ArrayList<>();\r
+        HelloInputBuilder builder = new HelloInputBuilder();\r
+        builder.setVersion(version);\r
+        HelloInput hello = builder.build();\r
+        wrapper = new UdpMessageListenerWrapper(hello, listener, address);\r
+    }\r
+\r
+    /**\r
+     * Tests encoding\r
+     */\r
+    @Test\r
+    public void testCorrectEncode() {\r
+        startUp((short) EncodeConstants.OF13_VERSION_ID);\r
+        OFDatagramPacketEncoder encoder = new OFDatagramPacketEncoder();\r
+        encoder.setSerializationFactory(factory);\r
+        try {\r
+            encoder.encode(ctx, wrapper, out);\r
+        } catch (Exception e) {\r
+            Assert.fail();\r
+        }\r
+    }\r
+\r
+    /**\r
+     * Tests encoding\r
+     */\r
+    @Test\r
+    public void testIncorrectEncode() {\r
+        startUp(null);\r
+        OFDatagramPacketEncoder encoder = new OFDatagramPacketEncoder();\r
+        encoder.setSerializationFactory(factory);\r
+        try {\r
+            encoder.encode(ctx, wrapper, out);\r
+        } catch (Exception e) {\r
+            verify(wrapper, times(1)).getListener();\r
+            Assert.assertEquals("List should be empty", 0, out.size());\r
+        }\r
+    }\r
+}
\ No newline at end of file