5788abbc2014e8d1ef10b49ec2a4ad9cc4024521
[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
9 package org.opendaylight.ovsdb.southbound;
10
11 import static org.junit.Assert.assertEquals;
12 import static org.junit.Assert.assertNull;
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         when(context.findModules("")).thenReturn(ImmutableSet.of(module));
77         assertEquals("Found Module", module, instanceIdCodec.moduleForPrefix(""));
78
79         when(context.findModules("foo")).thenReturn(ImmutableSet.of(module, mock(Module.class)));
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() throws URISyntaxException {
88         Module module = mock(Module.class);
89         final String prefix = "prefix";
90         when(module.getName()).thenReturn(prefix);
91
92         URI namespace = new URI("foo");
93         when(context.findModules(namespace)).thenReturn(Collections.emptySet());
94         assertNull(instanceIdCodec.prefixForNamespace(namespace));
95
96         when(context.findModules(namespace)).thenReturn(ImmutableSet.of(module));
97         assertEquals("Found prefix", prefix, instanceIdCodec.prefixForNamespace(namespace));
98
99         when(context.findModules(namespace)).thenReturn(ImmutableSet.of(module, mock(Module.class)));
100         assertEquals("Found prefix", prefix, instanceIdCodec.prefixForNamespace(namespace));
101     }
102
103     @Test
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 }