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.shard;
10 import static org.mockito.Mockito.doNothing;
11 import static org.mockito.Mockito.doReturn;
12 import static org.mockito.Mockito.verify;
14 import com.google.common.base.Optional;
15 import java.util.Collection;
16 import java.util.HashMap;
17 import java.util.HashSet;
19 import org.junit.After;
20 import org.junit.Assert;
21 import org.junit.Before;
22 import org.junit.Test;
23 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgument;
24 import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
25 import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNodeContainer;
27 public class WritableNodeOperationTest extends WritableNodeOperation {
30 public void enterTest() throws Exception {
31 Assert.assertEquals(TestUtils.DOM_DATA_TREE_WRITE_CURSOR, this.getCursor());
34 Assert.assertEquals(TestUtils.DOM_DATA_TREE_WRITE_CURSOR.toString(),
35 this.enter(TestUtils.PATH_ARGUMENT).toString());
36 verify(TestUtils.DOM_DATA_TREE_WRITE_CURSOR).enter(TestUtils.PATH_ARGUMENT);
37 verify(TestUtils.WRITEABLE_MODIFICATION_NODE).getChild(TestUtils.PATH_ARGUMENT);
40 this.enter(TestUtils.PATH_ARGUMENT);
41 verify(TestUtils.WRITEABLE_MODIFICATION_NODE).createOperation(TestUtils.DOM_DATA_TREE_WRITE_CURSOR);
45 public void writeTest() throws Exception {
47 this.write(TestUtils.PATH_ARGUMENT, TestUtils.NORMALIZED_NODE);
48 verify(TestUtils.DOM_DATA_TREE_WRITE_CURSOR).write(TestUtils.PATH_ARGUMENT, TestUtils.NORMALIZED_NODE);
50 returnNoNull(TestUtils.NORMALIZED_NODE_CONTAINER);
51 this.write(TestUtils.PATH_ARGUMENT, TestUtils.NORMALIZED_NODE_CONTAINER);
52 verify(TestUtils.WRITE_CURSOR_STRATEGY).writeToCurrent(TestUtils.NORMALIZED_NODE_CONTAINER);
56 public void writeToCurrentTest() throws Exception {
58 Map<PathArgument, WriteableModificationNode> childrenWithSubShards = new HashMap<>();
59 childrenWithSubShards.put(TestUtils.PATH_ARGUMENT, TestUtils.WRITEABLE_MODIFICATION_NODE);
60 doReturn(childrenWithSubShards).when(TestUtils.WRITEABLE_MODIFICATION_NODE).getChildrenWithSubshards();
61 doReturn(Optional.of(TestUtils.NORMALIZED_NODE))
62 .when(TestUtils.NORMALIZED_NODE_CONTAINER).getChild(TestUtils.PATH_ARGUMENT);
63 this.writeToCurrent(TestUtils.NORMALIZED_NODE_CONTAINER);
64 verify(TestUtils.DOM_DATA_TREE_WRITE_CURSOR).delete(TestUtils.PATH_ARGUMENT);
65 verify(TestUtils.DOM_DATA_TREE_WRITE_CURSOR).exit();
69 public void mergeTest() throws Exception {
71 this.merge(TestUtils.PATH_ARGUMENT, TestUtils.NORMALIZED_NODE_CONTAINER);
72 verify(TestUtils.DOM_DATA_TREE_WRITE_CURSOR)
73 .merge(TestUtils.PATH_ARGUMENT, TestUtils.NORMALIZED_NODE_CONTAINER);
75 returnNoNull(TestUtils.NORMALIZED_NODE_CONTAINER);
76 this.merge(TestUtils.PATH_ARGUMENT, TestUtils.NORMALIZED_NODE_CONTAINER);
77 verify(TestUtils.WRITE_CURSOR_STRATEGY).mergeToCurrent(TestUtils.NORMALIZED_NODE_CONTAINER);
81 public void deleteTest() throws Exception {
83 this.delete(TestUtils.PATH_ARGUMENT);
84 verify(TestUtils.DOM_DATA_TREE_WRITE_CURSOR).delete(TestUtils.PATH_ARGUMENT);
85 verify(TestUtils.WRITEABLE_MODIFICATION_NODE).markDeleted();
88 @Test(expected = UnsupportedOperationException.class)
89 public void mergeToCurrentTestWithException() throws Exception {
91 this.mergeToCurrent(TestUtils.NORMALIZED_NODE_CONTAINER);
95 public void mergeToCurrentTest() throws Exception {
97 this.mergeToCurrent(TestUtils.NORMALIZED_NODE_CONTAINER);
98 verify(TestUtils.DOM_DATA_TREE_WRITE_CURSOR).merge(TestUtils.PATH_ARGUMENT, TestUtils.NORMALIZED_NODE);
101 private static void returnNull() {
102 doReturn(null).when(TestUtils.WRITEABLE_MODIFICATION_NODE).getChild(TestUtils.PATH_ARGUMENT);
103 doReturn(null).when(TestUtils.WRITEABLE_MODIFICATION_NODE)
104 .createOperation(TestUtils.DOM_DATA_TREE_WRITE_CURSOR);
107 private static void returnNoNull() {
111 private static void returnNoNull(final NormalizedNodeContainer<?, ?, ?> normalizedNode) {
112 if (normalizedNode != null) {
113 doNothing().when(TestUtils.WRITE_CURSOR_STRATEGY).writeToCurrent(normalizedNode);
114 doNothing().when(TestUtils.WRITE_CURSOR_STRATEGY).mergeToCurrent(normalizedNode);
115 doReturn(TestUtils.WRITE_CURSOR_STRATEGY)
116 .when(TestUtils.WRITEABLE_MODIFICATION_NODE).createOperation(TestUtils.DOM_DATA_TREE_WRITE_CURSOR);
119 doReturn(TestUtils.WRITEABLE_MODIFICATION_NODE)
120 .when(TestUtils.WRITEABLE_MODIFICATION_NODE).getChild(TestUtils.PATH_ARGUMENT);
121 doNothing().when(TestUtils.WRITEABLE_MODIFICATION_NODE).markDeleted();
125 public void setUp() {
126 final Collection<NormalizedNode<?, ?>> collectionNodes = new HashSet<>();
127 doReturn("testArgument").when(TestUtils.PATH_ARGUMENT).toString();
128 doReturn("testCursor").when(TestUtils.DOM_DATA_TREE_WRITE_CURSOR).toString();
129 doReturn("testNode").when(TestUtils.NORMALIZED_NODE).toString();
130 doReturn("testNodeContainer").when(TestUtils.NORMALIZED_NODE_CONTAINER).toString();
131 doNothing().when(TestUtils.DOM_DATA_TREE_WRITE_CURSOR).enter(TestUtils.PATH_ARGUMENT);
132 doNothing().when(TestUtils.DOM_DATA_TREE_WRITE_CURSOR)
133 .write(TestUtils.PATH_ARGUMENT, TestUtils.NORMALIZED_NODE);
134 doNothing().when(TestUtils.DOM_DATA_TREE_WRITE_CURSOR)
135 .write(TestUtils.PATH_ARGUMENT, TestUtils.NORMALIZED_NODE_CONTAINER);
136 doNothing().when(TestUtils.DOM_DATA_TREE_WRITE_CURSOR)
137 .merge(TestUtils.PATH_ARGUMENT, TestUtils.NORMALIZED_NODE);
138 doNothing().when(TestUtils.DOM_DATA_TREE_WRITE_CURSOR)
139 .merge(TestUtils.PATH_ARGUMENT, TestUtils.NORMALIZED_NODE_CONTAINER);
140 doNothing().when(TestUtils.DOM_DATA_TREE_WRITE_CURSOR).delete(TestUtils.PATH_ARGUMENT);
141 doNothing().when(TestUtils.DOM_DATA_TREE_WRITE_CURSOR).exit();
143 collectionNodes.add(TestUtils.NORMALIZED_NODE);
144 doReturn(collectionNodes).when(TestUtils.NORMALIZED_NODE_CONTAINER).getValue();
145 doReturn(TestUtils.PATH_ARGUMENT).when(TestUtils.NORMALIZED_NODE_CONTAINER).getIdentifier();
146 doReturn(TestUtils.PATH_ARGUMENT).when(TestUtils.NORMALIZED_NODE).getIdentifier();
150 public void reset() {
151 TestUtils.resetMocks();
154 public WritableNodeOperationTest() {
155 super(TestUtils.WRITEABLE_MODIFICATION_NODE, TestUtils.DOM_DATA_TREE_WRITE_CURSOR);