Update MRI projects for Aluminium
[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.net.URI;
20 import java.net.URISyntaxException;
21 import java.util.Collections;
22 import org.junit.Before;
23 import org.junit.Test;
24 import org.junit.runner.RunWith;
25 import org.mockito.Mock;
26 import org.mockito.Mockito;
27 import org.mockito.junit.MockitoJUnitRunner;
28 import org.opendaylight.mdsal.binding.dom.codec.api.BindingNormalizedNodeSerializer;
29 import org.opendaylight.mdsal.dom.api.DOMSchemaService;
30 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
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.Module;
34 import org.opendaylight.yangtools.yang.model.api.SchemaContext;
35
36 @RunWith(MockitoJUnitRunner.class)
37 public class InstanceIdentifierCodecTest {
38
39     private InstanceIdentifierCodec instanceIdCodec;
40     private DataSchemaContextTree dataSchemaContextTree;
41
42     @Mock
43     private SchemaContext context;
44     @Mock
45     private BindingNormalizedNodeSerializer bindingNormalizedNodeSerializer;
46     @Mock
47     private DOMSchemaService schemaService;
48
49     @Before
50     public void setUp() throws IllegalArgumentException, IllegalAccessException {
51         when(context.getQName()).thenReturn(SchemaContext.NAME);
52         dataSchemaContextTree = DataSchemaContextTree.from(context);
53
54         instanceIdCodec = mock(InstanceIdentifierCodec.class, Mockito.CALLS_REAL_METHODS);
55         getField(InstanceIdentifierCodec.class, "dataSchemaContextTree").set(instanceIdCodec, dataSchemaContextTree);
56         getField(InstanceIdentifierCodec.class, "context").set(instanceIdCodec, context);
57         getField(InstanceIdentifierCodec.class, "bindingNormalizedNodeSerializer").set(instanceIdCodec,
58                 bindingNormalizedNodeSerializer);
59     }
60
61     @Test
62     public void testInstanceIdentifierCodec() throws Exception {
63         InstanceIdentifierCodec codec = new InstanceIdentifierCodec(schemaService, bindingNormalizedNodeSerializer);
64         verify(schemaService).registerSchemaContextListener(codec);
65     }
66
67     @Test
68     public void testGetDataContextTree() {
69         assertEquals("Error, did not return correct DataSchemaContextTree object", dataSchemaContextTree,
70                 instanceIdCodec.getDataContextTree());
71     }
72
73     @Test
74     public void testModuleForPrefix() {
75         Module module = mock(Module.class);
76         doReturn(ImmutableSet.of(module)).when(context).findModules("");
77         assertEquals("Found Module", module, instanceIdCodec.moduleForPrefix(""));
78         doReturn(ImmutableSet.of(module, mock(Module.class))).when(context).findModules("foo");
79         assertEquals("Found Module", module, instanceIdCodec.moduleForPrefix("foo"));
80
81         when(context.findModules("bar")).thenReturn(Collections.emptySet());
82         assertNull(instanceIdCodec.moduleForPrefix("bar"));
83     }
84
85     @Test
86     public void testPrefixForNamespace() throws URISyntaxException {
87         Module module = mock(Module.class);
88         final String prefix = "prefix";
89         when(module.getName()).thenReturn(prefix);
90
91         URI namespace = new URI("foo");
92         when(context.findModules(namespace)).thenReturn(Collections.emptySet());
93         assertNull(instanceIdCodec.prefixForNamespace(namespace));
94
95         doReturn(ImmutableSet.of(module)).when(context).findModules(namespace);
96         assertEquals("Found prefix", prefix, instanceIdCodec.prefixForNamespace(namespace));
97         doReturn(ImmutableSet.of(module, mock(Module.class))).when(context).findModules(namespace);
98         assertEquals("Found prefix", prefix, instanceIdCodec.prefixForNamespace(namespace));
99     }
100
101     @Test
102     public void testSerialize() {
103         InstanceIdentifier<?> iid = mock(InstanceIdentifier.class);
104         YangInstanceIdentifier yiid = mock(YangInstanceIdentifier.class);
105         when(bindingNormalizedNodeSerializer.toYangInstanceIdentifier(iid)).thenReturn(yiid);
106         assertEquals("Error, did not return correct string", "", instanceIdCodec.serialize(iid));
107     }
108
109     @Test
110     public void testBindingDeserializer() throws Exception {
111         assertNull("Error, did not return correct InstanceIdentifier<?> object",
112             instanceIdCodec.bindingDeserializer(""));
113     }
114 }