Bump upstreams for 2022.09 Chlorine
[ovsdb.git] / southbound / southbound-impl / src / test / java / org / opendaylight / ovsdb / southbound / InstanceIdentifierCodecTest.java
1 /*
2  * Copyright © 2015, 2017 Inocybe Technologies 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.ovsdb.southbound;
9
10 import static org.junit.Assert.assertEquals;
11 import static org.junit.Assert.assertNull;
12 import static org.mockito.Mockito.doReturn;
13 import static org.mockito.Mockito.mock;
14 import static org.mockito.Mockito.verify;
15 import static org.mockito.Mockito.when;
16 import static org.powermock.reflect.Whitebox.getField;
17
18 import com.google.common.collect.ImmutableSet;
19 import java.util.Collections;
20 import org.junit.Before;
21 import org.junit.Ignore;
22 import org.junit.Test;
23 import org.junit.runner.RunWith;
24 import org.mockito.Mock;
25 import org.mockito.Mockito;
26 import org.mockito.junit.MockitoJUnitRunner;
27 import org.opendaylight.mdsal.binding.dom.codec.api.BindingNormalizedNodeSerializer;
28 import org.opendaylight.mdsal.dom.api.DOMSchemaService;
29 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
30 import org.opendaylight.yangtools.yang.common.XMLNamespace;
31 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
32 import org.opendaylight.yangtools.yang.data.util.DataSchemaContextTree;
33 import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext;
34 import org.opendaylight.yangtools.yang.model.api.Module;
35 import org.opendaylight.yangtools.yang.model.api.SchemaContext;
36
37 @RunWith(MockitoJUnitRunner.class)
38 public class InstanceIdentifierCodecTest {
39
40     private InstanceIdentifierCodec instanceIdCodec;
41     private DataSchemaContextTree dataSchemaContextTree;
42
43     @Mock
44     private EffectiveModelContext context;
45     @Mock
46     private BindingNormalizedNodeSerializer bindingNormalizedNodeSerializer;
47     @Mock
48     private DOMSchemaService schemaService;
49
50     @Before
51     public void setUp() throws IllegalAccessException {
52         when(context.getQName()).thenReturn(SchemaContext.NAME);
53         dataSchemaContextTree = DataSchemaContextTree.from(context);
54
55         instanceIdCodec = mock(InstanceIdentifierCodec.class, Mockito.CALLS_REAL_METHODS);
56         getField(InstanceIdentifierCodec.class, "dataSchemaContextTree").set(instanceIdCodec, dataSchemaContextTree);
57         getField(InstanceIdentifierCodec.class, "context").set(instanceIdCodec, context);
58         getField(InstanceIdentifierCodec.class, "bindingNormalizedNodeSerializer").set(instanceIdCodec,
59                 bindingNormalizedNodeSerializer);
60     }
61
62     @Test
63     public void testInstanceIdentifierCodec() throws Exception {
64         InstanceIdentifierCodec codec = new InstanceIdentifierCodec(schemaService, bindingNormalizedNodeSerializer);
65         verify(schemaService).registerSchemaContextListener(codec);
66     }
67
68     @Test
69     public void testGetDataContextTree() {
70         assertEquals("Error, did not return correct DataSchemaContextTree object", dataSchemaContextTree,
71                 instanceIdCodec.getDataContextTree());
72     }
73
74     @Test
75     public void testModuleForPrefix() {
76         Module module = mock(Module.class);
77         doReturn(ImmutableSet.of(module)).when(context).findModules("");
78         assertEquals("Found Module", module, instanceIdCodec.moduleForPrefix(""));
79         doReturn(ImmutableSet.of(module, mock(Module.class))).when(context).findModules("foo");
80         assertEquals("Found Module", module, instanceIdCodec.moduleForPrefix("foo"));
81
82         when(context.findModules("bar")).thenReturn(Collections.emptySet());
83         assertNull(instanceIdCodec.moduleForPrefix("bar"));
84     }
85
86     @Test
87     public void testPrefixForNamespace() {
88         Module module = mock(Module.class);
89         final String prefix = "prefix";
90         when(module.getName()).thenReturn(prefix);
91
92         XMLNamespace namespace = XMLNamespace.of("foo");
93         when(context.findModules(namespace)).thenReturn(Collections.emptySet());
94         assertNull(instanceIdCodec.prefixForNamespace(namespace));
95
96         doReturn(ImmutableSet.of(module)).when(context).findModules(namespace);
97         assertEquals("Found prefix", prefix, instanceIdCodec.prefixForNamespace(namespace));
98         doReturn(ImmutableSet.of(module, mock(Module.class))).when(context).findModules(namespace);
99         assertEquals("Found prefix", prefix, instanceIdCodec.prefixForNamespace(namespace));
100     }
101
102     @Test
103     @Ignore("Mocking of sealed interfaces. This needs proper test data.")
104     public void testSerialize() {
105         InstanceIdentifier<?> iid = mock(InstanceIdentifier.class);
106         YangInstanceIdentifier yiid = mock(YangInstanceIdentifier.class);
107         when(bindingNormalizedNodeSerializer.toYangInstanceIdentifier(iid)).thenReturn(yiid);
108         assertEquals("Error, did not return correct string", "", instanceIdCodec.serialize(iid));
109     }
110
111     @Test
112     public void testBindingDeserializer() throws Exception {
113         assertNull("Error, did not return correct InstanceIdentifier<?> object",
114             instanceIdCodec.bindingDeserializer(""));
115     }
116 }