01922e40c0ffadddecc81cdeb110daff1c3bb0a3
[openflowplugin.git] / openflowplugin / src / test / java / org / opendaylight / openflowplugin / openflow / md / core / extension / ExtensionConverterManagerImplTest.java
1 /**
2  * Copyright (c) 2014 Cisco Systems, Inc. and others.  All rights reserved.
3  *
4  * This program and the accompanying materials are made available under the
5  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6  * and is available at http://www.eclipse.org/legal/epl-v10.html
7  */
8 package org.opendaylight.openflowplugin.openflow.md.core.extension;
9
10 import org.junit.After;
11 import org.junit.Assert;
12 import org.junit.Before;
13 import org.junit.Test;
14 import org.junit.runner.RunWith;
15 import org.mockito.Mock;
16 import org.mockito.runners.MockitoJUnitRunner;
17 import org.opendaylight.openflowjava.protocol.api.keys.ExperimenterActionSerializerKey;
18 import org.opendaylight.openflowjava.protocol.api.keys.MessageTypeKey;
19 import org.opendaylight.openflowplugin.extension.api.ConverterExtensionKey;
20 import org.opendaylight.openflowplugin.extension.api.ConvertorActionFromOFJava;
21 import org.opendaylight.openflowplugin.extension.api.ConvertorActionToOFJava;
22 import org.opendaylight.openflowplugin.extension.api.ConvertorFromOFJava;
23 import org.opendaylight.openflowplugin.extension.api.TypeVersionKey;
24 import org.opendaylight.openflowplugin.extension.api.path.ActionPath;
25 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.Action;
26 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.ExperimenterActionSubType;
27
28 /**
29  * {@link ExtensionConverterManagerImpl} test.
30  */
31 @RunWith(MockitoJUnitRunner.class)
32 public class ExtensionConverterManagerImplTest {
33
34     private ExtensionConverterManagerImpl manager;
35     @Mock
36     private ConvertorActionToOFJava<Action, org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action
37         .rev150203.actions.grouping.Action> extConvertorToOFJava;
38     private TypeVersionKey<? extends Action> keyToOFJava;
39     @Mock
40     private ConvertorActionFromOFJava<org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203
41         .actions.grouping.Action, ActionPath> extConvertorFromOFJava;
42     private ExperimenterActionSerializerKey keyFromOFJava;
43     private AutoCloseable regFromOFJava;
44     private AutoCloseable regToOFJava;
45
46     /**
47      * prepare required stuff.
48      */
49     @Before
50     public void setUp() {
51         manager = new ExtensionConverterManagerImpl();
52         keyFromOFJava = new ExperimenterActionSerializerKey((short) 1, 42L, ExpSubType.class);
53         regFromOFJava = manager.registerActionConvertor(keyFromOFJava, extConvertorFromOFJava);
54
55         keyToOFJava = new TypeVersionKey<>(ActionExpCase.class, (short) 1);
56         regToOFJava = manager.registerActionConvertor(keyToOFJava, extConvertorToOFJava);
57     }
58
59     /**
60      * tear down test case - close registrations.
61      */
62     @After
63     public void tearDown() throws Exception {
64         regToOFJava.close();
65         regToOFJava.close();
66     }
67
68     /**
69      * Test method for ExtensionConverterManagerImpl#unregister(ConverterExtensionKey, ConvertorToOFJava)}.
70      */
71     @Test
72     public void testUnregisterConverterExtensionKeyOfQConvertorToOFJavaOfQQ() throws Exception {
73         regToOFJava.close();
74         Assert.assertNull(manager.getConverter(keyToOFJava));
75     }
76
77     /**
78      * Test method for {@link ExtensionConverterManagerImpl#unregister(MessageTypeKey, ConvertorFromOFJava)}.
79      */
80     @Test
81     public void testUnregisterMessageTypeKeyOfQConvertorFromOFJavaOfQQ() throws Exception {
82         regFromOFJava.close();
83         Assert.assertNull(manager.getConverter(keyFromOFJava));
84     }
85
86     /**
87      * Test method for {@link ExtensionConverterManagerImpl#getConverter(ConverterExtensionKey)}.
88      */
89     @Test
90     public void testGetConverterConverterExtensionKeyOfQ() {
91         Assert.assertEquals(extConvertorToOFJava, manager.getConverter(keyToOFJava));
92     }
93
94     /**
95      * Test method for {@link ExtensionConverterManagerImpl#getConverter(MessageTypeKey)}.
96      */
97     @Test
98     public void testGetConverterMessageTypeKeyOfQ() {
99         Assert.assertEquals(extConvertorFromOFJava, manager.getActionConverter(keyFromOFJava));
100     }
101
102     private static class ExpSubType extends ExperimenterActionSubType {
103         // NOOP
104     }
105
106     private interface ActionExpCase extends Action {
107         // NOOP
108     }
109
110 }