/* * 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.yms.app.ypm; import org.junit.Test; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.is; import static org.hamcrest.Matchers.notNullValue; import static org.hamcrest.Matchers.nullValue; import org.onosproject.yms.ypm.YpmContext; import org.onosproject.yms.ypm.DefaultYpmNode; /** * Unit tests for DefaultYpmNode class. */ public class DefaultYpmNodeTest { private final String logicalName = "logicalYpmNode"; private final String moduleName1 = "portPairModule1"; private final String moduleName2 = "portPairModule2"; private final String xNodeName = "x"; private final String yNodeName = "y"; private final String zNodeName = "z"; private final String x1NodeName = "x1"; private final String x2NodeName = "x2"; private final String y1NodeName = "y1"; private final String y2NodeName = "y2"; private final String z1NodeName = "z1"; private final String z2NodeName = "z2"; /** * Constructs ypm tree with single module. * * @return ypm tree root node */ private YpmContext constructYpmTreeSingleModule() { // Create logical node DefaultYpmNode rootNode = new DefaultYpmNode(logicalName); // Create module node with moduleName1 rootNode.addChild(moduleName1); // child to logical node YpmContext moduleNode = rootNode.getChild(moduleName1); moduleNode.addChild(xNodeName); // child to module node moduleNode.addChild(yNodeName); // sibling node to child node "x" YpmContext xNode = moduleNode.getChild("x"); xNode.addSibling(zNodeName); // sibling node to child node "x" xNode.addChild(x1NodeName); // child to node x xNode.addChild(x2NodeName); // child to node x YpmContext yNode = moduleNode.getChild(yNodeName); yNode.addChild(y1NodeName); // child to node y yNode.addChild(y2NodeName); // child to node y YpmContext zNode = moduleNode.getChild(zNodeName); zNode.addChild(z1NodeName); // child to node z zNode.addChild(z2NodeName); // child to node z return rootNode; } /** * Constructs ypm tree with multi module. * * @return ypm tree root node */ private YpmContext constructYpmTreeMultiModule(DefaultYpmNode rootNode) { rootNode.addChild(moduleName2); // child to logical node YpmContext moduleNode = rootNode.getChild(moduleName2); moduleNode.addChild(xNodeName); // child to module node moduleNode.addChild(yNodeName); // sibling node to child node "x" YpmContext xNode = moduleNode.getChild("x"); xNode.addSibling(zNodeName); // sibling node to child node "x" xNode.addChild(x1NodeName); // child to node x xNode.addChild(x2NodeName); // child to node x YpmContext yNode = moduleNode.getChild(yNodeName); yNode.addChild(y1NodeName); // child to node y yNode.addChild(y2NodeName); // child to node y YpmContext zNode = moduleNode.getChild(zNodeName); zNode.addChild(z1NodeName); // child to node z zNode.addChild(z2NodeName); // child to node z return rootNode; } /** * Checks ypm tree single module construction. */ @Test public void testYpmTreeSingleModuleConstruction() { DefaultYpmNode rootNode = (DefaultYpmNode) constructYpmTreeSingleModule(); // Check one by one node String name = rootNode.getName(); assertThat(name, is(logicalName)); YpmContext moduleNode = rootNode.getChild(moduleName1); assertThat(moduleNode.getName(), is(moduleName1)); YpmContext ypmNode = moduleNode.getChild(xNodeName); assertThat(ypmNode.getName(), is(xNodeName)); // Check sibling by using getNextSibling(); ypmNode = ypmNode.getNextSibling(); assertThat(ypmNode, notNullValue()); // either y or z should be there as sibling ypmNode = ypmNode.getNextSibling(); assertThat(ypmNode, notNullValue()); // either y or z should be there as sibling ypmNode = ypmNode.getNextSibling(); assertThat(ypmNode, nullValue()); // last sibling point to next sibling as null // Check sibling by using getPreviousSibling() ypmNode = moduleNode.getChild(zNodeName); assertThat(ypmNode.getName(), is(zNodeName)); ypmNode = ypmNode.getPreviousSibling(); assertThat(ypmNode, notNullValue()); // either x or y should be there as sibling ypmNode = ypmNode.getPreviousSibling(); assertThat(ypmNode, notNullValue()); // either x or y should be there as sibling ypmNode = ypmNode.getPreviousSibling(); assertThat(ypmNode, nullValue()); // last sibling point to next sibling as null // Checks the child x1 and x2 ypmNode = moduleNode.getChild(xNodeName); ypmNode = ypmNode.getChild(x1NodeName); assertThat(ypmNode.getName(), is(x1NodeName)); ypmNode = ypmNode.getSibling(x2NodeName); assertThat(ypmNode.getName(), is(x2NodeName)); // Checks the child y1 and y2 ypmNode = moduleNode.getChild(yNodeName); ypmNode = ypmNode.getChild(y1NodeName); assertThat(ypmNode.getName(), is(y1NodeName)); ypmNode = ypmNode.getSibling(y2NodeName); assertThat(ypmNode.getName(), is(y2NodeName)); // Checks the child z1 and z2 ypmNode = moduleNode.getChild(zNodeName); ypmNode = ypmNode.getChild(z1NodeName); assertThat(ypmNode.getName(), is(z1NodeName)); ypmNode = ypmNode.getSibling(z2NodeName); assertThat(ypmNode.getName(), is(z2NodeName)); } /** * Checks ypm tree multiple module construction. */ @Test public void testYpmTreeMultiModuleConstruction() { DefaultYpmNode rootNode = (DefaultYpmNode) constructYpmTreeSingleModule(); rootNode = (DefaultYpmNode) constructYpmTreeMultiModule(rootNode); // Check one by one node String name = rootNode.getName(); assertThat(name, is(logicalName)); YpmContext moduleNode = rootNode.getChild(moduleName2); assertThat(moduleNode.getName(), is(moduleName2)); YpmContext ypmNode = moduleNode.getChild(xNodeName); assertThat(ypmNode.getName(), is(xNodeName)); // Check sibling by using getNextSibling(); ypmNode = ypmNode.getNextSibling(); assertThat(ypmNode, notNullValue()); // either y or z should be there as sibling ypmNode = ypmNode.getNextSibling(); assertThat(ypmNode, notNullValue()); // either y or z should be there as sibling ypmNode = ypmNode.getNextSibling(); assertThat(ypmNode, nullValue()); // last sibling point to next sibling as null // Check sibling by using getPreviousSibling() ypmNode = moduleNode.getChild(zNodeName); assertThat(ypmNode.getName(), is(zNodeName)); ypmNode = ypmNode.getPreviousSibling(); assertThat(ypmNode, notNullValue()); // either x or y should be there as sibling ypmNode = ypmNode.getPreviousSibling(); assertThat(ypmNode, notNullValue()); // either x or y should be there as sibling ypmNode = ypmNode.getPreviousSibling(); assertThat(ypmNode, nullValue()); // last sibling point to next sibling as null // Checks the child x1 and x2 ypmNode = moduleNode.getChild(xNodeName); ypmNode = ypmNode.getChild(x1NodeName); assertThat(ypmNode.getName(), is(x1NodeName)); ypmNode = ypmNode.getSibling(x2NodeName); assertThat(ypmNode.getName(), is(x2NodeName)); // Checks the child y1 and y2 ypmNode = moduleNode.getChild(yNodeName); ypmNode = ypmNode.getChild(y1NodeName); assertThat(ypmNode.getName(), is(y1NodeName)); ypmNode = ypmNode.getSibling(y2NodeName); assertThat(ypmNode.getName(), is(y2NodeName)); // Checks the child z1 and z2 ypmNode = moduleNode.getChild(zNodeName); ypmNode = ypmNode.getChild(z1NodeName); assertThat(ypmNode.getName(), is(z1NodeName)); ypmNode = ypmNode.getSibling(z2NodeName); assertThat(ypmNode.getName(), is(z2NodeName)); } }