| /* |
| * Copyright 2016-present Open Networking Foundation |
| * |
| * 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.ydt; |
| |
| import org.junit.Test; |
| import org.onosproject.yms.app.ydt.exceptions.YdtException; |
| |
| import static org.onosproject.yms.app.ydt.YdtTestConstants.MAXIWR; |
| import static org.onosproject.yms.app.ydt.YdtTestConstants.MAXUINT32; |
| import static org.onosproject.yms.app.ydt.YdtTestConstants.MAXUIWR; |
| import static org.onosproject.yms.app.ydt.YdtTestConstants.MIDIWR; |
| import static org.onosproject.yms.app.ydt.YdtTestConstants.MIDUIWR; |
| import static org.onosproject.yms.app.ydt.YdtTestConstants.MINIWR; |
| import static org.onosproject.yms.app.ydt.YdtTestConstants.MINUIWR; |
| import static org.onosproject.yms.app.ydt.YdtTestConstants.MINVALUE; |
| import static org.onosproject.yms.app.ydt.YdtTestConstants.MRV; |
| import static org.onosproject.yms.app.ydt.YdtTestConstants.RUI; |
| import static org.onosproject.yms.app.ydt.YdtTestConstants.TYPE; |
| import static org.onosproject.yms.app.ydt.YdtTestUtils.integer32Ydt; |
| import static org.onosproject.yms.app.ydt.YdtTestUtils.validateLeafContents; |
| import static org.onosproject.yms.app.ydt.YdtTestUtils.validateNodeContents; |
| import static org.onosproject.yms.ydt.YdtContextOperationType.MERGE; |
| |
| public class YdtInteger32Test { |
| |
| /* |
| Positive scenario |
| |
| input at boundry for integer |
| i. min value |
| ii. max value |
| |
| input at boundry for uinteger |
| i. min value |
| ii. max value |
| |
| input with in range |
| if range is 10 to 100 for integer |
| i.1. input 11 |
| i.2. min value 10 |
| i.3. max value 100 |
| |
| if range is 10 to 100 for uinteger |
| i.1. input 11 |
| i.2. min value 10 |
| i.3. max value 100 |
| |
| input with multi interval range |
| if range is 10..40 | 50..100 for integer |
| i.1. input 11 |
| i.2. input 10 |
| i.3. input 40 |
| i.4. input 50 |
| i.5. input 55 |
| i.6. input 100 |
| |
| if range is 10..40 | 50..100 for uinteger |
| i.1. input 11 |
| i.2. input 10 |
| i.3. input 40 |
| i.4. input 50 |
| i.5. input 55 |
| i.6. input 100 |
| |
| if range is "min .. 2 | 10 | 20..max" for integer |
| i.1. input -2147483648 |
| i.2. input 1 |
| i.3. input 2 |
| i.4. input 10 |
| i.5. input 20 |
| i.6. input 100 |
| i.7. input 2147483647 |
| |
| if range is "min .. 2 | 10 | 20..max" for uInteger |
| i.1. input 0 |
| i.2. input 1 |
| i.3. input 2 |
| i.4. input 10 |
| i.5. input 20 |
| i.6. input 100 |
| i.7. input 4294967295 |
| */ |
| |
| /** |
| * Creates and validates integer32 ydt covering different positive scenario. |
| */ |
| @Test |
| public void positiveTest() throws YdtException { |
| YangRequestWorkBench ydtBuilder = integer32Ydt(); |
| validateTree(ydtBuilder); |
| } |
| |
| /** |
| * Validates the given built ydt. |
| */ |
| private void validateTree(YangRequestWorkBench ydtBuilder) { |
| |
| // assign root node to ydtNode for validating purpose. |
| YdtNode ydtNode = (YdtNode) ydtBuilder.getRootNode(); |
| // Logical root node does not have operation type |
| validateNodeContents(ydtNode, TYPE, null); |
| |
| ydtNode = ydtNode.getFirstChild(); |
| validateNodeContents(ydtNode, "integer32", MERGE); |
| ydtNode = ydtNode.getFirstChild(); |
| validateLeafContents(ydtNode, "negInt", "-2147483648"); |
| ydtNode = ydtNode.getNextSibling(); |
| validateLeafContents(ydtNode, "posInt", "2147483647"); |
| ydtNode = ydtNode.getNextSibling(); |
| validateLeafContents(ydtNode, "minUInt", MINVALUE); |
| ydtNode = ydtNode.getNextSibling(); |
| validateLeafContents(ydtNode, "maxUInt", MAXUINT32); |
| ydtNode = ydtNode.getNextSibling(); |
| validateLeafContents(ydtNode, MIDIWR, "11"); |
| ydtNode = ydtNode.getNextSibling(); |
| validateLeafContents(ydtNode, MINIWR, "10"); |
| ydtNode = ydtNode.getNextSibling(); |
| validateLeafContents(ydtNode, MAXIWR, "100"); |
| ydtNode = ydtNode.getNextSibling(); |
| validateLeafContents(ydtNode, MIDUIWR, "11"); |
| ydtNode = ydtNode.getNextSibling(); |
| validateLeafContents(ydtNode, MINUIWR, "10"); |
| ydtNode = ydtNode.getNextSibling(); |
| validateLeafContents(ydtNode, MAXUIWR, "100"); |
| ydtNode = ydtNode.getNextSibling(); |
| validateNodeContents(ydtNode, MRV, MERGE); |
| ydtNode = ydtNode.getFirstChild(); |
| validateLeafContents(ydtNode, "integer", "11"); |
| ydtNode = ydtNode.getParent(); |
| ydtNode = ydtNode.getNextSibling(); |
| validateNodeContents(ydtNode, MRV, MERGE); |
| ydtNode = ydtNode.getFirstChild(); |
| validateLeafContents(ydtNode, "integer", "10"); |
| ydtNode = ydtNode.getParent(); |
| ydtNode = ydtNode.getNextSibling(); |
| validateNodeContents(ydtNode, MRV, MERGE); |
| ydtNode = ydtNode.getFirstChild(); |
| validateLeafContents(ydtNode, "integer", "40"); |
| ydtNode = ydtNode.getParent(); |
| ydtNode = ydtNode.getNextSibling(); |
| validateNodeContents(ydtNode, MRV, MERGE); |
| ydtNode = ydtNode.getFirstChild(); |
| validateLeafContents(ydtNode, "integer", "50"); |
| ydtNode = ydtNode.getParent(); |
| ydtNode = ydtNode.getNextSibling(); |
| validateNodeContents(ydtNode, MRV, MERGE); |
| ydtNode = ydtNode.getFirstChild(); |
| validateLeafContents(ydtNode, "integer", "55"); |
| ydtNode = ydtNode.getParent(); |
| ydtNode = ydtNode.getNextSibling(); |
| validateNodeContents(ydtNode, MRV, MERGE); |
| ydtNode = ydtNode.getFirstChild(); |
| validateLeafContents(ydtNode, "integer", "100"); |
| ydtNode = ydtNode.getParent(); |
| ydtNode = ydtNode.getNextSibling(); |
| validateNodeContents(ydtNode, MRV, MERGE); |
| ydtNode = ydtNode.getFirstChild(); |
| validateLeafContents(ydtNode, "UnInteger", "11"); |
| ydtNode = ydtNode.getParent(); |
| ydtNode = ydtNode.getNextSibling(); |
| validateNodeContents(ydtNode, MRV, MERGE); |
| ydtNode = ydtNode.getFirstChild(); |
| validateLeafContents(ydtNode, "UnInteger", "10"); |
| ydtNode = ydtNode.getParent(); |
| ydtNode = ydtNode.getNextSibling(); |
| validateNodeContents(ydtNode, MRV, MERGE); |
| ydtNode = ydtNode.getFirstChild(); |
| validateLeafContents(ydtNode, "UnInteger", "40"); |
| ydtNode = ydtNode.getParent(); |
| ydtNode = ydtNode.getNextSibling(); |
| validateNodeContents(ydtNode, MRV, MERGE); |
| ydtNode = ydtNode.getFirstChild(); |
| validateLeafContents(ydtNode, "UnInteger", "50"); |
| ydtNode = ydtNode.getParent(); |
| ydtNode = ydtNode.getNextSibling(); |
| validateNodeContents(ydtNode, MRV, MERGE); |
| ydtNode = ydtNode.getFirstChild(); |
| validateLeafContents(ydtNode, "UnInteger", "55"); |
| ydtNode = ydtNode.getParent(); |
| ydtNode = ydtNode.getNextSibling(); |
| validateNodeContents(ydtNode, MRV, MERGE); |
| ydtNode = ydtNode.getFirstChild(); |
| validateLeafContents(ydtNode, "UnInteger", "100"); |
| |
| ydtNode = ydtNode.getParent(); |
| ydtNode = ydtNode.getNextSibling(); |
| validateNodeContents(ydtNode, MRV, MERGE); |
| ydtNode = ydtNode.getFirstChild(); |
| validateLeafContents(ydtNode, "revInteger", "-2147483648"); |
| ydtNode = ydtNode.getParent(); |
| ydtNode = ydtNode.getNextSibling(); |
| validateNodeContents(ydtNode, MRV, MERGE); |
| ydtNode = ydtNode.getFirstChild(); |
| validateLeafContents(ydtNode, "revInteger", "1"); |
| ydtNode = ydtNode.getParent(); |
| ydtNode = ydtNode.getNextSibling(); |
| validateNodeContents(ydtNode, MRV, MERGE); |
| ydtNode = ydtNode.getFirstChild(); |
| validateLeafContents(ydtNode, "revInteger", "2"); |
| ydtNode = ydtNode.getParent(); |
| ydtNode = ydtNode.getNextSibling(); |
| validateNodeContents(ydtNode, MRV, MERGE); |
| ydtNode = ydtNode.getFirstChild(); |
| validateLeafContents(ydtNode, "revInteger", "10"); |
| ydtNode = ydtNode.getParent(); |
| ydtNode = ydtNode.getNextSibling(); |
| validateNodeContents(ydtNode, MRV, MERGE); |
| ydtNode = ydtNode.getFirstChild(); |
| validateLeafContents(ydtNode, "revInteger", "20"); |
| ydtNode = ydtNode.getParent(); |
| ydtNode = ydtNode.getNextSibling(); |
| validateNodeContents(ydtNode, MRV, MERGE); |
| |
| validate1Tree(ydtNode); |
| } |
| |
| /** |
| * Validates the given built ydt. |
| */ |
| private void validate1Tree(YdtNode ydtNode) { |
| ydtNode = ydtNode.getFirstChild(); |
| validateLeafContents(ydtNode, "revInteger", "100"); |
| ydtNode = ydtNode.getParent(); |
| ydtNode = ydtNode.getNextSibling(); |
| validateNodeContents(ydtNode, MRV, MERGE); |
| ydtNode = ydtNode.getFirstChild(); |
| validateLeafContents(ydtNode, "revInteger", "2147483647"); |
| |
| ydtNode = ydtNode.getParent(); |
| ydtNode = ydtNode.getNextSibling(); |
| validateNodeContents(ydtNode, MRV, MERGE); |
| ydtNode = ydtNode.getFirstChild(); |
| validateLeafContents(ydtNode, RUI, MINVALUE); |
| ydtNode = ydtNode.getParent(); |
| ydtNode = ydtNode.getNextSibling(); |
| validateNodeContents(ydtNode, MRV, MERGE); |
| ydtNode = ydtNode.getFirstChild(); |
| validateLeafContents(ydtNode, RUI, "1"); |
| ydtNode = ydtNode.getParent(); |
| ydtNode = ydtNode.getNextSibling(); |
| validateNodeContents(ydtNode, MRV, MERGE); |
| ydtNode = ydtNode.getFirstChild(); |
| validateLeafContents(ydtNode, RUI, "2"); |
| ydtNode = ydtNode.getParent(); |
| ydtNode = ydtNode.getNextSibling(); |
| validateNodeContents(ydtNode, MRV, MERGE); |
| ydtNode = ydtNode.getFirstChild(); |
| validateLeafContents(ydtNode, RUI, "10"); |
| ydtNode = ydtNode.getParent(); |
| ydtNode = ydtNode.getNextSibling(); |
| validateNodeContents(ydtNode, MRV, MERGE); |
| ydtNode = ydtNode.getFirstChild(); |
| validateLeafContents(ydtNode, RUI, "20"); |
| ydtNode = ydtNode.getParent(); |
| ydtNode = ydtNode.getNextSibling(); |
| validateNodeContents(ydtNode, MRV, MERGE); |
| ydtNode = ydtNode.getFirstChild(); |
| validateLeafContents(ydtNode, RUI, "100"); |
| ydtNode = ydtNode.getParent(); |
| ydtNode = ydtNode.getNextSibling(); |
| validateNodeContents(ydtNode, MRV, MERGE); |
| ydtNode = ydtNode.getFirstChild(); |
| validateLeafContents(ydtNode, RUI, MAXUINT32); |
| } |
| |
| //TODO negative scenario will be handled later |
| /* |
| Negative scenario |
| |
| wrong type input |
| i. input string instead of integer |
| ii. input string instead of uinteger |
| |
| input out of range |
| i. input for int 8 range -2147483648 to 2147483647 |
| i.1. input -2147483649 |
| i.2. input 2147483648 |
| |
| ii. input for uint 8 range 0 to 4294967295 |
| ii.1. input -2147483649 |
| ii.2. input 4294967296 |
| |
| input out of range parameter |
| if range is 10 to 100 for int |
| i.1. input 9 |
| i.2. input 101 |
| |
| if range is 10 to 100 for uInt |
| i.1. input 9 |
| i.2. input 101 |
| |
| input with multi interval range |
| if range is 10..40 | 50..100 for integer |
| i.1. input 9 |
| i.2. input 41 |
| i.3. input 49 |
| i.4. input 101 |
| |
| if range is 10..40 | 50..100 for uinteger |
| i.1. input 9 |
| i.2. input 41 |
| i.3. input 49 |
| i.4. input 101 |
| |
| input with multi interval range |
| if range is min .. | 10 | 20..max for integer |
| i.1. input -2147483649 |
| i.2. input 4 |
| i.3. input 9 |
| i.4. input 11 |
| i.5. input 19 |
| i.6. input 256 |
| |
| if range is min .. 3 | 10 | 20..max for uinteger |
| i.1. input -2147483649 |
| i.2. input 4 |
| i.3. input 9 |
| i.4. input 11 |
| i.5. input 19 |
| i.6. input 4294967296 |
| |
| */ |
| |
| /** |
| * Tests all the minimum and maximum value's negative scenario's for |
| * signed integer32 data type. |
| */ |
| // @Test |
| // public void negative1Test() throws YdtException { |
| // validateErrMsg("posInt", INT32NS, "integer", SINT32, null); |
| // validateErrMsg("posInt", INT32NS, "127.0", SINT32, null); |
| // validateErrMsg("negInt", INT32NS, "-2147483649", SINT32, null); |
| // validateErrMsg("posInt", INT32NS, "2147483648", SINT32, null); |
| // validateErrMsg(MINIWR, INT32NS, "9", CAPSINT32, null); |
| // validateErrMsg(MAXIWR, INT32NS, "101", CAPSINT32, null); |
| // } |
| // |
| // /** |
| // * Tests all the minimum and maximum value's negative scenario's for |
| // * unsigned integer32 data type. |
| // */ |
| // @Test |
| // public void negative2Test() throws YdtException { |
| // validateErrMsg("maxUInt", INT32NS, "integer", SUINT32, null); |
| // validateErrMsg("maxUInt", INT32NS, "127.0", SUINT32, null); |
| // validateErrMsg("minUInt", INT32NS, "-2147483649", MINVALUE, null); |
| // validateErrMsg("maxUInt", INT32NS, "4294967296", MAXUINT32, null); |
| // validateErrMsg(MINUIWR, INT32NS, "9", CAPSUINT32, null); |
| // validateErrMsg(MAXUIWR, INT32NS, "101", CAPSUINT32, null); |
| // } |
| // |
| // /** |
| // * Tests all possible negative scenario's for signed integer32 data type |
| // * with range "10..40 | 50..100". |
| // */ |
| // @Test |
| // public void negative3Test() throws YdtException { |
| // validateErrMsg("integer", INT32NS, "9", CAPSINT32, MRV); |
| // validateErrMsg("integer", INT32NS, "41", CAPSINT32, MRV); |
| // validateErrMsg("integer", INT32NS, "49", CAPSINT32, MRV); |
| // validateErrMsg("integer", INT32NS, "101", CAPSINT32, MRV); |
| // } |
| // |
| // /** |
| // * Tests all possible negative scenario's for unsigned integer32 data type |
| // * with range "10..40 | 50..100". |
| // */ |
| // @Test |
| // public void negative4Test() throws YdtException { |
| // validateErrMsg("UnInteger", INT32NS, "9", CAPSUINT32, MRV); |
| // validateErrMsg("UnInteger", INT32NS, "41", CAPSUINT32, MRV); |
| // validateErrMsg("UnInteger", INT32NS, "49", CAPSUINT32, MRV); |
| // validateErrMsg("UnInteger", INT32NS, "101", CAPSUINT32, MRV); |
| // } |
| // |
| // /** |
| // * Tests all possible negative scenario's for signed integer32 data type |
| // * with range "min .. 2 | 10 | 20..max". |
| // */ |
| // @Test |
| // public void negative5Test() throws YdtException { |
| // // Multi range validation |
| // validateErrMsg("revInteger", INT32NS, "-2147483649", SINT32, MRV); |
| // validateErrMsg("revInteger", INT32NS, "4", CAPSINT32, MRV); |
| // validateErrMsg("revInteger", INT32NS, "9", CAPSINT32, MRV); |
| // validateErrMsg("revInteger", INT32NS, "11", CAPSINT32, MRV); |
| // validateErrMsg("revInteger", INT32NS, "19", CAPSINT32, MRV); |
| // validateErrMsg("revInteger", INT32NS, "2147483648", SINT32, MRV); |
| // } |
| // |
| // /** |
| // * Tests all possible negative scenario's for unsigned integer32 data type |
| // * with range "min .. 2 | 10 | 20..max". |
| // */ |
| // @Test |
| // public void negative6Test() throws YdtException { |
| // // Multi range validation |
| // validateErrMsg(RUI, INT32NS, "-2147483649", MINVALUE, MRV); |
| // validateErrMsg(RUI, INT32NS, "4", CAPSUINT32, MRV); |
| // validateErrMsg(RUI, INT32NS, "9", CAPSUINT32, MRV); |
| // validateErrMsg(RUI, INT32NS, "11", CAPSUINT32, MRV); |
| // validateErrMsg(RUI, INT32NS, "19", CAPSUINT32, MRV); |
| // validateErrMsg(RUI, INT32NS, "4294967296", MAXUINT32, MRV); |
| // } |
| } |