--- /dev/null
+/**
+ * Copyright (c) 2016 Cisco Systems, Inc. and others. All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+
+package org.opendaylight.openflowjava.nx.api.impl;
+
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
+import java.util.LinkedList;
+import java.util.List;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Matchers;
+import org.mockito.Mock;
+import org.mockito.Mockito;
+import org.mockito.runners.MockitoJUnitRunner;
+import org.opendaylight.openflowjava.nx.api.NiciraActionDeserializerKey;
+import org.opendaylight.openflowjava.nx.api.NiciraActionSerializerKey;
+import org.opendaylight.openflowjava.nx.api.NiciraUtil;
+import org.opendaylight.openflowjava.protocol.api.extensibility.OFDeserializer;
+import org.opendaylight.openflowjava.protocol.api.extensibility.OFGeneralSerializer;
+import org.opendaylight.openflowjava.protocol.api.extensibility.OFSerializer;
+import org.opendaylight.openflowjava.protocol.api.keys.ActionSerializerKey;
+import org.opendaylight.openflowjava.protocol.api.keys.MatchEntryDeserializerKey;
+import org.opendaylight.openflowjava.protocol.api.keys.MatchEntrySerializerKey;
+import org.opendaylight.openflowjava.protocol.api.util.EncodeConstants;
+import org.opendaylight.openflowjava.protocol.spi.connection.SwitchConnectionProvider;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping.action.choice.PopVlanCase;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.actions.grouping.Action;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.MatchField;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.Nxm0Class;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entries.grouping.MatchEntry;
+
+@RunWith(MockitoJUnitRunner.class)
+public class NiciraExtensionCodecRegistratorImplTest {
+
+
+ NiciraExtensionCodecRegistratorImpl niciraExtensionCodecRegistrator;
+ List<SwitchConnectionProvider> providers = new LinkedList<>();
+ NiciraActionSerializerKey actionSerializerKey;
+ NiciraActionDeserializerKey actionDeserializerKey;
+ MatchEntrySerializerKey matchSerializerKey;
+ MatchEntryDeserializerKey matchDeserializerKey;
+
+ @Mock
+ OFSerializer<Action> actionSerializer;
+ @Mock
+ OFDeserializer<Action> actionDeserializer;
+ @Mock
+ OFSerializer<MatchEntry> matchSerializer;
+ @Mock
+ OFDeserializer<MatchEntry> matchDeserializer;
+
+
+ public static final short VERSION = 4;
+ public static final byte VERSION1 = EncodeConstants.OF10_VERSION_ID;
+ public static final byte VERSION2 = EncodeConstants.OF13_VERSION_ID;
+
+
+
+ @Mock
+ SwitchConnectionProvider provider;
+
+ @Before
+ public void setUp() {
+ providers.add(provider);
+ actionSerializerKey = new NiciraActionSerializerKey(VERSION, PopVlanCase.class);
+ //subtype = 10
+ actionDeserializerKey = new NiciraActionDeserializerKey(VERSION, 10);
+ matchSerializerKey = new MatchEntrySerializerKey(VERSION, Nxm0Class.class, MatchField.class);
+ //OxmClass 1, OxmField 2
+ matchDeserializerKey = new MatchEntryDeserializerKey(VERSION, 1, 2);
+
+ niciraExtensionCodecRegistrator = new NiciraExtensionCodecRegistratorImpl(providers);
+ }
+
+ @Test
+ public void niciraExtensionsCodecRegistratorImplTest() {
+ Mockito.verify(provider).registerActionDeserializer(Matchers.eq(ActionDeserializer.OF10_DESERIALIZER_KEY), Matchers.any(ActionDeserializer.class));
+ Mockito.verify(provider).registerActionDeserializer(Matchers.eq(ActionDeserializer.OF13_DESERIALIZER_KEY), Matchers.any(ActionDeserializer.class));
+ }
+
+ @Test
+ public void registerActionSerializerTest() {
+ niciraExtensionCodecRegistrator.registerActionSerializer(actionSerializerKey, actionSerializer);
+ ActionSerializerKey key1 = NiciraUtil.createOfJavaKeyFrom(actionSerializerKey);
+ Mockito.verify(provider).registerActionSerializer(Matchers.eq(key1), Matchers.any(OFGeneralSerializer.class));
+ }
+
+ @Test
+ public void unregisterActionSerializerTest() {
+ niciraExtensionCodecRegistrator.registerActionSerializer(actionSerializerKey, actionSerializer);
+ ActionSerializerKey key1 = NiciraUtil.createOfJavaKeyFrom(actionSerializerKey);
+ niciraExtensionCodecRegistrator.unregisterActionSerializer(actionSerializerKey);
+ Mockito.verify(provider).unregisterSerializer(Matchers.eq(key1));
+ }
+
+ @Test
+ public void registerActionDeserializerTest() {
+ assertTrue(niciraExtensionCodecRegistrator.isEmptyActionDeserializers());
+ niciraExtensionCodecRegistrator.registerActionDeserializer(actionDeserializerKey, actionDeserializer);
+ assertFalse(niciraExtensionCodecRegistrator.isEmptyActionDeserializers());
+ }
+
+ @Test
+ public void unregisterActionDeserializerTest() {
+ niciraExtensionCodecRegistrator.registerActionDeserializer(actionDeserializerKey, actionDeserializer);
+ assertFalse(niciraExtensionCodecRegistrator.isEmptyActionDeserializers());
+ niciraExtensionCodecRegistrator.unregisterActionDeserializer(actionDeserializerKey);
+ assertTrue(niciraExtensionCodecRegistrator.isEmptyActionDeserializers());
+ }
+
+ @Test
+ public void registerMatchEntrySerializerTest() {
+ niciraExtensionCodecRegistrator.registerMatchEntrySerializer(matchSerializerKey, matchSerializer);
+ Mockito.verify(provider).registerMatchEntrySerializer(matchSerializerKey, matchSerializer);
+ }
+
+ @Test
+ public void unregisterMatchEntrySerializerTest() {
+ niciraExtensionCodecRegistrator.unregisterMatchEntrySerializer(matchSerializerKey);
+ Mockito.verify(provider).unregisterSerializer(matchSerializerKey);
+ }
+
+ @Test
+ public void registerMatchEntryDeserializerTest() {
+ niciraExtensionCodecRegistrator.registerMatchEntryDeserializer(matchDeserializerKey, matchDeserializer);
+ Mockito.verify(provider).registerMatchEntryDeserializer(matchDeserializerKey, matchDeserializer);
+ }
+
+ @Test
+ public void unregisterMatchEntryDeserializerTest() {
+ niciraExtensionCodecRegistrator.unregisterMatchEntryDeserializer(matchDeserializerKey);
+ Mockito.verify(provider).unregisterDeserializer(matchDeserializerKey);
+ }
+
+
+}
\ No newline at end of file