--- /dev/null
+/**
+ * Copyright (c) 2014 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.openflowplugin.openflow.md.core.extension;
+
+import org.junit.After;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.runners.MockitoJUnitRunner;
+import org.opendaylight.openflowjava.protocol.api.keys.experimenter.ExperimenterActionSerializerKey;
+import org.opendaylight.openflowplugin.extension.api.ConvertorActionFromOFJava;
+import org.opendaylight.openflowplugin.extension.api.ConvertorActionToOFJava;
+import org.opendaylight.openflowplugin.extension.api.TypeVersionKey;
+import org.opendaylight.openflowplugin.extension.api.path.ActionPath;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.Action;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.ExperimenterActionSubType;
+
+/**
+ * {@link ExtensionConverterManagerImpl} test
+ */
+@RunWith(MockitoJUnitRunner.class)
+public class ExtensionConverterManagerImplTest {
+
+ private ExtensionConverterManagerImpl manager;
+ @Mock
+ private ConvertorActionToOFJava<Action, org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.actions.grouping.Action> extConvertorToOFJava;
+ private TypeVersionKey<? extends Action> keyToOFJava;
+ @Mock
+ private ConvertorActionFromOFJava<org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.actions.grouping.Action, ActionPath> extConvertorFromOFJava;
+ private ExperimenterActionSerializerKey keyFromOFJava;
+ private AutoCloseable regFromOFJava;
+ private AutoCloseable regToOFJava;
+
+ /**
+ * prepare required stuff
+ */
+ @Before
+ public void setUp() {
+ manager = new ExtensionConverterManagerImpl();
+ keyFromOFJava = new ExperimenterActionSerializerKey((short) 1, 42L, ExpSubType.class);
+ regFromOFJava = manager.registerActionConvertor(keyFromOFJava, extConvertorFromOFJava);
+
+ keyToOFJava = new TypeVersionKey<>(ActionExpCase.class, (short) 1);
+ regToOFJava = manager.registerActionConvertor(keyToOFJava, extConvertorToOFJava);
+ }
+
+ /**
+ * tear down test case - close registrations
+ * @throws Exception
+ */
+ @After
+ public void tearDown() throws Exception {
+ regToOFJava.close();
+ regToOFJava.close();
+ }
+
+ /**
+ * Test method for {@link org.opendaylight.openflowplugin.openflow.md.core.extension.ExtensionConverterManagerImpl#unregister(org.opendaylight.openflowplugin.extension.api.ConverterExtensionKey, org.opendaylight.openflowplugin.extension.api.ConvertorToOFJava)}.
+ * @throws Exception
+ */
+ @Test
+ public void testUnregisterConverterExtensionKeyOfQConvertorToOFJavaOfQQ() throws Exception {
+ regToOFJava.close();
+ Assert.assertNull(manager.getConverter(keyToOFJava));
+ }
+
+ /**
+ * Test method for {@link org.opendaylight.openflowplugin.openflow.md.core.extension.ExtensionConverterManagerImpl#unregister(org.opendaylight.openflowjava.protocol.api.extensibility.MessageTypeKey, org.opendaylight.openflowplugin.extension.api.ConvertorFromOFJava)}.
+ * @throws Exception
+ */
+ @Test
+ public void testUnregisterMessageTypeKeyOfQConvertorFromOFJavaOfQQ() throws Exception {
+ regFromOFJava.close();
+ Assert.assertNull(manager.getConverter(keyFromOFJava));
+ }
+
+ /**
+ * Test method for {@link org.opendaylight.openflowplugin.openflow.md.core.extension.ExtensionConverterManagerImpl#getConverter(org.opendaylight.openflowplugin.extension.api.ConverterExtensionKey)}.
+ */
+ @Test
+ public void testGetConverterConverterExtensionKeyOfQ() {
+ Assert.assertEquals(extConvertorToOFJava, manager.getConverter(keyToOFJava));
+ }
+
+ /**
+ * Test method for {@link org.opendaylight.openflowplugin.openflow.md.core.extension.ExtensionConverterManagerImpl#getConverter(org.opendaylight.openflowjava.protocol.api.extensibility.MessageTypeKey)}.
+ */
+ @Test
+ public void testGetConverterMessageTypeKeyOfQ() {
+ Assert.assertEquals(extConvertorFromOFJava, manager.getActionConverter(keyFromOFJava));
+ }
+
+ private static class ExpSubType extends ExperimenterActionSubType {
+ // NOOP
+ }
+
+ private static interface ActionExpCase extends Action {
+ // NOOP
+ }
+
+}