mirror of
https://github.com/opennetworkinglab/onos.git
synced 2025-11-03 17:51:26 +01:00
Mock YdtBuilder and YdtNode to do UT for Restconf
fix the java code problems. add more test cases Change-Id: I034d35e8a41a6c12e293fad867d6540dd5f37e95
This commit is contained in:
parent
528007c085
commit
0c32d71d3f
@ -110,21 +110,26 @@ public class JsonToYdtListener implements JsonListener {
|
||||
|
||||
@Override
|
||||
public void exitJsonNode(JsonNode jsonNode) {
|
||||
if (jsonNode.getNodeType() == ARRAY && nameStack.empty()) {
|
||||
|
||||
if (isListArray) {
|
||||
isListArray = false;
|
||||
ydtBuilder.traverseToParent();
|
||||
return;
|
||||
}
|
||||
|
||||
if (jsonNode.getNodeType() == ARRAY && !isListArray) {
|
||||
if (jsonNode.getNodeType() == ARRAY) {
|
||||
//check empty before pop
|
||||
if (nameStack.empty()) {
|
||||
return;
|
||||
}
|
||||
nameStack.pop();
|
||||
//check empty after pop
|
||||
if (nameStack.empty()) {
|
||||
return;
|
||||
}
|
||||
defaultMultiInsNode = nameStack.get(nameStack.size() - 1);
|
||||
return;
|
||||
}
|
||||
if (isListArray) {
|
||||
isListArray = false;
|
||||
}
|
||||
|
||||
ydtBuilder.traverseToParent();
|
||||
}
|
||||
|
||||
@ -0,0 +1,82 @@
|
||||
/*
|
||||
* Copyright 2016-present Open Networking Laboratory
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package org.onosproject.protocol.restconf.server.utils.parser.api;
|
||||
|
||||
import java.util.Objects;
|
||||
|
||||
/**
|
||||
* A test class which represents YANG data node identifier which is a
|
||||
* combination of name and namespace.
|
||||
*/
|
||||
public class TestYangSchemaId {
|
||||
private String name;
|
||||
private String namespace;
|
||||
|
||||
/**
|
||||
* Returns the name of the node.
|
||||
*
|
||||
* @return name of the node
|
||||
*/
|
||||
public String getName() {
|
||||
return this.name;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets name of the node.
|
||||
*
|
||||
* @param name name of the node
|
||||
*/
|
||||
public void setName(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns namespace of the node.
|
||||
*
|
||||
* @return namespace of the node
|
||||
*/
|
||||
public String getNameSpace() {
|
||||
return this.namespace;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets namespace of the node.
|
||||
*
|
||||
* @param namespace namespace of the node
|
||||
*/
|
||||
public void setNameSpace(String namespace) {
|
||||
this.namespace = namespace;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object obj) {
|
||||
if (this == obj) {
|
||||
return true;
|
||||
} else if (!(obj instanceof TestYangSchemaId)) {
|
||||
return false;
|
||||
} else {
|
||||
TestYangSchemaId other = (TestYangSchemaId) obj;
|
||||
return Objects.equals(this.name, other.name) &&
|
||||
Objects.equals(this.namespace, other.namespace);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return Objects.hash(this.name, this.namespace);
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,182 @@
|
||||
/*
|
||||
* Copyright 2016-present Open Networking Laboratory
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package org.onosproject.protocol.restconf.server.utils.parser.api;
|
||||
|
||||
import org.onosproject.yms.ydt.YdtBuilder;
|
||||
import org.onosproject.yms.ydt.YdtContext;
|
||||
import org.onosproject.yms.ydt.YdtContextOperationType;
|
||||
import org.onosproject.yms.ydt.YdtType;
|
||||
import org.onosproject.yms.ydt.YmsOperationType;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
import static org.onosproject.yms.ydt.YdtContextOperationType.NONE;
|
||||
import static org.onosproject.yms.ydt.YdtType.*;
|
||||
|
||||
/**
|
||||
* A test class which represents YANG request work bench which contains all
|
||||
* parameters for request handling and methods to build and obtain YANG data
|
||||
* tree which is data (sub)instance representation, abstract of protocol.
|
||||
*/
|
||||
public class TestYdtBuilder implements YdtBuilder {
|
||||
|
||||
private TestYdtNode curNode;
|
||||
|
||||
private TestYdtNode rootNode;
|
||||
|
||||
private final YmsOperationType ymsOperationType;
|
||||
|
||||
private YdtContextOperationType ydtDefaultOpType;
|
||||
|
||||
/**
|
||||
* Creates an instance of YANG request work bench which is use to initialize
|
||||
* logical rootNode and and schema registry.
|
||||
*
|
||||
* @param name name of logical container of a protocol
|
||||
* which is a holder of the complete tree
|
||||
* @param namespace namespace of logical container
|
||||
* @param opType type of operation done by using YANG
|
||||
* interface
|
||||
*/
|
||||
public TestYdtBuilder(String name, String namespace,
|
||||
YmsOperationType opType) {
|
||||
TestYangSchemaId nodeId = new TestYangSchemaId();
|
||||
nodeId.setName(name);
|
||||
nodeId.setNameSpace(namespace);
|
||||
setRootNode(new TestYdtNode(nodeId, SINGLE_INSTANCE_NODE));
|
||||
ymsOperationType = opType;
|
||||
}
|
||||
|
||||
private void setRootNode(TestYdtNode node) {
|
||||
rootNode = node;
|
||||
curNode = node;
|
||||
}
|
||||
|
||||
@Override
|
||||
public YdtContext getRootNode() {
|
||||
return rootNode;
|
||||
}
|
||||
|
||||
@Override
|
||||
public YmsOperationType getYmsOperationType() {
|
||||
return ymsOperationType;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setRootTagAttributeMap(Map<String, String> attributeTag) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<String, String> getRootTagAttributeMap() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addChild(String name, String namespace) {
|
||||
addChild(name, namespace, SINGLE_INSTANCE_NODE, NONE);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addChild(String name, String namespace, YdtType ydtType) {
|
||||
addChild(name, namespace, ydtType, NONE);
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addChild(String name, String namespace,
|
||||
YdtContextOperationType opType) {
|
||||
addChild(name, namespace, SINGLE_INSTANCE_NODE, opType);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addChild(String name, String namespace, YdtType ydtType,
|
||||
YdtContextOperationType opType) {
|
||||
TestYangSchemaId id = new TestYangSchemaId();
|
||||
id.setName(name);
|
||||
String ns = namespace != null ? namespace :
|
||||
curNode.getYdtNodeIdentifier().getNameSpace();
|
||||
id.setNameSpace(ns);
|
||||
TestYdtNode childNode = new TestYdtNode(id, ydtType);
|
||||
|
||||
YdtContextOperationType type = opType == null ? NONE : opType;
|
||||
childNode.setYdtContextOperationType(type);
|
||||
|
||||
curNode.addChild(childNode);
|
||||
|
||||
// Updating the curNode.
|
||||
curNode = childNode;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addLeaf(String name, String namespace, String value) {
|
||||
addLeaf(name, namespace, value, null, SINGLE_INSTANCE_LEAF_VALUE_NODE);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addLeaf(String name, String namespace, Set<String> valueSet) {
|
||||
addLeaf(name, namespace, null, valueSet, MULTI_INSTANCE_LEAF_VALUE_NODE);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addMultiInstanceChild(String name, String namespace,
|
||||
List<String> valueList) {
|
||||
addChild(name, namespace, MULTI_INSTANCE_LEAF_VALUE_NODE, NONE);
|
||||
if (curNode.getYdtType() == MULTI_INSTANCE_LEAF_VALUE_NODE) {
|
||||
for (String value : valueList) {
|
||||
curNode.addValue(value);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void addLeaf(String name, String namespace, String value,
|
||||
Set<String> valueSet, YdtType ydtType) {
|
||||
addChild(name, namespace, ydtType, NONE);
|
||||
|
||||
if (value != null) {
|
||||
curNode.addValue(value);
|
||||
} else if (valueSet != null) {
|
||||
curNode.addValueSet(valueSet);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void traverseToParent() {
|
||||
curNode = curNode.getParent();
|
||||
}
|
||||
|
||||
@Override
|
||||
public YdtContext getCurNode() {
|
||||
return curNode;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setDefaultEditOperationType(YdtContextOperationType opType) {
|
||||
ydtDefaultOpType = opType;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the default context operation type of a YDT builder.
|
||||
*
|
||||
* @return default context operation type
|
||||
*/
|
||||
public YdtContextOperationType getYdtDefaultOpType() {
|
||||
return ydtDefaultOpType;
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,232 @@
|
||||
/*
|
||||
* Copyright 2016-present Open Networking Laboratory
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package org.onosproject.protocol.restconf.server.utils.parser.api;
|
||||
|
||||
import org.onosproject.yms.ydt.YdtContext;
|
||||
import org.onosproject.yms.ydt.YdtContextOperationType;
|
||||
import org.onosproject.yms.ydt.YdtExtendedInfoType;
|
||||
import org.onosproject.yms.ydt.YdtType;
|
||||
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
|
||||
/**
|
||||
* A test class which represents a general instance node in YANG data tree.
|
||||
*/
|
||||
public class TestYdtNode implements YdtContext {
|
||||
|
||||
private TestYdtNode parent;
|
||||
private TestYdtNode child;
|
||||
private TestYdtNode nextSibling;
|
||||
private TestYdtNode previousSibling;
|
||||
private TestYdtNode lastChild;
|
||||
private YdtType ydtType;
|
||||
private String value;
|
||||
private final Set<String> valueSet = new HashSet<>();
|
||||
private TestYangSchemaId id;
|
||||
private YdtContextOperationType ydtContextOperationType;
|
||||
|
||||
/**
|
||||
* Creates a general YANG instance node object.
|
||||
*
|
||||
* @param id node identifier of YDT multi instance node .
|
||||
* @param ydtType type of YDT node to be added
|
||||
*/
|
||||
public TestYdtNode(TestYangSchemaId id, YdtType ydtType) {
|
||||
this.id = id;
|
||||
this.ydtType = ydtType;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getName() {
|
||||
return id.getName();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getNamespace() {
|
||||
return id.getNameSpace();
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> T getYdtContextExtendedInfo() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public YdtExtendedInfoType getYdtExtendedInfoType() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public YdtType getYdtType() {
|
||||
return ydtType;
|
||||
}
|
||||
|
||||
@Override
|
||||
public TestYdtNode getParent() {
|
||||
return parent;
|
||||
}
|
||||
|
||||
@Override
|
||||
public TestYdtNode getFirstChild() {
|
||||
return child;
|
||||
}
|
||||
|
||||
@Override
|
||||
public TestYdtNode getLastChild() {
|
||||
return lastChild;
|
||||
}
|
||||
|
||||
@Override
|
||||
public TestYdtNode getNextSibling() {
|
||||
return nextSibling;
|
||||
}
|
||||
|
||||
@Override
|
||||
public YdtContext getPreviousSibling() {
|
||||
return previousSibling;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getValue() {
|
||||
return value;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Set<String> getValueSet() {
|
||||
return valueSet;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the parent of node.
|
||||
*
|
||||
* @param parent node
|
||||
*/
|
||||
public void setParent(TestYdtNode parent) {
|
||||
this.parent = parent;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the first instance of a child node.
|
||||
*
|
||||
* @param child is only child to be set
|
||||
*/
|
||||
public void setChild(TestYdtNode child) {
|
||||
this.child = child;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the last instance of a child node.
|
||||
*
|
||||
* @param child is last child to be set
|
||||
*/
|
||||
public void setLastChild(TestYdtNode child) {
|
||||
lastChild = child;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the next sibling of node.
|
||||
*
|
||||
* @param sibling YANG node
|
||||
*/
|
||||
public void setNextSibling(TestYdtNode sibling) {
|
||||
nextSibling = sibling;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the previous sibling.
|
||||
*
|
||||
* @param previousSibling points to predecessor sibling
|
||||
*/
|
||||
public void setPreviousSibling(TestYdtNode previousSibling) {
|
||||
this.previousSibling = previousSibling;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns object node identifier.
|
||||
*
|
||||
* @return node identifier
|
||||
*/
|
||||
public TestYangSchemaId getYdtNodeIdentifier() {
|
||||
return id;
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds a child node.
|
||||
* The children sibling list will be sorted based on node
|
||||
* type. This will add single child or sub-tree based on isAtomic flag.
|
||||
*
|
||||
* @param newChild refers to a new child to be added
|
||||
*/
|
||||
public void addChild(YdtContext newChild) {
|
||||
TestYdtNode node = (TestYdtNode) newChild;
|
||||
|
||||
if (node.getParent() == null) {
|
||||
node.setParent(this);
|
||||
}
|
||||
|
||||
// If new node needs to be added as first child.
|
||||
if (getFirstChild() == null) {
|
||||
setChild(node);
|
||||
setLastChild(node);
|
||||
return;
|
||||
}
|
||||
|
||||
// If new node needs to be added as last child.
|
||||
TestYdtNode curNode = getLastChild();
|
||||
curNode.setNextSibling(node);
|
||||
node.setPreviousSibling(curNode);
|
||||
setLastChild(node);
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds the given value to the non single instance leaf node.
|
||||
*
|
||||
* @param value value in a single instance node
|
||||
*/
|
||||
public void addValue(String value) {
|
||||
this.value = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds the given valueSet to the non multi instance leaf node.
|
||||
*
|
||||
* @param values value set in a multi instance leaf node
|
||||
*/
|
||||
public void addValueSet(Set<String> values) {
|
||||
valueSet.addAll(values);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Sets the context operation type for the YDT node.
|
||||
*
|
||||
* @param opType context operation type
|
||||
*/
|
||||
public void setYdtContextOperationType(YdtContextOperationType opType) {
|
||||
this.ydtContextOperationType = opType;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the context operation type for the YDT node.
|
||||
*
|
||||
* @return context operation type
|
||||
*/
|
||||
public YdtContextOperationType getYdtContextOperationType() {
|
||||
return ydtContextOperationType;
|
||||
}
|
||||
}
|
||||
@ -14,7 +14,7 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package org.onosproject.restconf.utils.parser.json;
|
||||
package org.onosproject.protocol.restconf.server.utils.parser.json;
|
||||
|
||||
import com.fasterxml.jackson.databind.JsonNode;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
@ -22,7 +22,6 @@ import com.fasterxml.jackson.databind.node.ObjectNode;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.onosproject.protocol.restconf.server.utils.parser.api.JsonListener;
|
||||
import org.onosproject.protocol.restconf.server.utils.parser.json.DefaultJsonWalker;
|
||||
|
||||
import java.io.InputStream;
|
||||
import java.util.ArrayList;
|
||||
@ -0,0 +1,136 @@
|
||||
/*
|
||||
* Copyright 2016-present Open Networking Laboratory
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package org.onosproject.protocol.restconf.server.utils.parser.json;
|
||||
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import com.fasterxml.jackson.databind.node.ObjectNode;
|
||||
import com.google.common.collect.ImmutableSet;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.onosproject.protocol.restconf.server.utils.parser.api.JsonWalker;
|
||||
import org.onosproject.protocol.restconf.server.utils.parser.api.TestYdtBuilder;
|
||||
import org.onosproject.yms.ydt.YdtBuilder;
|
||||
import org.onosproject.yms.ydt.YdtContext;
|
||||
|
||||
import java.io.InputStream;
|
||||
import java.util.Set;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.onosproject.yms.ydt.YdtType.*;
|
||||
import static org.onosproject.yms.ydt.YmsOperationType.QUERY_REQUEST;
|
||||
|
||||
/**
|
||||
* Unit tests for JsonToYtdListener.
|
||||
*/
|
||||
public class JsonToYdtListenerTest {
|
||||
private static final String RESTCONF_ROOT = "/onos/restconf";
|
||||
private static final String WRONG_STRUCTURE = "The Ydt structure is wrong!";
|
||||
private static final String WRONG_TYPE = "The Ydt type is wrong!";
|
||||
|
||||
private YdtBuilder builder;
|
||||
private JsonToYdtListener listener;
|
||||
private JsonWalker jsonWalker;
|
||||
|
||||
@Before
|
||||
public void setup() throws Exception {
|
||||
builder = new TestYdtBuilder(RESTCONF_ROOT, null, QUERY_REQUEST);
|
||||
listener = new JsonToYdtListener(builder);
|
||||
jsonWalker = new DefaultJsonWalker();
|
||||
}
|
||||
|
||||
private ObjectNode loadJsonFile(String path) throws Exception {
|
||||
InputStream jsonStream = getClass().getResourceAsStream(path);
|
||||
ObjectMapper mapper = new ObjectMapper();
|
||||
return (ObjectNode) mapper.readTree(jsonStream);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testArrayNodeTransfer() throws Exception {
|
||||
ObjectNode arrayNode = loadJsonFile("/arrayNode.json");
|
||||
jsonWalker.walk(listener, null, arrayNode);
|
||||
YdtContext rootNode = builder.getRootNode();
|
||||
YdtContext firstChild = rootNode.getFirstChild();
|
||||
YdtContext nextSibling = firstChild.getNextSibling();
|
||||
assertEquals(WRONG_TYPE, SINGLE_INSTANCE_LEAF_VALUE_NODE,
|
||||
firstChild.getYdtType());
|
||||
assertEquals(WRONG_STRUCTURE, "surname", firstChild.getName());
|
||||
assertEquals(WRONG_TYPE, MULTI_INSTANCE_NODE, nextSibling.getYdtType());
|
||||
assertEquals(WRONG_STRUCTURE, "networklist", nextSibling.getName());
|
||||
assertEquals(WRONG_STRUCTURE, "networklist",
|
||||
nextSibling.getNextSibling().getName());
|
||||
assertEquals(WRONG_STRUCTURE, "networklist",
|
||||
rootNode.getLastChild().getName());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testListInListNodeTransfer() throws Exception {
|
||||
ObjectNode arrayNode = loadJsonFile("/listInList.json");
|
||||
jsonWalker.walk(listener, null, arrayNode);
|
||||
YdtContext rootNode = builder.getRootNode();
|
||||
YdtContext firstChild = rootNode.getFirstChild();
|
||||
YdtContext levelOneArray = firstChild.getFirstChild();
|
||||
assertEquals(WRONG_STRUCTURE, "container-identifier1",
|
||||
firstChild.getName());
|
||||
assertEquals(WRONG_STRUCTURE, "list-identifier2",
|
||||
levelOneArray.getName());
|
||||
assertEquals(WRONG_STRUCTURE, "list-identifier2",
|
||||
levelOneArray.getNextSibling().getName());
|
||||
|
||||
YdtContext identifier3Node = levelOneArray.getLastChild();
|
||||
assertEquals(WRONG_STRUCTURE, "container-identifier3",
|
||||
identifier3Node.getName());
|
||||
YdtContext identifier4Node = identifier3Node.getLastChild();
|
||||
assertEquals(WRONG_STRUCTURE, "list-identifier4",
|
||||
identifier4Node.getName());
|
||||
YdtContext identifier5ListNode = identifier4Node.getLastChild();
|
||||
assertEquals(WRONG_STRUCTURE, "leaf-list-identifier5",
|
||||
identifier5ListNode.getName());
|
||||
assertEquals(WRONG_TYPE, MULTI_INSTANCE_LEAF_VALUE_NODE,
|
||||
identifier5ListNode.getYdtType());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testListAfterLeafList() throws Exception {
|
||||
ObjectNode arrayNode = loadJsonFile("/listAfterLeaflist.json");
|
||||
jsonWalker.walk(listener, null, arrayNode);
|
||||
YdtContext rootNode = builder.getRootNode();
|
||||
YdtContext firstChild = rootNode.getFirstChild();
|
||||
YdtContext second = firstChild.getNextSibling();
|
||||
YdtContext lastChild = rootNode.getLastChild();
|
||||
assertEquals(WRONG_STRUCTURE, "leaf-identifier1", firstChild.getName());
|
||||
assertEquals(WRONG_STRUCTURE, "leaf-list-identifier1", second.getName());
|
||||
assertEquals(WRONG_STRUCTURE, "list-identifier1", lastChild.getName());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testLeafListAfterList() throws Exception {
|
||||
ObjectNode arrayNode = loadJsonFile("/leaflistAfterlist.json");
|
||||
jsonWalker.walk(listener, null, arrayNode);
|
||||
YdtContext rootNode = builder.getRootNode();
|
||||
YdtContext firstChild = rootNode.getFirstChild();
|
||||
YdtContext second = firstChild.getNextSibling();
|
||||
YdtContext lastChild = rootNode.getLastChild();
|
||||
assertEquals(WRONG_STRUCTURE, "leaf-identifier1", firstChild.getName());
|
||||
assertEquals(WRONG_STRUCTURE, "list-identifier1", second.getName());
|
||||
YdtContext level2Child = second.getFirstChild();
|
||||
assertEquals(WRONG_STRUCTURE, "leaf-identifier2", level2Child.getName());
|
||||
assertEquals(WRONG_STRUCTURE, "5", level2Child.getValue());
|
||||
assertEquals(WRONG_STRUCTURE, "leaf-list-identifier1", lastChild.getName());
|
||||
Set<String> sets = ImmutableSet.of("5", "12");
|
||||
assertEquals(WRONG_STRUCTURE, sets, lastChild.getValueSet());
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,12 @@
|
||||
{
|
||||
"leaf-identifier1": "1",
|
||||
"list-identifier1": [
|
||||
{
|
||||
"leaf-identifier2": "5"
|
||||
}
|
||||
],
|
||||
"leaf-list-identifier1": [
|
||||
"5",
|
||||
"12"
|
||||
]
|
||||
}
|
||||
@ -0,0 +1,12 @@
|
||||
{
|
||||
"leaf-identifier1": "1",
|
||||
"leaf-list-identifier1": [
|
||||
"5",
|
||||
"12"
|
||||
],
|
||||
"list-identifier1": [
|
||||
{
|
||||
"leaf-identifier2": "5"
|
||||
}
|
||||
]
|
||||
}
|
||||
@ -0,0 +1,39 @@
|
||||
{
|
||||
"container-identifier1": {
|
||||
"list-identifier2": [
|
||||
{
|
||||
"leaf-identifier3": "enum1",
|
||||
"container-identifier3": {
|
||||
"leaf-identifier4": "",
|
||||
"leaf-list-identifier4": [
|
||||
"type-pattern-string6"
|
||||
],
|
||||
"list-identifier4": [
|
||||
{
|
||||
"leaf-identifier5": "type-pattern-string7",
|
||||
"leaf-list-identifier5": [
|
||||
"type-pattern-string7",
|
||||
"type-pattern-string7",
|
||||
"type-pattern-string7"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"leaf-identifier3": "enum2",
|
||||
"list-identifier3": [
|
||||
{
|
||||
"leaf-identifier4": "myidentity",
|
||||
"container-identifier4": {
|
||||
"leaf-identifier5": "type-pattern-string3",
|
||||
"leaf-list-identifier5": [
|
||||
"type-pattern-string3"
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user