2 * Copyright © 2015, 2017 Inocybe Technologies and others. All rights reserved.
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
8 package org.opendaylight.ovsdb.southbound;
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;
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;
37 @RunWith(MockitoJUnitRunner.class)
38 public class InstanceIdentifierCodecTest {
40 private InstanceIdentifierCodec instanceIdCodec;
41 private DataSchemaContextTree dataSchemaContextTree;
44 private EffectiveModelContext context;
46 private BindingNormalizedNodeSerializer bindingNormalizedNodeSerializer;
48 private DOMSchemaService schemaService;
51 public void setUp() throws IllegalAccessException {
52 when(context.getQName()).thenReturn(SchemaContext.NAME);
53 dataSchemaContextTree = DataSchemaContextTree.from(context);
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);
63 public void testInstanceIdentifierCodec() throws Exception {
64 InstanceIdentifierCodec codec = new InstanceIdentifierCodec(schemaService, bindingNormalizedNodeSerializer);
65 verify(schemaService).registerSchemaContextListener(codec);
69 public void testGetDataContextTree() {
70 assertEquals("Error, did not return correct DataSchemaContextTree object", dataSchemaContextTree,
71 instanceIdCodec.getDataContextTree());
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"));
82 when(context.findModules("bar")).thenReturn(Collections.emptySet());
83 assertNull(instanceIdCodec.moduleForPrefix("bar"));
87 public void testPrefixForNamespace() {
88 Module module = mock(Module.class);
89 final String prefix = "prefix";
90 when(module.getName()).thenReturn(prefix);
92 XMLNamespace namespace = XMLNamespace.of("foo");
93 when(context.findModules(namespace)).thenReturn(Collections.emptySet());
94 assertNull(instanceIdCodec.prefixForNamespace(namespace));
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));
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));
112 public void testBindingDeserializer() throws Exception {
113 assertNull("Error, did not return correct InstanceIdentifier<?> object",
114 instanceIdCodec.bindingDeserializer(""));