2 * Copyright (c) 2015 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
9 package org.opendaylight.ovsdb.southbound;
11 import static org.junit.Assert.assertEquals;
12 import static org.mockito.Matchers.any;
13 import static org.mockito.Matchers.anyString;
14 import static org.mockito.Mockito.mock;
15 import static org.mockito.Mockito.verify;
16 import static org.mockito.Mockito.when;
17 import static org.powermock.api.support.membermodification.MemberMatcher.field;
20 import java.net.URISyntaxException;
21 import java.util.Date;
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.invocation.InvocationOnMock;
28 import org.mockito.stubbing.Answer;
29 import org.opendaylight.controller.sal.core.api.model.SchemaService;
30 import org.opendaylight.yangtools.binding.data.codec.api.BindingNormalizedNodeSerializer;
31 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
32 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
33 import org.opendaylight.yangtools.yang.data.util.AbstractModuleStringInstanceIdentifierCodec;
34 import org.opendaylight.yangtools.yang.data.util.DataSchemaContextTree;
35 import org.opendaylight.yangtools.yang.model.api.Module;
36 import org.opendaylight.yangtools.yang.model.api.SchemaContext;
37 import org.powermock.api.mockito.PowerMockito;
38 import org.powermock.core.classloader.annotations.PrepareForTest;
39 import org.powermock.modules.junit4.PowerMockRunner;
41 @RunWith(PowerMockRunner.class)
42 @PrepareForTest({ AbstractModuleStringInstanceIdentifierCodec.class, DataSchemaContextTree.class })
43 public class InstanceIdentifierCodecTest {
45 private InstanceIdentifierCodec instanceIdCodec;
47 private DataSchemaContextTree dataSchemaContextTree;
49 private SchemaContext context;
51 private BindingNormalizedNodeSerializer bindingNormalizedNodeSerializer;
53 private SchemaService schemaService;
56 public void setUp() throws IllegalArgumentException, IllegalAccessException {
57 instanceIdCodec = mock(InstanceIdentifierCodec.class, Mockito.CALLS_REAL_METHODS);
58 field(InstanceIdentifierCodec.class, "dataSchemaContextTree").set(instanceIdCodec, dataSchemaContextTree);
59 field(InstanceIdentifierCodec.class, "context").set(instanceIdCodec, context);
60 field(InstanceIdentifierCodec.class, "bindingNormalizedNodeSerializer").set(instanceIdCodec,
61 bindingNormalizedNodeSerializer);
65 public void testInstanceIdentifierCodec() throws Exception {
66 InstanceIdentifierCodec codec = new InstanceIdentifierCodec(schemaService, bindingNormalizedNodeSerializer);
67 verify(schemaService).registerSchemaContextListener(codec);
71 public void testGetDataContextTree() {
72 assertEquals("Error, did not return correct DataSchemaContextTree object", dataSchemaContextTree,
73 instanceIdCodec.getDataContextTree());
77 public void testModuleForPrefix() {
78 Module module = mock(Module.class);
79 when(context.findModuleByName(anyString(), any(Date.class))).thenReturn(module);
80 assertEquals("Error, did not return correct Module object", module, instanceIdCodec.moduleForPrefix(""));
84 public void testPrefixForNamespace() throws URISyntaxException {
85 Module module = mock(Module.class);
86 URI namespace = new URI("");
87 when(context.findModuleByNamespaceAndRevision(any(URI.class), any(Date.class))).thenReturn(null)
89 when(module.getName()).thenReturn("");
90 assertEquals("Error, null should have been returned", null, instanceIdCodec.prefixForNamespace(namespace));
91 assertEquals("Error, did not return the correct module name", anyString(),
92 instanceIdCodec.prefixForNamespace(namespace));
96 public void testOnGlobalContextUpdated() {
97 PowerMockito.mockStatic(DataSchemaContextTree.class);
98 when(DataSchemaContextTree.from(any(SchemaContext.class))).thenReturn(dataSchemaContextTree);
99 instanceIdCodec.onGlobalContextUpdated(context);
100 verify(instanceIdCodec).onGlobalContextUpdated(context);
104 public void testSerialize() {
105 InstanceIdentifier<?> iid = mock(InstanceIdentifier.class);
106 YangInstanceIdentifier yiid = mock(YangInstanceIdentifier.class);
107 when(bindingNormalizedNodeSerializer.toYangInstanceIdentifier(iid)).thenReturn(yiid);
109 when((PowerMockito.mock(AbstractModuleStringInstanceIdentifierCodec.class)).serialize(yiid))
110 .thenReturn("Serialized IID");
111 assertEquals("Error, did not return correct string", anyString(), instanceIdCodec.serialize(iid));
115 public void testBindingDeserializer() throws Exception {
116 YangInstanceIdentifier yiid = mock(YangInstanceIdentifier.class);
117 when((PowerMockito.mock(AbstractModuleStringInstanceIdentifierCodec.class)).deserialize(anyString()))
120 mock(InstanceIdentifier.class);
121 when(bindingNormalizedNodeSerializer.fromYangInstanceIdentifier(yiid))
122 .thenAnswer(new Answer<InstanceIdentifier<?>>() {
123 public InstanceIdentifier<?> answer(InvocationOnMock invocation) throws Throwable {
124 return (InstanceIdentifier<?>) invocation.getArguments()[0];
128 assertEquals("Error, did not return correct InstanceIdentifier<?> object", any(InstanceIdentifier.class),
129 instanceIdCodec.bindingDeserializer(""));