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.restconf.server.spi;
10 import static org.mockito.Mockito.inOrder;
11 import static org.mockito.Mockito.times;
13 import java.util.List;
15 import org.junit.jupiter.api.Test;
16 import org.junit.jupiter.api.extension.ExtendWith;
17 import org.mockito.Mock;
18 import org.mockito.junit.jupiter.MockitoExtension;
19 import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode;
20 import org.opendaylight.yangtools.yang.data.api.schema.MapEntryNode;
21 import org.opendaylight.yangtools.yang.data.api.schema.MapNode;
22 import org.opendaylight.yangtools.yang.data.api.schema.SystemMapNode;
23 import org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeStreamWriter;
24 import org.opendaylight.yangtools.yang.data.spi.node.ImmutableNodes;
27 * Unit test for {@link NormalizedNodeWriter} used with fields parameter.
29 @ExtendWith(MockitoExtension.class)
30 class NormalizedNodeWriterFieldsTest extends AbstractNormalizedNodeWriterTest {
31 private final SystemMapNode mapNodeData = ImmutableNodes.newSystemMapBuilder()
32 .withNodeIdentifier(LIST_NID)
33 .withChild(ImmutableNodes.newMapEntryBuilder()
34 .withNodeIdentifier(mapEntryNodeIdentifier)
35 .withChild(keyLeafNodeData)
40 private NormalizedNodeStreamWriter writer;
43 * Test write {@link ContainerNode} when children which will be written are limited.
44 * Fields parameter selects 0/1 of container children to be written.
47 void writeContainerWithLimitedFieldsTest() throws Exception {
48 final var parameterWriter = NormalizedNodeWriter.forStreamWriter(writer, null, List.of(Set.of()));
50 parameterWriter.write(containerNodeData);
52 final var inOrder = inOrder(writer);
53 inOrder.verify(writer).startContainerNode(CONTAINER_NID, 1);
54 inOrder.verify(writer).endNode();
58 * Test write {@link ContainerNode} when all its children are selected to be written.
59 * Fields parameter selects 1/1 of container children to be written.
62 void writeContainerAllFieldsTest() throws Exception {
63 final var parameterWriter = NormalizedNodeWriter.forStreamWriter(writer, null,
64 List.of(Set.of(LEAF_SET_NID.getNodeType())));
66 parameterWriter.write(containerNodeData);
68 final var inOrder = inOrder(writer);
69 inOrder.verify(writer).startContainerNode(CONTAINER_NID, 1);
70 inOrder.verify(writer).startLeafSet(LEAF_SET_NID, 1);
71 inOrder.verify(writer).startLeafSetEntryNode(leafSetEntryNodeIdentifier);
72 inOrder.verify(writer).scalarValue(leafSetEntryNodeValue);
73 inOrder.verify(writer, times(3)).endNode();
77 * Test write {@link MapEntryNode} as child of {@link MapNode} when children which will be written are limited.
78 * Fields parameter selects 0/1 of map entry node children to be written.
81 void writeMapEntryNodeWithLimitedFieldsTest() throws Exception {
82 final var parameterWriter = NormalizedNodeWriter.forStreamWriter(writer, null, List.of(Set.of()));
84 parameterWriter.write(mapNodeData);
86 final var inOrder = inOrder(writer);
87 inOrder.verify(writer).startMapNode(LIST_NID, 1);
88 inOrder.verify(writer).startMapEntryNode(mapEntryNodeIdentifier, 1);
89 inOrder.verify(writer, times(2)).endNode();
93 * Test write {@link MapEntryNode} as child of {@link MapNode} when all its children will be written.
94 * Fields parameter selects 1/1 of map entry node children to be written.
97 void writeMapNodeAllFieldsTest() throws Exception {
98 final var parameterWriter = NormalizedNodeWriter.forStreamWriter(writer, null,
99 List.of(Set.of(keyLeafNodeData.name().getNodeType())));
101 parameterWriter.write(mapNodeData);
103 final var inOrder = inOrder(writer);
104 inOrder.verify(writer).startMapNode(LIST_NID, 1);
105 inOrder.verify(writer).startMapEntryNode(mapEntryNodeIdentifier, 1);
106 inOrder.verify(writer).startLeafNode(KEY_FIELD_NID);
107 inOrder.verify(writer).scalarValue(keyLeafNodeValue);
108 inOrder.verify(writer, times(3)).endNode();