2 * Copyright (c) 2016 Cisco Systems, Inc. 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.mdsal.dom.spi;
10 import static org.junit.Assert.assertEquals;
11 import static org.junit.Assert.assertFalse;
12 import static org.junit.Assert.assertNotNull;
13 import static org.junit.Assert.assertTrue;
14 import static org.mockito.Mockito.doReturn;
15 import static org.mockito.Mockito.mock;
16 import static org.mockito.Mockito.reset;
18 import com.google.common.collect.ImmutableList;
19 import com.google.common.collect.ImmutableSet;
20 import java.lang.reflect.Field;
21 import org.junit.Before;
22 import org.junit.Test;
23 import org.opendaylight.yangtools.yang.common.QName;
24 import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode;
25 import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
26 import org.opendaylight.yangtools.yang.model.api.RpcDefinition;
27 import org.opendaylight.yangtools.yang.model.api.UnknownSchemaNode;
29 public class RpcRoutingStrategyTest {
31 private static RpcRoutingStrategy rpcRoutingStrategy;
32 private static final QName Q_NAME = QName.create("testQname");
33 private static final RpcDefinition RPC_DEFINITION = mock(RpcDefinition.class);
34 private static final DataSchemaNode DATA_SCHEMA_NODE = mock(DataSchemaNode.class);
35 private static final UnknownSchemaNode UNKNOWN_SCHEMA_NODE = mock(UnknownSchemaNode.class);
38 public void setUp() throws Exception {
39 final ContainerSchemaNode containerSchemaNode = mock(ContainerSchemaNode.class);
41 doReturn(containerSchemaNode).when(RPC_DEFINITION).getInput();
42 doReturn(ImmutableSet.of(DATA_SCHEMA_NODE)).when(containerSchemaNode).getChildNodes();
43 doReturn(ImmutableList.of(UNKNOWN_SCHEMA_NODE)).when(DATA_SCHEMA_NODE).getUnknownSchemaNodes();
44 doReturn(QName.create("testNode")).when(UNKNOWN_SCHEMA_NODE).getNodeType();
45 doReturn(Q_NAME).when(RPC_DEFINITION).getQName();
47 rpcRoutingStrategy = RpcRoutingStrategy.from(RPC_DEFINITION);
48 assertNotNull(rpcRoutingStrategy);
50 assertEquals(Q_NAME, rpcRoutingStrategy.getIdentifier());
51 assertFalse(rpcRoutingStrategy.isContextBasedRouted());
55 public void routedRpcStrategyTest() throws Exception {
56 final Field contextReferenceField = RpcRoutingStrategy.class.getDeclaredField("CONTEXT_REFERENCE");
57 contextReferenceField.setAccessible(true);
59 final QName contextReference = (QName) contextReferenceField.get(rpcRoutingStrategy);
61 reset(UNKNOWN_SCHEMA_NODE);
62 doReturn(contextReference).when(UNKNOWN_SCHEMA_NODE).getNodeType();
63 doReturn(Q_NAME).when(UNKNOWN_SCHEMA_NODE).getQName();
64 doReturn(Q_NAME).when(DATA_SCHEMA_NODE).getQName();
65 rpcRoutingStrategy = RpcRoutingStrategy.from(RPC_DEFINITION);
67 assertNotNull(rpcRoutingStrategy);
69 assertTrue(rpcRoutingStrategy.isContextBasedRouted());
70 assertEquals(Q_NAME, rpcRoutingStrategy.getContext());
71 assertEquals(Q_NAME, rpcRoutingStrategy.getLeaf());
74 @Test(expected = UnsupportedOperationException.class)
75 public void getLeafTest() throws Exception {
76 rpcRoutingStrategy.getLeaf();
79 @Test(expected = UnsupportedOperationException.class)
80 public void getContextTest() throws Exception {
81 rpcRoutingStrategy.getContext();