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.Test;
22 import org.junit.runner.RunWith;
23 import org.mockito.Mock;
24 import org.mockito.Mockito;
25 import org.mockito.junit.MockitoJUnitRunner;
26 import org.opendaylight.mdsal.binding.dom.codec.api.BindingNormalizedNodeSerializer;
27 import org.opendaylight.mdsal.dom.api.DOMSchemaService;
28 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
29 import org.opendaylight.yangtools.yang.common.XMLNamespace;
30 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
31 import org.opendaylight.yangtools.yang.data.util.DataSchemaContextTree;
32 import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext;
33 import org.opendaylight.yangtools.yang.model.api.Module;
34 import org.opendaylight.yangtools.yang.model.api.SchemaContext;
36 @RunWith(MockitoJUnitRunner.class)
37 public class InstanceIdentifierCodecTest {
39 private InstanceIdentifierCodec instanceIdCodec;
40 private DataSchemaContextTree dataSchemaContextTree;
43 private EffectiveModelContext context;
45 private BindingNormalizedNodeSerializer bindingNormalizedNodeSerializer;
47 private DOMSchemaService schemaService;
50 public void setUp() throws IllegalArgumentException, IllegalAccessException {
51 when(context.getQName()).thenReturn(SchemaContext.NAME);
52 dataSchemaContextTree = DataSchemaContextTree.from(context);
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);
62 public void testInstanceIdentifierCodec() throws Exception {
63 InstanceIdentifierCodec codec = new InstanceIdentifierCodec(schemaService, bindingNormalizedNodeSerializer);
64 verify(schemaService).registerSchemaContextListener(codec);
68 public void testGetDataContextTree() {
69 assertEquals("Error, did not return correct DataSchemaContextTree object", dataSchemaContextTree,
70 instanceIdCodec.getDataContextTree());
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"));
81 when(context.findModules("bar")).thenReturn(Collections.emptySet());
82 assertNull(instanceIdCodec.moduleForPrefix("bar"));
86 public void testPrefixForNamespace() {
87 Module module = mock(Module.class);
88 final String prefix = "prefix";
89 when(module.getName()).thenReturn(prefix);
91 XMLNamespace namespace = XMLNamespace.of("foo");
92 when(context.findModules(namespace)).thenReturn(Collections.emptySet());
93 assertNull(instanceIdCodec.prefixForNamespace(namespace));
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));
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));
110 public void testBindingDeserializer() throws Exception {
111 assertNull("Error, did not return correct InstanceIdentifier<?> object",
112 instanceIdCodec.bindingDeserializer(""));