Committed by
Gerrit Code Review
[ONOS-3892,3895,3882,3883,3896]Unit test of yang container, list, leaf, leaf-list parser
Change-Id: Iae040d9d354e012584db8adc0aa7ff1ea4c099a0
Showing
115 changed files
with
4053 additions
and
0 deletions
1 | +/* | ||
2 | + * Copyright 2016 Open Networking Laboratory | ||
3 | + * | ||
4 | + * Licensed under the Apache License, Version 2.0 (the "License"); | ||
5 | + * you may not use this file except in compliance with the License. | ||
6 | + * You may obtain a copy of the License at | ||
7 | + * | ||
8 | + * http://www.apache.org/licenses/LICENSE-2.0 | ||
9 | + * | ||
10 | + * Unless required by applicable law or agreed to in writing, software | ||
11 | + * distributed under the License is distributed on an "AS IS" BASIS, | ||
12 | + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
13 | + * See the License for the specific language governing permissions and | ||
14 | + * limitations under the License. | ||
15 | + */ | ||
16 | + | ||
17 | +package org.onosproject.yangutils.parser.impl.listeners; | ||
18 | + | ||
19 | +import org.junit.Rule; | ||
20 | +import org.junit.Test; | ||
21 | + | ||
22 | +import org.junit.rules.ExpectedException; | ||
23 | +import org.onosproject.yangutils.datamodel.YangLeaf; | ||
24 | +import org.onosproject.yangutils.datamodel.YangModule; | ||
25 | +import org.onosproject.yangutils.datamodel.YangNode; | ||
26 | +import org.onosproject.yangutils.datamodel.YangNodeType; | ||
27 | +import org.onosproject.yangutils.datamodel.YangDataTypes; | ||
28 | +import org.onosproject.yangutils.datamodel.YangStatusType; | ||
29 | +import org.onosproject.yangutils.datamodel.YangContainer; | ||
30 | +import org.onosproject.yangutils.datamodel.YangList; | ||
31 | +import org.onosproject.yangutils.datamodel.YangLeafList; | ||
32 | +import org.onosproject.yangutils.parser.exceptions.ParserException; | ||
33 | +import org.onosproject.yangutils.parser.impl.YangUtilsParserManager; | ||
34 | + | ||
35 | +import java.io.IOException; | ||
36 | +import java.util.ListIterator; | ||
37 | + | ||
38 | +import static org.hamcrest.MatcherAssert.assertThat; | ||
39 | +import static org.hamcrest.core.Is.is; | ||
40 | + | ||
41 | +/** | ||
42 | + * Test cases for config listener. | ||
43 | + */ | ||
44 | +public class ConfigListenerTest { | ||
45 | + | ||
46 | + @Rule | ||
47 | + public ExpectedException thrown = ExpectedException.none(); | ||
48 | + | ||
49 | + private final YangUtilsParserManager manager = new YangUtilsParserManager(); | ||
50 | + | ||
51 | + /** | ||
52 | + * Checks valid config statement. | ||
53 | + */ | ||
54 | + @Test | ||
55 | + public void processConfigTrue() throws IOException, ParserException { | ||
56 | + | ||
57 | + YangNode node = manager.getDataModel("src/test/resources/ConfigTrue.yang"); | ||
58 | + | ||
59 | + // Check whether the data model tree returned is of type module. | ||
60 | + assertThat((node instanceof YangModule), is(true)); | ||
61 | + | ||
62 | + // Check whether the node type is set properly to module. | ||
63 | + assertThat(node.getNodeType(), is(YangNodeType.MODULE_NODE)); | ||
64 | + | ||
65 | + // Check whether the module name is set correctly. | ||
66 | + YangModule yangNode = (YangModule) node; | ||
67 | + assertThat(yangNode.getName(), is("Test")); | ||
68 | + | ||
69 | + ListIterator<YangLeaf> leafIterator = yangNode.getListOfLeaf().listIterator(); | ||
70 | + YangLeaf leafInfo = leafIterator.next(); | ||
71 | + | ||
72 | + // Check whether the Config value is set correctly. | ||
73 | + assertThat(leafInfo.getLeafName(), is("invalid-interval")); | ||
74 | + assertThat(leafInfo.isConfig(), is(true)); | ||
75 | + } | ||
76 | + | ||
77 | + /** | ||
78 | + * Checks valid config statement. | ||
79 | + */ | ||
80 | + @Test | ||
81 | + public void processConfigFalse() throws IOException, ParserException { | ||
82 | + | ||
83 | + YangNode node = manager.getDataModel("src/test/resources/ConfigFalse.yang"); | ||
84 | + | ||
85 | + // Check whether the data model tree returned is of type module. | ||
86 | + assertThat((node instanceof YangModule), is(true)); | ||
87 | + | ||
88 | + // Check whether the node type is set properly to module. | ||
89 | + assertThat(node.getNodeType(), is(YangNodeType.MODULE_NODE)); | ||
90 | + | ||
91 | + // Check whether the module name is set correctly. | ||
92 | + YangModule yangNode = (YangModule) node; | ||
93 | + assertThat(yangNode.getName(), is("Test")); | ||
94 | + | ||
95 | + ListIterator<YangLeaf> leafIterator = yangNode.getListOfLeaf().listIterator(); | ||
96 | + YangLeaf leafInfo = leafIterator.next(); | ||
97 | + | ||
98 | + // Check whether the Config value is set correctly. | ||
99 | + assertThat(leafInfo.getLeafName(), is("invalid-interval")); | ||
100 | + assertThat(leafInfo.isConfig(), is(false)); | ||
101 | + } | ||
102 | + | ||
103 | + /** | ||
104 | + * Checks invalid config statement and expects parser exception. | ||
105 | + */ | ||
106 | + @Test | ||
107 | + public void processConfigWithoutStatementEnd() throws IOException, ParserException { | ||
108 | + thrown.expect(ParserException.class); | ||
109 | + thrown.expectMessage("missing ';' at '}'"); | ||
110 | + YangNode node = manager.getDataModel("src/test/resources/ConfigWithoutStatementEnd.yang"); | ||
111 | + } | ||
112 | + | ||
113 | + /** | ||
114 | + * Checks invalid config statement and expects parser exception. | ||
115 | + */ | ||
116 | + @Test | ||
117 | + public void processConfigInvalidValue() throws IOException, ParserException { | ||
118 | + thrown.expect(ParserException.class); | ||
119 | + thrown.expectMessage("mismatched input 'invalid' expecting {'false', 'true'}"); | ||
120 | + YangNode node = manager.getDataModel("src/test/resources/ConfigInvalidValue.yang"); | ||
121 | + } | ||
122 | + | ||
123 | + /** | ||
124 | + * Checks invalid config statement and expects parser exception. | ||
125 | + */ | ||
126 | + @Test | ||
127 | + public void processConfigEmptyValue() throws IOException, ParserException { | ||
128 | + thrown.expect(ParserException.class); | ||
129 | + thrown.expectMessage("missing {'false', 'true'} at ';'"); | ||
130 | + YangNode node = manager.getDataModel("src/test/resources/ConfigEmptyValue.yang"); | ||
131 | + } | ||
132 | + | ||
133 | + /** | ||
134 | + * Checks config statement as sub-statement of module. | ||
135 | + */ | ||
136 | + @Test | ||
137 | + public void processModuleSubStatementConfig() throws IOException, ParserException { | ||
138 | + thrown.expect(ParserException.class); | ||
139 | + thrown.expectMessage("mismatched input 'config' expecting {'augment', 'choice', 'contact', 'container'," + | ||
140 | + " 'description', 'extension', 'deviation', 'feature', 'grouping', 'identity', 'import', 'include', " + | ||
141 | + "'leaf', 'leaf-list', 'list', 'namespace', 'notification', 'organization', 'prefix', 'reference'," + | ||
142 | + " 'revision', 'rpc', 'typedef', 'uses', 'yang-version', '}'}"); | ||
143 | + YangNode node = manager.getDataModel("src/test/resources/ModuleSubStatementConfig.yang"); | ||
144 | + } | ||
145 | + | ||
146 | + /** | ||
147 | + * Checks config statement as sub-statement of container. | ||
148 | + */ | ||
149 | + @Test | ||
150 | + public void processContainerSubStatementConfig() throws IOException, ParserException { | ||
151 | + | ||
152 | + YangNode node = manager.getDataModel("src/test/resources/ContainerSubStatementConfig.yang"); | ||
153 | + | ||
154 | + // Check whether the data model tree returned is of type module. | ||
155 | + assertThat((node instanceof YangModule), is(true)); | ||
156 | + | ||
157 | + // Check whether the node type is set properly to module. | ||
158 | + assertThat(node.getNodeType(), is(YangNodeType.MODULE_NODE)); | ||
159 | + | ||
160 | + // Check whether the module name is set correctly. | ||
161 | + YangModule yangNode = (YangModule) node; | ||
162 | + assertThat(yangNode.getName(), is("Test")); | ||
163 | + | ||
164 | + // Check whether the config value is set correctly. | ||
165 | + YangContainer container = (YangContainer) yangNode.getChild(); | ||
166 | + assertThat(container.getName(), is("valid")); | ||
167 | + assertThat(container.isConfig(), is(true)); | ||
168 | + | ||
169 | + // Check whether leaf properties as set correctly. | ||
170 | + ListIterator<YangLeaf> leafIterator = container.getListOfLeaf().listIterator(); | ||
171 | + YangLeaf leafInfo = leafIterator.next(); | ||
172 | + | ||
173 | + assertThat(leafInfo.getLeafName(), is("invalid-interval")); | ||
174 | + assertThat(leafInfo.getDataType().getDataTypeName(), is("\"uint16\"")); | ||
175 | + assertThat(leafInfo.getDataType().getDataType(), is(YangDataTypes.UINT16)); | ||
176 | + assertThat(leafInfo.getUnits(), is("\"seconds\"")); | ||
177 | + assertThat(leafInfo.getDescription(), is("\"Interval before a route is declared invalid\"")); | ||
178 | + assertThat(leafInfo.isMandatory(), is(true)); | ||
179 | + assertThat(leafInfo.getStatus(), is(YangStatusType.CURRENT)); | ||
180 | + assertThat(leafInfo.getReference(), is("\"RFC 6020\"")); | ||
181 | + } | ||
182 | + | ||
183 | + /** | ||
184 | + * Checks config statement as sub-statement of list. | ||
185 | + */ | ||
186 | + @Test | ||
187 | + public void processListSubStatementConfig() throws IOException, ParserException { | ||
188 | + | ||
189 | + YangNode node = manager.getDataModel("src/test/resources/ListSubStatementConfig.yang"); | ||
190 | + | ||
191 | + assertThat((node instanceof YangModule), is(true)); | ||
192 | + | ||
193 | + // Check whether the node type is set properly to module. | ||
194 | + assertThat(node.getNodeType(), is(YangNodeType.MODULE_NODE)); | ||
195 | + | ||
196 | + // Check whether the module name is set correctly. | ||
197 | + YangModule yangNode = (YangModule) node; | ||
198 | + assertThat(yangNode.getName(), is("Test")); | ||
199 | + | ||
200 | + // Check whether the list is child of module and config value is set. | ||
201 | + YangList yangList = (YangList) yangNode.getChild(); | ||
202 | + assertThat(yangList.getName(), is("valid")); | ||
203 | + assertThat(yangList.isConfig(), is(true)); | ||
204 | + | ||
205 | + // Check whether leaf properties as set correctly. | ||
206 | + ListIterator<YangLeaf> leafIterator = yangList.getListOfLeaf().listIterator(); | ||
207 | + YangLeaf leafInfo = leafIterator.next(); | ||
208 | + | ||
209 | + assertThat(leafInfo.getLeafName(), is("invalid-interval")); | ||
210 | + assertThat(leafInfo.getDataType().getDataTypeName(), is("\"uint16\"")); | ||
211 | + assertThat(leafInfo.getDataType().getDataType(), is(YangDataTypes.UINT16)); | ||
212 | + assertThat(leafInfo.getUnits(), is("\"seconds\"")); | ||
213 | + assertThat(leafInfo.getDescription(), is("\"Interval before a route is declared invalid\"")); | ||
214 | + assertThat(leafInfo.isMandatory(), is(true)); | ||
215 | + assertThat(leafInfo.getStatus(), is(YangStatusType.CURRENT)); | ||
216 | + assertThat(leafInfo.getReference(), is("\"RFC 6020\"")); | ||
217 | + } | ||
218 | + | ||
219 | + /** | ||
220 | + * Checks valid config statement as sub-statement of leaf-list. | ||
221 | + */ | ||
222 | + @Test | ||
223 | + public void processLeafListSubStatementConfig() throws IOException, ParserException { | ||
224 | + | ||
225 | + YangNode node = manager.getDataModel("src/test/resources/LeafListSubStatementConfig.yang"); | ||
226 | + | ||
227 | + // Check whether the data model tree returned is of type module. | ||
228 | + assertThat((node instanceof YangModule), is(true)); | ||
229 | + | ||
230 | + // Check whether the node type is set properly to module. | ||
231 | + assertThat(node.getNodeType(), is(YangNodeType.MODULE_NODE)); | ||
232 | + | ||
233 | + // Check whether the module name is set correctly. | ||
234 | + YangModule yangNode = (YangModule) node; | ||
235 | + assertThat(yangNode.getName(), is("Test")); | ||
236 | + | ||
237 | + ListIterator<YangLeafList> leafListIterator = yangNode.getListOfLeafList().listIterator(); | ||
238 | + YangLeafList leafListInfo = leafListIterator.next(); | ||
239 | + | ||
240 | + // Check whether config value is set correctly. | ||
241 | + assertThat(leafListInfo.getLeafName(), is("invalid-interval")); | ||
242 | + assertThat(leafListInfo.isConfig(), is(true)); | ||
243 | + } | ||
244 | +} | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
1 | +/* | ||
2 | + * Copyright 2016 Open Networking Laboratory | ||
3 | + * | ||
4 | + * Licensed under the Apache License, Version 2.0 (the "License"); | ||
5 | + * you may not use this file except in compliance with the License. | ||
6 | + * You may obtain a copy of the License at | ||
7 | + * | ||
8 | + * http://www.apache.org/licenses/LICENSE-2.0 | ||
9 | + * | ||
10 | + * Unless required by applicable law or agreed to in writing, software | ||
11 | + * distributed under the License is distributed on an "AS IS" BASIS, | ||
12 | + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
13 | + * See the License for the specific language governing permissions and | ||
14 | + * limitations under the License. | ||
15 | + */ | ||
16 | + | ||
17 | +package org.onosproject.yangutils.parser.impl.listeners; | ||
18 | + | ||
19 | +import org.junit.Rule; | ||
20 | +import org.junit.Test; | ||
21 | + | ||
22 | +import org.junit.rules.ExpectedException; | ||
23 | +import org.onosproject.yangutils.datamodel.YangLeaf; | ||
24 | +import org.onosproject.yangutils.datamodel.YangModule; | ||
25 | +import org.onosproject.yangutils.datamodel.YangNode; | ||
26 | +import org.onosproject.yangutils.datamodel.YangNodeType; | ||
27 | +import org.onosproject.yangutils.datamodel.YangDataTypes; | ||
28 | +import org.onosproject.yangutils.datamodel.YangStatusType; | ||
29 | +import org.onosproject.yangutils.datamodel.YangContainer; | ||
30 | +import org.onosproject.yangutils.datamodel.YangList; | ||
31 | +import org.onosproject.yangutils.parser.exceptions.ParserException; | ||
32 | +import org.onosproject.yangutils.parser.impl.YangUtilsParserManager; | ||
33 | + | ||
34 | +import java.io.IOException; | ||
35 | +import java.util.ListIterator; | ||
36 | + | ||
37 | +import static org.hamcrest.MatcherAssert.assertThat; | ||
38 | +import static org.hamcrest.core.Is.is; | ||
39 | + | ||
40 | +/** | ||
41 | + * Test cases for testing container listener. | ||
42 | + */ | ||
43 | +public class ContainerListenerTest { | ||
44 | + | ||
45 | + @Rule | ||
46 | + public ExpectedException thrown = ExpectedException.none(); | ||
47 | + | ||
48 | + private final YangUtilsParserManager manager = new YangUtilsParserManager(); | ||
49 | + | ||
50 | + /** | ||
51 | + * Checks container statement as sub-statement of module. | ||
52 | + */ | ||
53 | + @Test | ||
54 | + public void processModuleSubStatementContainer() throws IOException, ParserException { | ||
55 | + | ||
56 | + YangNode node = manager.getDataModel("src/test/resources/ModuleSubStatementContainer.yang"); | ||
57 | + | ||
58 | + assertThat((node instanceof YangModule), is(true)); | ||
59 | + | ||
60 | + // Check whether the node type is set properly to module. | ||
61 | + assertThat(node.getNodeType(), is(YangNodeType.MODULE_NODE)); | ||
62 | + | ||
63 | + // Check whether the module name is set correctly. | ||
64 | + YangModule yangNode = (YangModule) node; | ||
65 | + assertThat(yangNode.getName(), is("Test")); | ||
66 | + | ||
67 | + // Check whether the container is child of module | ||
68 | + YangContainer yangContainer = (YangContainer) yangNode.getChild(); | ||
69 | + assertThat(yangContainer.getName(), is("valid")); | ||
70 | + } | ||
71 | + | ||
72 | + /** | ||
73 | + * Checks container statement as sub-statement of container. | ||
74 | + */ | ||
75 | + @Test | ||
76 | + public void processContainerSubStatementContainer() throws IOException, ParserException { | ||
77 | + | ||
78 | + YangNode node = manager.getDataModel("src/test/resources/ContainerSubStatementContainer.yang"); | ||
79 | + | ||
80 | + assertThat((node instanceof YangModule), is(true)); | ||
81 | + | ||
82 | + // Check whether the node type is set properly to module. | ||
83 | + assertThat(node.getNodeType(), is(YangNodeType.MODULE_NODE)); | ||
84 | + | ||
85 | + // Check whether the module name is set correctly. | ||
86 | + YangModule yangNode = (YangModule) node; | ||
87 | + assertThat(yangNode.getName(), is("Test")); | ||
88 | + | ||
89 | + // Check whether the container is child of module | ||
90 | + YangContainer yangContainer = (YangContainer) yangNode.getChild(); | ||
91 | + assertThat(yangContainer.getName(), is("ospf")); | ||
92 | + | ||
93 | + // Check whether the container is child of container | ||
94 | + YangContainer yangContainer1 = (YangContainer) yangContainer.getChild(); | ||
95 | + assertThat(yangContainer1.getName(), is("valid")); | ||
96 | + } | ||
97 | + | ||
98 | + /** | ||
99 | + * Checks container statement as sub-statement of list. | ||
100 | + */ | ||
101 | + @Test | ||
102 | + public void processListSubStatementContainer() throws IOException, ParserException { | ||
103 | + | ||
104 | + YangNode node = manager.getDataModel("src/test/resources/ListSubStatementContainer.yang"); | ||
105 | + | ||
106 | + assertThat((node instanceof YangModule), is(true)); | ||
107 | + | ||
108 | + // Check whether the node type is set properly to module. | ||
109 | + assertThat(node.getNodeType(), is(YangNodeType.MODULE_NODE)); | ||
110 | + | ||
111 | + // Check whether the module name is set correctly. | ||
112 | + YangModule yangNode = (YangModule) node; | ||
113 | + assertThat(yangNode.getName(), is("Test")); | ||
114 | + | ||
115 | + // Check whether the list is child of module | ||
116 | + YangList yangList1 = (YangList) yangNode.getChild(); | ||
117 | + assertThat(yangList1.getName(), is("ospf")); | ||
118 | + | ||
119 | + ListIterator<String> keyList = yangList1.getKeyList().listIterator(); | ||
120 | + assertThat(keyList.next(), is("process-id")); | ||
121 | + | ||
122 | + // Check whether the list is child of list | ||
123 | + YangContainer yangContainer = (YangContainer) yangList1.getChild(); | ||
124 | + assertThat(yangContainer.getName(), is("interface")); | ||
125 | + } | ||
126 | + | ||
127 | + /** | ||
128 | + * Checks container with all its sub-statements. | ||
129 | + */ | ||
130 | + @Test | ||
131 | + public void processContainerSubStatements() throws IOException, ParserException { | ||
132 | + | ||
133 | + YangNode node = manager.getDataModel("src/test/resources/ContainerSubStatements.yang"); | ||
134 | + | ||
135 | + assertThat((node instanceof YangModule), is(true)); | ||
136 | + | ||
137 | + // Check whether the node type is set properly to module. | ||
138 | + assertThat(node.getNodeType(), is(YangNodeType.MODULE_NODE)); | ||
139 | + | ||
140 | + // Check whether the module name is set correctly. | ||
141 | + YangModule yangNode = (YangModule) node; | ||
142 | + assertThat(yangNode.getName(), is("Test")); | ||
143 | + | ||
144 | + // Check whether the container is child of module | ||
145 | + YangContainer yangContainer = (YangContainer) yangNode.getChild(); | ||
146 | + | ||
147 | + // Check whether container properties as set correctly. | ||
148 | + assertThat(yangContainer.getName(), is("ospf")); | ||
149 | + | ||
150 | + assertThat(yangContainer.isConfig(), is(true)); | ||
151 | + assertThat(yangContainer.getPresence(), is("\"ospf logs\"")); | ||
152 | + assertThat(yangContainer.getDescription(), is("\"container description\"")); | ||
153 | + assertThat(yangContainer.getStatus(), is(YangStatusType.CURRENT)); | ||
154 | + assertThat(yangContainer.getReference(), is("\"container reference\"")); | ||
155 | + | ||
156 | + // Check whether leaf properties as set correctly. | ||
157 | + ListIterator<YangLeaf> leafIterator = yangContainer.getListOfLeaf().listIterator(); | ||
158 | + YangLeaf leafInfo = leafIterator.next(); | ||
159 | + | ||
160 | + assertThat(leafInfo.getLeafName(), is("invalid-interval")); | ||
161 | + assertThat(leafInfo.getDataType().getDataTypeName(), is("\"uint16\"")); | ||
162 | + assertThat(leafInfo.getDataType().getDataType(), is(YangDataTypes.UINT16)); | ||
163 | + assertThat(leafInfo.getUnits(), is("\"seconds\"")); | ||
164 | + assertThat(leafInfo.getStatus(), is(YangStatusType.CURRENT)); | ||
165 | + assertThat(leafInfo.getReference(), is("\"RFC 6020\"")); | ||
166 | + } | ||
167 | + | ||
168 | + /** | ||
169 | + * Checks cardinality of sub-statements of container. | ||
170 | + */ | ||
171 | + @Test | ||
172 | + public void processContainerSubStatementCardinality() throws IOException, ParserException { | ||
173 | + thrown.expect(ParserException.class); | ||
174 | + thrown.expectMessage("Internal parser error detected: Invalid cardinality in reference before processing."); | ||
175 | + YangNode node = manager.getDataModel("src/test/resources/ContainerSubStatementCardinality.yang"); | ||
176 | + } | ||
177 | + | ||
178 | + /** | ||
179 | + * Checks container as root node. | ||
180 | + */ | ||
181 | + @Test | ||
182 | + public void processContainerRootNode() throws IOException, ParserException { | ||
183 | + thrown.expect(ParserException.class); | ||
184 | + thrown.expectMessage("no viable alternative at input 'container'"); | ||
185 | + YangNode node = manager.getDataModel("src/test/resources/ContainerRootNode.yang"); | ||
186 | + } | ||
187 | + | ||
188 | + /** | ||
189 | + * Checks invalid identifier for container statement. | ||
190 | + */ | ||
191 | + @Test | ||
192 | + public void processContainerInvalidIdentifier() throws IOException, ParserException { | ||
193 | + thrown.expect(ParserException.class); | ||
194 | + thrown.expectMessage("mismatched input '1valid' expecting IDENTIFIER"); | ||
195 | + YangNode node = manager.getDataModel("src/test/resources/ContainerInvalidIdentifier.yang"); | ||
196 | + } | ||
197 | +} | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
1 | +/* | ||
2 | + * Copyright 2016 Open Networking Laboratory | ||
3 | + * | ||
4 | + * Licensed under the Apache License, Version 2.0 (the "License"); | ||
5 | + * you may not use this file except in compliance with the License. | ||
6 | + * You may obtain a copy of the License at | ||
7 | + * | ||
8 | + * http://www.apache.org/licenses/LICENSE-2.0 | ||
9 | + * | ||
10 | + * Unless required by applicable law or agreed to in writing, software | ||
11 | + * distributed under the License is distributed on an "AS IS" BASIS, | ||
12 | + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
13 | + * See the License for the specific language governing permissions and | ||
14 | + * limitations under the License. | ||
15 | + */ | ||
16 | + | ||
17 | +package org.onosproject.yangutils.parser.impl.listeners; | ||
18 | + | ||
19 | +import org.junit.Rule; | ||
20 | +import org.junit.Test; | ||
21 | + | ||
22 | +import org.junit.rules.ExpectedException; | ||
23 | +import org.onosproject.yangutils.datamodel.YangLeaf; | ||
24 | +import org.onosproject.yangutils.datamodel.YangModule; | ||
25 | +import org.onosproject.yangutils.datamodel.YangNode; | ||
26 | +import org.onosproject.yangutils.datamodel.YangNodeType; | ||
27 | +import org.onosproject.yangutils.datamodel.YangDataTypes; | ||
28 | +import org.onosproject.yangutils.datamodel.YangStatusType; | ||
29 | +import org.onosproject.yangutils.datamodel.YangContainer; | ||
30 | +import org.onosproject.yangutils.datamodel.YangList; | ||
31 | +import org.onosproject.yangutils.datamodel.YangLeafList; | ||
32 | +import org.onosproject.yangutils.parser.exceptions.ParserException; | ||
33 | +import org.onosproject.yangutils.parser.impl.YangUtilsParserManager; | ||
34 | + | ||
35 | +import java.io.IOException; | ||
36 | +import java.util.ListIterator; | ||
37 | + | ||
38 | +import static org.hamcrest.MatcherAssert.assertThat; | ||
39 | +import static org.hamcrest.core.Is.is; | ||
40 | + | ||
41 | +/** | ||
42 | + * Test cases for description listener. | ||
43 | + */ | ||
44 | +public class DescriptionListenerTest { | ||
45 | + | ||
46 | + @Rule | ||
47 | + public ExpectedException thrown = ExpectedException.none(); | ||
48 | + | ||
49 | + private final YangUtilsParserManager manager = new YangUtilsParserManager(); | ||
50 | + | ||
51 | + /** | ||
52 | + * Checks valid description statement. | ||
53 | + */ | ||
54 | + @Test | ||
55 | + public void processDescriptionValidStatement() throws IOException, ParserException { | ||
56 | + | ||
57 | + YangNode node = manager.getDataModel("src/test/resources/DescriptionValidStatement.yang"); | ||
58 | + | ||
59 | + // Check whether the data model tree returned is of type module. | ||
60 | + assertThat((node instanceof YangModule), is(true)); | ||
61 | + | ||
62 | + // Check whether the node type is set properly to module. | ||
63 | + assertThat(node.getNodeType(), is(YangNodeType.MODULE_NODE)); | ||
64 | + | ||
65 | + // Check whether the module name is set correctly. | ||
66 | + YangModule yangNode = (YangModule) node; | ||
67 | + assertThat(yangNode.getName(), is("Test")); | ||
68 | + | ||
69 | + ListIterator<YangLeaf> leafIterator = yangNode.getListOfLeaf().listIterator(); | ||
70 | + YangLeaf leafInfo = leafIterator.next(); | ||
71 | + | ||
72 | + // Check whether the description is set correctly. | ||
73 | + assertThat(leafInfo.getLeafName(), is("invalid-interval")); | ||
74 | + assertThat(leafInfo.getDescription(), is("\"Interval before a route is declared invalid\"")); | ||
75 | + } | ||
76 | + | ||
77 | + /** | ||
78 | + * Checks whether exception is thrown for invalid description statement. | ||
79 | + */ | ||
80 | + @Test | ||
81 | + public void processDescriptionWithoutStatementEnd() throws IOException, ParserException { | ||
82 | + thrown.expect(ParserException.class); | ||
83 | + thrown.expectMessage("extraneous input '}' expecting {';', '+'}"); | ||
84 | + YangNode node = manager.getDataModel("src/test/resources/DescriptionWithoutStatementEnd.yang"); | ||
85 | + } | ||
86 | + | ||
87 | + /** | ||
88 | + * Checks valid description statement as sub-statement of module. | ||
89 | + */ | ||
90 | + @Test | ||
91 | + public void processModuleSubStatementDescription() throws IOException, ParserException { | ||
92 | + | ||
93 | + YangNode node = manager.getDataModel("src/test/resources/ModuleSubStatementDescription.yang"); | ||
94 | + | ||
95 | + // Check whether the data model tree returned is of type module. | ||
96 | + assertThat((node instanceof YangModule), is(true)); | ||
97 | + | ||
98 | + // Check whether the node type is set properly to module. | ||
99 | + assertThat(node.getNodeType(), is(YangNodeType.MODULE_NODE)); | ||
100 | + | ||
101 | + // Check whether the module name is set correctly. | ||
102 | + YangModule yangNode = (YangModule) node; | ||
103 | + assertThat(yangNode.getName(), is("Test")); | ||
104 | + | ||
105 | + // Check whether the description is set correctly. | ||
106 | + assertThat(yangNode.getDescription(), is("\"Interval before a route is declared invalid\"")); | ||
107 | + } | ||
108 | + | ||
109 | + /** | ||
110 | + * Checks valid description statement as sub-statement of module. | ||
111 | + */ | ||
112 | + @Test | ||
113 | + public void processDescriptionEmptyStatement() throws IOException, ParserException { | ||
114 | + | ||
115 | + YangNode node = manager.getDataModel("src/test/resources/DescriptionEmptyStatement.yang"); | ||
116 | + | ||
117 | + // Check whether the data model tree returned is of type module. | ||
118 | + assertThat((node instanceof YangModule), is(true)); | ||
119 | + | ||
120 | + // Check whether the node type is set properly to module. | ||
121 | + assertThat(node.getNodeType(), is(YangNodeType.MODULE_NODE)); | ||
122 | + | ||
123 | + // Check whether the module name is set correctly. | ||
124 | + YangModule yangNode = (YangModule) node; | ||
125 | + assertThat(yangNode.getName(), is("Test")); | ||
126 | + | ||
127 | + // Check whether the description is set correctly. | ||
128 | + assertThat(yangNode.getDescription(), is("\"\"")); | ||
129 | + } | ||
130 | + | ||
131 | + /** | ||
132 | + * Checks valid description statement as sub-statement of revision. | ||
133 | + */ | ||
134 | + @Test | ||
135 | + public void processRevisionSubStatementRevision() throws IOException, ParserException { | ||
136 | + | ||
137 | + YangNode node = manager.getDataModel("src/test/resources/RevisionSubStatementRevision.yang"); | ||
138 | + | ||
139 | + // Check whether the data model tree returned is of type module. | ||
140 | + assertThat((node instanceof YangModule), is(true)); | ||
141 | + | ||
142 | + // Check whether the node type is set properly to module. | ||
143 | + assertThat(node.getNodeType(), is(YangNodeType.MODULE_NODE)); | ||
144 | + | ||
145 | + // Check whether the module name is set correctly. | ||
146 | + YangModule yangNode = (YangModule) node; | ||
147 | + assertThat(yangNode.getName(), is("Test")); | ||
148 | + | ||
149 | + // Check whether the description is set correctly. | ||
150 | + assertThat(yangNode.getDescription(), is("\"module description\"")); | ||
151 | + assertThat(yangNode.getRevision().getDescription(), is("\"revision description\"")); | ||
152 | + } | ||
153 | + | ||
154 | + /** | ||
155 | + * Checks description statement as sub-statement of container. | ||
156 | + */ | ||
157 | + @Test | ||
158 | + public void processContainerSubStatementDescription() throws IOException, ParserException { | ||
159 | + | ||
160 | + YangNode node = manager.getDataModel("src/test/resources/ContainerSubStatementDescription.yang"); | ||
161 | + | ||
162 | + // Check whether the data model tree returned is of type module. | ||
163 | + assertThat((node instanceof YangModule), is(true)); | ||
164 | + | ||
165 | + // Check whether the node type is set properly to module. | ||
166 | + assertThat(node.getNodeType(), is(YangNodeType.MODULE_NODE)); | ||
167 | + | ||
168 | + // Check whether the module name is set correctly. | ||
169 | + YangModule yangNode = (YangModule) node; | ||
170 | + assertThat(yangNode.getName(), is("Test")); | ||
171 | + | ||
172 | + // Check whether the description value is set correctly. | ||
173 | + YangContainer container = (YangContainer) yangNode.getChild(); | ||
174 | + assertThat(container.getName(), is("valid")); | ||
175 | + assertThat(container.getDescription(), is("\"container description\"")); | ||
176 | + | ||
177 | + // Check whether leaf properties as set correctly. | ||
178 | + ListIterator<YangLeaf> leafIterator = container.getListOfLeaf().listIterator(); | ||
179 | + YangLeaf leafInfo = leafIterator.next(); | ||
180 | + | ||
181 | + assertThat(leafInfo.getLeafName(), is("invalid-interval")); | ||
182 | + assertThat(leafInfo.getDataType().getDataTypeName(), is("\"uint16\"")); | ||
183 | + assertThat(leafInfo.getDataType().getDataType(), is(YangDataTypes.UINT16)); | ||
184 | + assertThat(leafInfo.getUnits(), is("\"seconds\"")); | ||
185 | + assertThat(leafInfo.getDescription(), is("\"Interval before a route is declared invalid\"")); | ||
186 | + assertThat(leafInfo.isMandatory(), is(true)); | ||
187 | + assertThat(leafInfo.getStatus(), is(YangStatusType.CURRENT)); | ||
188 | + assertThat(leafInfo.getReference(), is("\"RFC 6020\"")); | ||
189 | + } | ||
190 | + | ||
191 | + /** | ||
192 | + * Checks description statement as sub-statement of list. | ||
193 | + */ | ||
194 | + @Test | ||
195 | + public void processListSubStatementDescription() throws IOException, ParserException { | ||
196 | + | ||
197 | + YangNode node = manager.getDataModel("src/test/resources/ListSubStatementDescription.yang"); | ||
198 | + | ||
199 | + assertThat((node instanceof YangModule), is(true)); | ||
200 | + | ||
201 | + // Check whether the node type is set properly to module. | ||
202 | + assertThat(node.getNodeType(), is(YangNodeType.MODULE_NODE)); | ||
203 | + | ||
204 | + // Check whether the module name is set correctly. | ||
205 | + YangModule yangNode = (YangModule) node; | ||
206 | + assertThat(yangNode.getName(), is("Test")); | ||
207 | + | ||
208 | + // Check whether the list is child of module and description value is set correctly. | ||
209 | + YangList yangList = (YangList) yangNode.getChild(); | ||
210 | + assertThat(yangList.getName(), is("valid")); | ||
211 | + assertThat(yangList.isConfig(), is(true)); | ||
212 | + assertThat(yangList.getDescription(), is("\"list description\"")); | ||
213 | + | ||
214 | + // Check whether leaf properties as set correctly. | ||
215 | + ListIterator<YangLeaf> leafIterator = yangList.getListOfLeaf().listIterator(); | ||
216 | + YangLeaf leafInfo = leafIterator.next(); | ||
217 | + | ||
218 | + assertThat(leafInfo.getLeafName(), is("invalid-interval")); | ||
219 | + assertThat(leafInfo.getDataType().getDataTypeName(), is("\"uint16\"")); | ||
220 | + assertThat(leafInfo.getDataType().getDataType(), is(YangDataTypes.UINT16)); | ||
221 | + assertThat(leafInfo.getUnits(), is("\"seconds\"")); | ||
222 | + assertThat(leafInfo.getDescription(), is("\"Interval before a route is declared invalid\"")); | ||
223 | + assertThat(leafInfo.isMandatory(), is(true)); | ||
224 | + assertThat(leafInfo.getStatus(), is(YangStatusType.CURRENT)); | ||
225 | + assertThat(leafInfo.getReference(), is("\"RFC 6020\"")); | ||
226 | + } | ||
227 | + | ||
228 | + /** | ||
229 | + * Checks valid description statement as sub-statement of leaf-list. | ||
230 | + */ | ||
231 | + @Test | ||
232 | + public void processLeafListSubStatementDescription() throws IOException, ParserException { | ||
233 | + | ||
234 | + YangNode node = manager.getDataModel("src/test/resources/LeafListSubStatementDescription.yang"); | ||
235 | + | ||
236 | + // Check whether the data model tree returned is of type module. | ||
237 | + assertThat((node instanceof YangModule), is(true)); | ||
238 | + | ||
239 | + // Check whether the node type is set properly to module. | ||
240 | + assertThat(node.getNodeType(), is(YangNodeType.MODULE_NODE)); | ||
241 | + | ||
242 | + // Check whether the module name is set correctly. | ||
243 | + YangModule yangNode = (YangModule) node; | ||
244 | + assertThat(yangNode.getName(), is("Test")); | ||
245 | + | ||
246 | + ListIterator<YangLeafList> leafListIterator = yangNode.getListOfLeafList().listIterator(); | ||
247 | + YangLeafList leafListInfo = leafListIterator.next(); | ||
248 | + | ||
249 | + // Check whether description value is set correctly. | ||
250 | + assertThat(leafListInfo.getLeafName(), is("invalid-interval")); | ||
251 | + assertThat(leafListInfo.getDescription(), is("\"Interval before a route is declared invalid\"")); | ||
252 | + } | ||
253 | +} | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
utils/yangutils/src/test/java/org/onosproject/yangutils/parser/impl/listeners/KeyListenerTest.java
0 → 100644
1 | +/* | ||
2 | + * Copyright 2016 Open Networking Laboratory | ||
3 | + * | ||
4 | + * Licensed under the Apache License, Version 2.0 (the "License"); | ||
5 | + * you may not use this file except in compliance with the License. | ||
6 | + * You may obtain a copy of the License at | ||
7 | + * | ||
8 | + * http://www.apache.org/licenses/LICENSE-2.0 | ||
9 | + * | ||
10 | + * Unless required by applicable law or agreed to in writing, software | ||
11 | + * distributed under the License is distributed on an "AS IS" BASIS, | ||
12 | + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
13 | + * See the License for the specific language governing permissions and | ||
14 | + * limitations under the License. | ||
15 | + */ | ||
16 | + | ||
17 | +package org.onosproject.yangutils.parser.impl.listeners; | ||
18 | + | ||
19 | +import org.junit.Rule; | ||
20 | +import org.junit.Test; | ||
21 | + | ||
22 | +import org.junit.rules.ExpectedException; | ||
23 | +import org.onosproject.yangutils.datamodel.YangModule; | ||
24 | +import org.onosproject.yangutils.datamodel.YangNode; | ||
25 | +import org.onosproject.yangutils.datamodel.YangNodeType; | ||
26 | +import org.onosproject.yangutils.datamodel.YangList; | ||
27 | +import org.onosproject.yangutils.parser.exceptions.ParserException; | ||
28 | +import org.onosproject.yangutils.parser.impl.YangUtilsParserManager; | ||
29 | + | ||
30 | +import java.io.IOException; | ||
31 | +import java.util.List; | ||
32 | +import java.util.ListIterator; | ||
33 | + | ||
34 | +import static org.hamcrest.MatcherAssert.assertThat; | ||
35 | +import static org.hamcrest.core.Is.is; | ||
36 | + | ||
37 | +/** | ||
38 | + * Test cases for key listener. | ||
39 | + */ | ||
40 | +public class KeyListenerTest { | ||
41 | + | ||
42 | + @Rule | ||
43 | + public ExpectedException thrown = ExpectedException.none(); | ||
44 | + | ||
45 | + private final YangUtilsParserManager manager = new YangUtilsParserManager(); | ||
46 | + | ||
47 | + /** | ||
48 | + * Checks key statement as sub-statement of list. | ||
49 | + */ | ||
50 | + @Test | ||
51 | + public void processListSubStatementKey() throws IOException, ParserException { | ||
52 | + | ||
53 | + YangNode node = manager.getDataModel("src/test/resources/ListSubStatementKey.yang"); | ||
54 | + | ||
55 | + assertThat((node instanceof YangModule), is(true)); | ||
56 | + | ||
57 | + // Check whether the node type is set properly to module. | ||
58 | + assertThat(node.getNodeType(), is(YangNodeType.MODULE_NODE)); | ||
59 | + | ||
60 | + // Check whether the module name is set correctly. | ||
61 | + YangModule yangNode = (YangModule) node; | ||
62 | + assertThat(yangNode.getName(), is("Test")); | ||
63 | + | ||
64 | + // Check whether the list is child of module | ||
65 | + YangList yangList = (YangList) yangNode.getChild(); | ||
66 | + assertThat(yangList.getName(), is("valid")); | ||
67 | + | ||
68 | + ListIterator<String> keyList = yangList.getKeyList().listIterator(); | ||
69 | + assertThat(keyList.next(), is("invalid-interval")); | ||
70 | + } | ||
71 | + | ||
72 | + /** | ||
73 | + * Check multiple key values. | ||
74 | + */ | ||
75 | + @Test | ||
76 | + public void processMultipleKeyValues() throws IOException, ParserException { | ||
77 | + | ||
78 | + YangNode node = manager.getDataModel("src/test/resources/MultipleKeyValues.yang"); | ||
79 | + | ||
80 | + assertThat((node instanceof YangModule), is(true)); | ||
81 | + | ||
82 | + // Check whether the node type is set properly to module. | ||
83 | + assertThat(node.getNodeType(), is(YangNodeType.MODULE_NODE)); | ||
84 | + | ||
85 | + // Check whether the module name is set correctly. | ||
86 | + YangModule yangNode = (YangModule) node; | ||
87 | + assertThat(yangNode.getName(), is("Test")); | ||
88 | + | ||
89 | + // Check whether the list is child of module | ||
90 | + YangList yangList = (YangList) yangNode.getChild(); | ||
91 | + assertThat(yangList.getName(), is("valid")); | ||
92 | + | ||
93 | + List<String> keyList = yangList.getKeyList(); | ||
94 | + assertThat(keyList.contains("ospf"), is(true)); | ||
95 | + assertThat(keyList.contains("isis"), is(true)); | ||
96 | + } | ||
97 | + | ||
98 | + /** | ||
99 | + * Checks key statement without statement end. | ||
100 | + */ | ||
101 | + @Test | ||
102 | + public void processKeyWithoutStatementEnd() throws IOException, ParserException { | ||
103 | + thrown.expect(ParserException.class); | ||
104 | + thrown.expectMessage("mismatched input 'leaf' expecting {';', '+'}"); | ||
105 | + YangNode node = manager.getDataModel("src/test/resources/KeyWithoutStatementEnd.yang"); | ||
106 | + } | ||
107 | +} | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
1 | +/* | ||
2 | + * Copyright 2016 Open Networking Laboratory | ||
3 | + * | ||
4 | + * Licensed under the Apache License, Version 2.0 (the "License"); | ||
5 | + * you may not use this file except in compliance with the License. | ||
6 | + * You may obtain a copy of the License at | ||
7 | + * | ||
8 | + * http://www.apache.org/licenses/LICENSE-2.0 | ||
9 | + * | ||
10 | + * Unless required by applicable law or agreed to in writing, software | ||
11 | + * distributed under the License is distributed on an "AS IS" BASIS, | ||
12 | + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
13 | + * See the License for the specific language governing permissions and | ||
14 | + * limitations under the License. | ||
15 | + */ | ||
16 | + | ||
17 | +package org.onosproject.yangutils.parser.impl.listeners; | ||
18 | + | ||
19 | +import org.junit.Rule; | ||
20 | +import org.junit.Test; | ||
21 | + | ||
22 | +import org.junit.rules.ExpectedException; | ||
23 | +import org.onosproject.yangutils.datamodel.YangLeafList; | ||
24 | +import org.onosproject.yangutils.datamodel.YangModule; | ||
25 | +import org.onosproject.yangutils.datamodel.YangNode; | ||
26 | +import org.onosproject.yangutils.datamodel.YangNodeType; | ||
27 | +import org.onosproject.yangutils.datamodel.YangDataTypes; | ||
28 | +import org.onosproject.yangutils.datamodel.YangStatusType; | ||
29 | +import org.onosproject.yangutils.datamodel.YangContainer; | ||
30 | +import org.onosproject.yangutils.datamodel.YangList; | ||
31 | +import org.onosproject.yangutils.parser.exceptions.ParserException; | ||
32 | +import org.onosproject.yangutils.parser.impl.YangUtilsParserManager; | ||
33 | + | ||
34 | +import java.io.IOException; | ||
35 | +import java.util.ListIterator; | ||
36 | + | ||
37 | +import static org.hamcrest.MatcherAssert.assertThat; | ||
38 | +import static org.hamcrest.core.Is.is; | ||
39 | + | ||
40 | +/** | ||
41 | + * Test cases for testing leaf-list listener. | ||
42 | + */ | ||
43 | +public class LeafListListenerTest { | ||
44 | + | ||
45 | + @Rule | ||
46 | + public ExpectedException thrown = ExpectedException.none(); | ||
47 | + | ||
48 | + private final YangUtilsParserManager manager = new YangUtilsParserManager(); | ||
49 | + | ||
50 | + /** | ||
51 | + * Checks all the values of leaf-list sub-statements are set | ||
52 | + * correctly. | ||
53 | + */ | ||
54 | + @Test | ||
55 | + public void processLeafListSubStatements() throws IOException, ParserException { | ||
56 | + | ||
57 | + YangNode node = manager.getDataModel("src/test/resources/LeafListSubStatements.yang"); | ||
58 | + | ||
59 | + // Check whether the data model tree returned is of type module. | ||
60 | + assertThat((node instanceof YangModule), is(true)); | ||
61 | + | ||
62 | + // Check whether the node type is set properly to module. | ||
63 | + assertThat(node.getNodeType(), is(YangNodeType.MODULE_NODE)); | ||
64 | + | ||
65 | + // Check whether the module name is set correctly. | ||
66 | + YangModule yangNode = (YangModule) node; | ||
67 | + assertThat(yangNode.getName(), is("Test")); | ||
68 | + | ||
69 | + ListIterator<YangLeafList> leafListIterator = yangNode.getListOfLeafList().listIterator(); | ||
70 | + YangLeafList leafListInfo = leafListIterator.next(); | ||
71 | + | ||
72 | + assertThat(leafListInfo.getLeafName(), is("invalid-interval")); | ||
73 | + assertThat(leafListInfo.getDataType().getDataTypeName(), is("\"uint16\"")); | ||
74 | + assertThat(leafListInfo.getDataType().getDataType(), is(YangDataTypes.UINT16)); | ||
75 | + assertThat(leafListInfo.getUnits(), is("\"seconds\"")); | ||
76 | + assertThat(leafListInfo.getDescription(), is("\"Interval before a route is declared invalid\"")); | ||
77 | + assertThat(leafListInfo.isConfig(), is(true)); | ||
78 | + assertThat(leafListInfo.getMaxElelements(), is(3)); | ||
79 | + assertThat(leafListInfo.getStatus(), is(YangStatusType.CURRENT)); | ||
80 | + assertThat(leafListInfo.getReference(), is("\"RFC 6020\"")); | ||
81 | + } | ||
82 | + | ||
83 | + /** | ||
84 | + * Checks whether exception is thrown when leaf-list identifier | ||
85 | + * starts with digit. | ||
86 | + */ | ||
87 | + @Test | ||
88 | + public void processLeafListInvalidIdentifier() throws IOException, ParserException { | ||
89 | + thrown.expect(ParserException.class); | ||
90 | + thrown.expectMessage("mismatched input '1invalid-interval' expecting IDENTIFIER"); | ||
91 | + YangNode node = manager.getDataModel("src/test/resources/LeafListInvalidIdentifier.yang"); | ||
92 | + } | ||
93 | + | ||
94 | + /** | ||
95 | + * Checks whether exception is thrown when leaf-list keyword | ||
96 | + * is incorrect. | ||
97 | + */ | ||
98 | + @Test | ||
99 | + public void processLeafListInvalidStatement() throws IOException, ParserException { | ||
100 | + thrown.expect(ParserException.class); | ||
101 | + thrown.expectMessage("mismatched input 'leaflist' expecting {'augment', 'choice', 'contact', 'container'," + | ||
102 | + " 'description', 'extension', 'deviation', 'feature', 'grouping', 'identity', 'import', 'include'," + | ||
103 | + " 'leaf', 'leaf-list', 'list', 'namespace', 'notification', 'organization', 'prefix', 'reference'," + | ||
104 | + " 'revision', 'rpc', 'typedef', 'uses', 'yang-version', '}'}"); | ||
105 | + YangNode node = manager.getDataModel("src/test/resources/LeafListInvalidStatement.yang"); | ||
106 | + } | ||
107 | + | ||
108 | + /** | ||
109 | + * Checks whether exception is thrown when leaf-list keyword | ||
110 | + * without Left brace as per grammar. | ||
111 | + */ | ||
112 | + @Test | ||
113 | + public void processLeafListWithoutLeftBrace() throws IOException, ParserException { | ||
114 | + thrown.expect(ParserException.class); | ||
115 | + thrown.expectMessage("missing '{' at 'type'"); | ||
116 | + YangNode node = manager.getDataModel("src/test/resources/LeafListWithoutLeftBrace.yang"); | ||
117 | + } | ||
118 | + | ||
119 | + /** | ||
120 | + * Checks whether exception is thrown when config statement | ||
121 | + * cardinality is not as per grammar. | ||
122 | + */ | ||
123 | + @Test | ||
124 | + public void processLeafListConfigInvalidCardinality() throws IOException, ParserException { | ||
125 | + thrown.expect(ParserException.class); | ||
126 | + thrown.expectMessage("Internal parser error detected: Invalid cardinality in config before processing."); | ||
127 | + YangNode node = manager.getDataModel("src/test/resources/LeafListConfigInvalidCardinality.yang"); | ||
128 | + } | ||
129 | + | ||
130 | + /** | ||
131 | + * Checks whether exception is thrown when units statement | ||
132 | + * cardinality is not as per grammar. | ||
133 | + */ | ||
134 | + @Test | ||
135 | + public void processLeafListUnitsInvalidCardinality() throws IOException, ParserException { | ||
136 | + thrown.expect(ParserException.class); | ||
137 | + thrown.expectMessage("Internal parser error detected: Invalid cardinality in units before processing."); | ||
138 | + YangNode node = manager.getDataModel("src/test/resources/LeafListUnitsInvalidCardinality.yang"); | ||
139 | + } | ||
140 | + | ||
141 | + /** | ||
142 | + * Checks leaf-list statement as sub-statement of container. | ||
143 | + */ | ||
144 | + @Test | ||
145 | + public void processContainerSubStatementLeafList() throws IOException, ParserException { | ||
146 | + | ||
147 | + YangNode node = manager.getDataModel("src/test/resources/ContainerSubStatementLeafList.yang"); | ||
148 | + | ||
149 | + // Check whether the data model tree returned is of type module. | ||
150 | + assertThat((node instanceof YangModule), is(true)); | ||
151 | + | ||
152 | + // Check whether the node type is set properly to module. | ||
153 | + assertThat(node.getNodeType(), is(YangNodeType.MODULE_NODE)); | ||
154 | + | ||
155 | + // Check whether the module name is set correctly. | ||
156 | + YangModule yangNode = (YangModule) node; | ||
157 | + assertThat(yangNode.getName(), is("Test")); | ||
158 | + | ||
159 | + //Check whether the container is child of module. | ||
160 | + YangContainer container = (YangContainer) yangNode.getChild(); | ||
161 | + assertThat(container.getName(), is("valid")); | ||
162 | + | ||
163 | + // Check whether leaf-list properties as set correctly. | ||
164 | + ListIterator<YangLeafList> leafListIterator = container.getListOfLeafList().listIterator(); | ||
165 | + YangLeafList leafListInfo = leafListIterator.next(); | ||
166 | + | ||
167 | + assertThat(leafListInfo.getLeafName(), is("invalid-interval")); | ||
168 | + assertThat(leafListInfo.getDataType().getDataTypeName(), is("\"uint16\"")); | ||
169 | + assertThat(leafListInfo.getDataType().getDataType(), is(YangDataTypes.UINT16)); | ||
170 | + assertThat(leafListInfo.getUnits(), is("\"seconds\"")); | ||
171 | + assertThat(leafListInfo.getDescription(), is("\"Interval before a route is declared invalid\"")); | ||
172 | + assertThat(leafListInfo.isConfig(), is(true)); | ||
173 | + assertThat(leafListInfo.getMinElements(), is(1)); | ||
174 | + assertThat(leafListInfo.getMaxElelements(), is(2147483647)); | ||
175 | + assertThat(leafListInfo.getStatus(), is(YangStatusType.CURRENT)); | ||
176 | + assertThat(leafListInfo.getReference(), is("\"RFC 6020\"")); | ||
177 | + } | ||
178 | + | ||
179 | + /** | ||
180 | + * Checks leaf-list statement as sub-statement of list. | ||
181 | + */ | ||
182 | + @Test | ||
183 | + public void processListSubStatementLeafList() throws IOException, ParserException { | ||
184 | + | ||
185 | + YangNode node = manager.getDataModel("src/test/resources/ListSubStatementLeafList.yang"); | ||
186 | + | ||
187 | + assertThat((node instanceof YangModule), is(true)); | ||
188 | + | ||
189 | + // Check whether the node type is set properly to module. | ||
190 | + assertThat(node.getNodeType(), is(YangNodeType.MODULE_NODE)); | ||
191 | + | ||
192 | + // Check whether the module name is set correctly. | ||
193 | + YangModule yangNode = (YangModule) node; | ||
194 | + assertThat(yangNode.getName(), is("Test")); | ||
195 | + | ||
196 | + // Check whether the list is child of module | ||
197 | + YangList yangList = (YangList) yangNode.getChild(); | ||
198 | + assertThat(yangList.getName(), is("valid")); | ||
199 | + | ||
200 | + // Check whether leaf-list properties as set correctly. | ||
201 | + ListIterator<YangLeafList> leafListIterator = yangList.getListOfLeafList().listIterator(); | ||
202 | + YangLeafList leafListInfo = leafListIterator.next(); | ||
203 | + | ||
204 | + assertThat(leafListInfo.getLeafName(), is("invalid-interval")); | ||
205 | + assertThat(leafListInfo.getDataType().getDataTypeName(), is("\"uint16\"")); | ||
206 | + assertThat(leafListInfo.getDataType().getDataType(), is(YangDataTypes.UINT16)); | ||
207 | + assertThat(leafListInfo.getUnits(), is("\"seconds\"")); | ||
208 | + assertThat(leafListInfo.getDescription(), is("\"Interval before a route is declared invalid\"")); | ||
209 | + assertThat(leafListInfo.isConfig(), is(true)); | ||
210 | + | ||
211 | + assertThat(leafListInfo.getStatus(), is(YangStatusType.CURRENT)); | ||
212 | + assertThat(leafListInfo.getReference(), is("\"RFC 6020\"")); | ||
213 | + } | ||
214 | +} | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
utils/yangutils/src/test/java/org/onosproject/yangutils/parser/impl/listeners/LeafListenerTest.java
0 → 100644
1 | +/* | ||
2 | + * Copyright 2016 Open Networking Laboratory | ||
3 | + * | ||
4 | + * Licensed under the Apache License, Version 2.0 (the "License"); | ||
5 | + * you may not use this file except in compliance with the License. | ||
6 | + * You may obtain a copy of the License at | ||
7 | + * | ||
8 | + * http://www.apache.org/licenses/LICENSE-2.0 | ||
9 | + * | ||
10 | + * Unless required by applicable law or agreed to in writing, software | ||
11 | + * distributed under the License is distributed on an "AS IS" BASIS, | ||
12 | + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
13 | + * See the License for the specific language governing permissions and | ||
14 | + * limitations under the License. | ||
15 | + */ | ||
16 | + | ||
17 | +package org.onosproject.yangutils.parser.impl.listeners; | ||
18 | + | ||
19 | +import org.junit.Rule; | ||
20 | +import org.junit.Test; | ||
21 | + | ||
22 | +import org.junit.rules.ExpectedException; | ||
23 | +import org.onosproject.yangutils.datamodel.YangLeaf; | ||
24 | +import org.onosproject.yangutils.datamodel.YangModule; | ||
25 | +import org.onosproject.yangutils.datamodel.YangNode; | ||
26 | +import org.onosproject.yangutils.datamodel.YangNodeType; | ||
27 | +import org.onosproject.yangutils.datamodel.YangDataTypes; | ||
28 | +import org.onosproject.yangutils.datamodel.YangStatusType; | ||
29 | +import org.onosproject.yangutils.datamodel.YangContainer; | ||
30 | +import org.onosproject.yangutils.datamodel.YangList; | ||
31 | +import org.onosproject.yangutils.parser.exceptions.ParserException; | ||
32 | +import org.onosproject.yangutils.parser.impl.YangUtilsParserManager; | ||
33 | + | ||
34 | +import java.io.IOException; | ||
35 | +import java.util.ListIterator; | ||
36 | + | ||
37 | +import static org.hamcrest.MatcherAssert.assertThat; | ||
38 | +import static org.hamcrest.core.Is.is; | ||
39 | + | ||
40 | +/** | ||
41 | + * Test cases for testing leaf listener. | ||
42 | + */ | ||
43 | +public class LeafListenerTest { | ||
44 | + | ||
45 | + @Rule | ||
46 | + public ExpectedException thrown = ExpectedException.none(); | ||
47 | + | ||
48 | + private final YangUtilsParserManager manager = new YangUtilsParserManager(); | ||
49 | + | ||
50 | + /** | ||
51 | + * Checks all the values of leaf sub-statements are set | ||
52 | + * correctly. | ||
53 | + */ | ||
54 | + @Test | ||
55 | + public void processLeafSubStatements() throws IOException, ParserException { | ||
56 | + | ||
57 | + YangNode node = manager.getDataModel("src/test/resources/LeafSubStatements.yang"); | ||
58 | + | ||
59 | + // Check whether the data model tree returned is of type module. | ||
60 | + assertThat((node instanceof YangModule), is(true)); | ||
61 | + | ||
62 | + // Check whether the node type is set properly to module. | ||
63 | + assertThat(node.getNodeType(), is(YangNodeType.MODULE_NODE)); | ||
64 | + | ||
65 | + // Check whether the module name is set correctly. | ||
66 | + YangModule yangNode = (YangModule) node; | ||
67 | + assertThat(yangNode.getName(), is("Test")); | ||
68 | + | ||
69 | + ListIterator<YangLeaf> leafIterator = yangNode.getListOfLeaf().listIterator(); | ||
70 | + YangLeaf leafInfo = leafIterator.next(); | ||
71 | + | ||
72 | + assertThat(leafInfo.getLeafName(), is("invalid-interval")); | ||
73 | + assertThat(leafInfo.getDataType().getDataTypeName(), is("\"uint16\"")); | ||
74 | + assertThat(leafInfo.getDataType().getDataType(), is(YangDataTypes.UINT16)); | ||
75 | + assertThat(leafInfo.getUnits(), is("\"seconds\"")); | ||
76 | + assertThat(leafInfo.getDescription(), is("\"Interval before a route is declared invalid\"")); | ||
77 | + assertThat(leafInfo.isConfig(), is(true)); | ||
78 | + assertThat(leafInfo.isMandatory(), is(true)); | ||
79 | + assertThat(leafInfo.getStatus(), is(YangStatusType.CURRENT)); | ||
80 | + assertThat(leafInfo.getReference(), is("\"RFC 6020\"")); | ||
81 | + } | ||
82 | + | ||
83 | + /** | ||
84 | + * Checks whether exception is thrown when leaf identifier | ||
85 | + * starts with digit. | ||
86 | + */ | ||
87 | + @Test | ||
88 | + public void processLeafInvalidIdentifier() throws IOException, ParserException { | ||
89 | + thrown.expect(ParserException.class); | ||
90 | + thrown.expectMessage("mismatched input '1invalid-interval' expecting IDENTIFIER"); | ||
91 | + YangNode node = manager.getDataModel("src/test/resources/LeafInvalidIdentifier.yang"); | ||
92 | + } | ||
93 | + | ||
94 | + /** | ||
95 | + * Checks whether exception is thrown when leaf keyword | ||
96 | + * is incorrect. | ||
97 | + */ | ||
98 | + @Test | ||
99 | + public void processLeafInvalidStatement() throws IOException, ParserException { | ||
100 | + thrown.expect(ParserException.class); | ||
101 | + thrown.expectMessage("mismatched input 'leafs' expecting {'augment', 'choice', 'contact', 'container'," + | ||
102 | + " 'description', 'extension', 'deviation', 'feature', 'grouping', 'identity', 'import', 'include'," + | ||
103 | + " 'leaf', 'leaf-list', 'list', 'namespace', 'notification', 'organization', 'prefix', 'reference'," + | ||
104 | + " 'revision', 'rpc', 'typedef', 'uses', 'yang-version', '}'}"); | ||
105 | + YangNode node = manager.getDataModel("src/test/resources/LeafInvalidStatement.yang"); | ||
106 | + } | ||
107 | + | ||
108 | + /** | ||
109 | + * Checks whether exception is thrown when leaf keyword | ||
110 | + * without Left brace as per grammar. | ||
111 | + */ | ||
112 | + @Test | ||
113 | + public void processLeafWithoutLeftBrace() throws IOException, ParserException { | ||
114 | + thrown.expect(ParserException.class); | ||
115 | + thrown.expectMessage("missing '{' at 'type'"); | ||
116 | + YangNode node = manager.getDataModel("src/test/resources/LeafWithoutLeftBrace.yang"); | ||
117 | + } | ||
118 | + | ||
119 | + /** | ||
120 | + * Checks whether exception is thrown when config statement | ||
121 | + * cardinality is not as per grammar. | ||
122 | + */ | ||
123 | + @Test | ||
124 | + public void processLeafConfigInvalidCardinality() throws IOException, ParserException { | ||
125 | + thrown.expect(ParserException.class); | ||
126 | + thrown.expectMessage("Internal parser error detected: Invalid cardinality in config before processing."); | ||
127 | + YangNode node = manager.getDataModel("src/test/resources/LeafConfigInvalidCardinality.yang"); | ||
128 | + } | ||
129 | + | ||
130 | + /** | ||
131 | + * Checks whether exception is thrown when mandatory statement | ||
132 | + * cardinality is not as per grammar. | ||
133 | + */ | ||
134 | + @Test | ||
135 | + public void processLeafMandatoryInvalidCardinality() throws IOException, ParserException { | ||
136 | + thrown.expect(ParserException.class); | ||
137 | + thrown.expectMessage("Internal parser error detected: Invalid cardinality in mandatory before processing."); | ||
138 | + YangNode node = manager.getDataModel("src/test/resources/LeafMandatoryInvalidCardinality.yang"); | ||
139 | + } | ||
140 | + | ||
141 | + /** | ||
142 | + * Checks leaf statement as sub-statement of container. | ||
143 | + */ | ||
144 | + @Test | ||
145 | + public void processContainerSubStatementLeaf() throws IOException, ParserException { | ||
146 | + | ||
147 | + YangNode node = manager.getDataModel("src/test/resources/ContainerSubStatementLeaf.yang"); | ||
148 | + | ||
149 | + // Check whether the data model tree returned is of type module. | ||
150 | + assertThat((node instanceof YangModule), is(true)); | ||
151 | + | ||
152 | + // Check whether the node type is set properly to module. | ||
153 | + assertThat(node.getNodeType(), is(YangNodeType.MODULE_NODE)); | ||
154 | + | ||
155 | + // Check whether the module name is set correctly. | ||
156 | + YangModule yangNode = (YangModule) node; | ||
157 | + assertThat(yangNode.getName(), is("Test")); | ||
158 | + | ||
159 | + //Check whether the container is child of module. | ||
160 | + YangContainer container = (YangContainer) yangNode.getChild(); | ||
161 | + assertThat(container.getName(), is("valid")); | ||
162 | + | ||
163 | + // Check whether leaf properties as set correctly. | ||
164 | + ListIterator<YangLeaf> leafIterator = container.getListOfLeaf().listIterator(); | ||
165 | + YangLeaf leafInfo = leafIterator.next(); | ||
166 | + | ||
167 | + assertThat(leafInfo.getLeafName(), is("invalid-interval")); | ||
168 | + assertThat(leafInfo.getDataType().getDataTypeName(), is("\"uint16\"")); | ||
169 | + assertThat(leafInfo.getDataType().getDataType(), is(YangDataTypes.UINT16)); | ||
170 | + assertThat(leafInfo.getUnits(), is("\"seconds\"")); | ||
171 | + assertThat(leafInfo.getDescription(), is("\"Interval before a route is declared invalid\"")); | ||
172 | + assertThat(leafInfo.isConfig(), is(true)); | ||
173 | + assertThat(leafInfo.isMandatory(), is(true)); | ||
174 | + assertThat(leafInfo.getStatus(), is(YangStatusType.CURRENT)); | ||
175 | + assertThat(leafInfo.getReference(), is("\"RFC 6020\"")); | ||
176 | + } | ||
177 | + | ||
178 | + /** | ||
179 | + * Checks leaf statement as sub-statement of list. | ||
180 | + */ | ||
181 | + @Test | ||
182 | + public void processListSubStatementLeaf() throws IOException, ParserException { | ||
183 | + | ||
184 | + YangNode node = manager.getDataModel("src/test/resources/ListSubStatementLeaf.yang"); | ||
185 | + | ||
186 | + assertThat((node instanceof YangModule), is(true)); | ||
187 | + | ||
188 | + // Check whether the node type is set properly to module. | ||
189 | + assertThat(node.getNodeType(), is(YangNodeType.MODULE_NODE)); | ||
190 | + | ||
191 | + // Check whether the module name is set correctly. | ||
192 | + YangModule yangNode = (YangModule) node; | ||
193 | + assertThat(yangNode.getName(), is("Test")); | ||
194 | + | ||
195 | + // Check whether the list is child of module | ||
196 | + YangList yangList = (YangList) yangNode.getChild(); | ||
197 | + assertThat(yangList.getName(), is("valid")); | ||
198 | + | ||
199 | + // Check whether leaf properties as set correctly. | ||
200 | + ListIterator<YangLeaf> leafIterator = yangList.getListOfLeaf().listIterator(); | ||
201 | + YangLeaf leafInfo = leafIterator.next(); | ||
202 | + | ||
203 | + assertThat(leafInfo.getLeafName(), is("invalid-interval")); | ||
204 | + assertThat(leafInfo.getDataType().getDataTypeName(), is("\"uint16\"")); | ||
205 | + assertThat(leafInfo.getDataType().getDataType(), is(YangDataTypes.UINT16)); | ||
206 | + assertThat(leafInfo.getUnits(), is("\"seconds\"")); | ||
207 | + assertThat(leafInfo.getDescription(), is("\"Interval before a route is declared invalid\"")); | ||
208 | + assertThat(leafInfo.isConfig(), is(true)); | ||
209 | + assertThat(leafInfo.isMandatory(), is(true)); | ||
210 | + assertThat(leafInfo.getStatus(), is(YangStatusType.CURRENT)); | ||
211 | + assertThat(leafInfo.getReference(), is("\"RFC 6020\"")); | ||
212 | + } | ||
213 | +} | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
utils/yangutils/src/test/java/org/onosproject/yangutils/parser/impl/listeners/ListListenerTest.java
0 → 100644
1 | +/* | ||
2 | + * Copyright 2016 Open Networking Laboratory | ||
3 | + * | ||
4 | + * Licensed under the Apache License, Version 2.0 (the "License"); | ||
5 | + * you may not use this file except in compliance with the License. | ||
6 | + * You may obtain a copy of the License at | ||
7 | + * | ||
8 | + * http://www.apache.org/licenses/LICENSE-2.0 | ||
9 | + * | ||
10 | + * Unless required by applicable law or agreed to in writing, software | ||
11 | + * distributed under the License is distributed on an "AS IS" BASIS, | ||
12 | + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
13 | + * See the License for the specific language governing permissions and | ||
14 | + * limitations under the License. | ||
15 | + */ | ||
16 | + | ||
17 | +package org.onosproject.yangutils.parser.impl.listeners; | ||
18 | + | ||
19 | +import org.junit.Rule; | ||
20 | +import org.junit.Test; | ||
21 | + | ||
22 | +import org.junit.rules.ExpectedException; | ||
23 | +import org.onosproject.yangutils.datamodel.YangLeaf; | ||
24 | +import org.onosproject.yangutils.datamodel.YangModule; | ||
25 | +import org.onosproject.yangutils.datamodel.YangNode; | ||
26 | +import org.onosproject.yangutils.datamodel.YangNodeType; | ||
27 | +import org.onosproject.yangutils.datamodel.YangDataTypes; | ||
28 | +import org.onosproject.yangutils.datamodel.YangStatusType; | ||
29 | +import org.onosproject.yangutils.datamodel.YangContainer; | ||
30 | +import org.onosproject.yangutils.datamodel.YangList; | ||
31 | +import org.onosproject.yangutils.parser.exceptions.ParserException; | ||
32 | +import org.onosproject.yangutils.parser.impl.YangUtilsParserManager; | ||
33 | + | ||
34 | +import java.io.IOException; | ||
35 | +import java.util.ListIterator; | ||
36 | + | ||
37 | +import static org.hamcrest.MatcherAssert.assertThat; | ||
38 | +import static org.hamcrest.core.Is.is; | ||
39 | + | ||
40 | +/** | ||
41 | + * Test cases for testing list listener. | ||
42 | + */ | ||
43 | +public class ListListenerTest { | ||
44 | + | ||
45 | + @Rule | ||
46 | + public ExpectedException thrown = ExpectedException.none(); | ||
47 | + | ||
48 | + private final YangUtilsParserManager manager = new YangUtilsParserManager(); | ||
49 | + | ||
50 | + /** | ||
51 | + * Checks list statement as sub-statement of module. | ||
52 | + */ | ||
53 | + @Test | ||
54 | + public void processModuleSubStatementList() throws IOException, ParserException { | ||
55 | + | ||
56 | + YangNode node = manager.getDataModel("src/test/resources/ModuleSubStatementList.yang"); | ||
57 | + | ||
58 | + assertThat((node instanceof YangModule), is(true)); | ||
59 | + | ||
60 | + // Check whether the node type is set properly to module. | ||
61 | + assertThat(node.getNodeType(), is(YangNodeType.MODULE_NODE)); | ||
62 | + | ||
63 | + // Check whether the module name is set correctly. | ||
64 | + YangModule yangNode = (YangModule) node; | ||
65 | + assertThat(yangNode.getName(), is("Test")); | ||
66 | + | ||
67 | + // Check whether the list is child of module | ||
68 | + YangList yangList = (YangList) yangNode.getChild(); | ||
69 | + assertThat(yangList.getName(), is("valid")); | ||
70 | + | ||
71 | + ListIterator<String> keyList = yangList.getKeyList().listIterator(); | ||
72 | + assertThat(keyList.next(), is("invalid")); | ||
73 | + } | ||
74 | + | ||
75 | + /** | ||
76 | + * Checks list statement as sub-statement of container. | ||
77 | + */ | ||
78 | + @Test | ||
79 | + public void processContainerSubStatementList() throws IOException, ParserException { | ||
80 | + | ||
81 | + YangNode node = manager.getDataModel("src/test/resources/ContainerSubStatementList.yang"); | ||
82 | + | ||
83 | + assertThat((node instanceof YangModule), is(true)); | ||
84 | + | ||
85 | + // Check whether the node type is set properly to module. | ||
86 | + assertThat(node.getNodeType(), is(YangNodeType.MODULE_NODE)); | ||
87 | + | ||
88 | + // Check whether the module name is set correctly. | ||
89 | + YangModule yangNode = (YangModule) node; | ||
90 | + assertThat(yangNode.getName(), is("Test")); | ||
91 | + | ||
92 | + // Check whether the container is child of module | ||
93 | + YangContainer yangContainer = (YangContainer) yangNode.getChild(); | ||
94 | + assertThat(yangContainer.getName(), is("ospf")); | ||
95 | + | ||
96 | + // Check whether the list is child of container | ||
97 | + YangList yangList = (YangList) yangContainer.getChild(); | ||
98 | + assertThat(yangList.getName(), is("valid")); | ||
99 | + assertThat(yangList.getKeyList().contains("invalid"), is(true)); | ||
100 | + } | ||
101 | + | ||
102 | + /** | ||
103 | + * Checks list statement as sub-statement of list. | ||
104 | + */ | ||
105 | + @Test | ||
106 | + public void processListSubStatementList() throws IOException, ParserException { | ||
107 | + | ||
108 | + YangNode node = manager.getDataModel("src/test/resources/ListSubStatementList.yang"); | ||
109 | + | ||
110 | + assertThat((node instanceof YangModule), is(true)); | ||
111 | + | ||
112 | + // Check whether the node type is set properly to module. | ||
113 | + assertThat(node.getNodeType(), is(YangNodeType.MODULE_NODE)); | ||
114 | + | ||
115 | + // Check whether the module name is set correctly. | ||
116 | + YangModule yangNode = (YangModule) node; | ||
117 | + assertThat(yangNode.getName(), is("Test")); | ||
118 | + | ||
119 | + // Check whether the list is child of module | ||
120 | + YangList yangList1 = (YangList) yangNode.getChild(); | ||
121 | + assertThat(yangList1.getName(), is("ospf")); | ||
122 | + assertThat(yangList1.getKeyList().contains("process-id"), is(true)); | ||
123 | + | ||
124 | + // Check whether the list is child of list | ||
125 | + YangList yangList = (YangList) yangList1.getChild(); | ||
126 | + assertThat(yangList.getName(), is("valid")); | ||
127 | + assertThat(yangList.getKeyList().contains("invalid"), is(true)); | ||
128 | + } | ||
129 | + | ||
130 | + /** | ||
131 | + * Checks list with all its sub-statements. | ||
132 | + */ | ||
133 | + @Test | ||
134 | + public void processListSubStatements() throws IOException, ParserException { | ||
135 | + | ||
136 | + YangNode node = manager.getDataModel("src/test/resources/ListSubStatements.yang"); | ||
137 | + | ||
138 | + assertThat((node instanceof YangModule), is(true)); | ||
139 | + | ||
140 | + // Check whether the node type is set properly to module. | ||
141 | + assertThat(node.getNodeType(), is(YangNodeType.MODULE_NODE)); | ||
142 | + | ||
143 | + // Check whether the module name is set correctly. | ||
144 | + YangModule yangNode = (YangModule) node; | ||
145 | + assertThat(yangNode.getName(), is("Test")); | ||
146 | + | ||
147 | + // Check whether the list is child of module | ||
148 | + YangList yangList = (YangList) yangNode.getChild(); | ||
149 | + | ||
150 | + // Check whether list properties as set correctly. | ||
151 | + assertThat(yangList.getName(), is("ospf")); | ||
152 | + assertThat(yangList.getKeyList().contains("process-id"), is(true)); | ||
153 | + | ||
154 | + assertThat(yangList.isConfig(), is(true)); | ||
155 | + assertThat(yangList.getMaxElelements(), is(10)); | ||
156 | + assertThat(yangList.getMinElements(), is(3)); | ||
157 | + assertThat(yangList.getDescription(), is("\"list description\"")); | ||
158 | + assertThat(yangList.getStatus(), is(YangStatusType.CURRENT)); | ||
159 | + assertThat(yangList.getReference(), is("\"list reference\"")); | ||
160 | + | ||
161 | + // Check whether leaf properties as set correctly. | ||
162 | + ListIterator<YangLeaf> leafIterator = yangList.getListOfLeaf().listIterator(); | ||
163 | + YangLeaf leafInfo = leafIterator.next(); | ||
164 | + | ||
165 | + assertThat(leafInfo.getLeafName(), is("invalid-interval")); | ||
166 | + assertThat(leafInfo.getDataType().getDataTypeName(), is("\"uint16\"")); | ||
167 | + assertThat(leafInfo.getDataType().getDataType(), is(YangDataTypes.UINT16)); | ||
168 | + assertThat(leafInfo.getUnits(), is("\"seconds\"")); | ||
169 | + assertThat(leafInfo.getStatus(), is(YangStatusType.CURRENT)); | ||
170 | + assertThat(leafInfo.getReference(), is("\"RFC 6020\"")); | ||
171 | + } | ||
172 | + | ||
173 | + /** | ||
174 | + * Checks cardinality of sub-statements of list. | ||
175 | + */ | ||
176 | + @Test | ||
177 | + public void processListSubStatementsCardinality() throws IOException, ParserException { | ||
178 | + thrown.expect(ParserException.class); | ||
179 | + thrown.expectMessage("Internal parser error detected: Invalid cardinality in reference before processing."); | ||
180 | + YangNode node = manager.getDataModel("src/test/resources/ListSubStatementsCardinality.yang"); | ||
181 | + } | ||
182 | + | ||
183 | + /** | ||
184 | + * Checks list statement without child. | ||
185 | + */ | ||
186 | + @Test | ||
187 | + public void processListStatementWithoutChild() throws IOException, ParserException { | ||
188 | + thrown.expect(ParserException.class); | ||
189 | + thrown.expectMessage("Internal parser error detected: Invalid cardinality in list before processing."); | ||
190 | + YangNode node = manager.getDataModel("src/test/resources/ListStatementWithoutChild.yang"); | ||
191 | + } | ||
192 | + | ||
193 | + /** | ||
194 | + * Checks list as root node. | ||
195 | + */ | ||
196 | + @Test | ||
197 | + public void processListAsRootNode() throws IOException, ParserException { | ||
198 | + thrown.expect(ParserException.class); | ||
199 | + thrown.expectMessage("no viable alternative at input 'list'"); | ||
200 | + YangNode node = manager.getDataModel("src/test/resources/ListAsRootNode.yang"); | ||
201 | + } | ||
202 | + | ||
203 | + /** | ||
204 | + * Checks invalid identifier for list statement. | ||
205 | + */ | ||
206 | + @Test | ||
207 | + public void processListInvalidIdentifier() throws IOException, ParserException { | ||
208 | + thrown.expect(ParserException.class); | ||
209 | + thrown.expectMessage("mismatched input '1valid' expecting IDENTIFIER"); | ||
210 | + YangNode node = manager.getDataModel("src/test/resources/ListInvalidIdentifier.yang"); | ||
211 | + } | ||
212 | +} | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
1 | +/* | ||
2 | + * Copyright 2016 Open Networking Laboratory | ||
3 | + * | ||
4 | + * Licensed under the Apache License, Version 2.0 (the "License"); | ||
5 | + * you may not use this file except in compliance with the License. | ||
6 | + * You may obtain a copy of the License at | ||
7 | + * | ||
8 | + * http://www.apache.org/licenses/LICENSE-2.0 | ||
9 | + * | ||
10 | + * Unless required by applicable law or agreed to in writing, software | ||
11 | + * distributed under the License is distributed on an "AS IS" BASIS, | ||
12 | + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
13 | + * See the License for the specific language governing permissions and | ||
14 | + * limitations under the License. | ||
15 | + */ | ||
16 | + | ||
17 | +package org.onosproject.yangutils.parser.impl.listeners; | ||
18 | + | ||
19 | +import org.junit.Rule; | ||
20 | +import org.junit.Test; | ||
21 | +import org.junit.rules.ExpectedException; | ||
22 | +import org.onosproject.yangutils.datamodel.YangNode; | ||
23 | +import org.onosproject.yangutils.datamodel.YangNodeType; | ||
24 | +import org.onosproject.yangutils.datamodel.YangModule; | ||
25 | +import org.onosproject.yangutils.datamodel.YangLeaf; | ||
26 | +import org.onosproject.yangutils.parser.exceptions.ParserException; | ||
27 | +import org.onosproject.yangutils.parser.impl.YangUtilsParserManager; | ||
28 | + | ||
29 | +import java.io.IOException; | ||
30 | +import java.util.ListIterator; | ||
31 | + | ||
32 | +import static org.hamcrest.MatcherAssert.assertThat; | ||
33 | +import static org.hamcrest.core.Is.is; | ||
34 | + | ||
35 | +/** | ||
36 | + * Test case for mandatory listener. | ||
37 | + */ | ||
38 | +public class MandatoryListenerTest { | ||
39 | + | ||
40 | + @Rule | ||
41 | + public ExpectedException thrown = ExpectedException.none(); | ||
42 | + | ||
43 | + private final YangUtilsParserManager manager = new YangUtilsParserManager(); | ||
44 | + | ||
45 | + /** | ||
46 | + * Checks valid mandatory with value true statement. | ||
47 | + */ | ||
48 | + @Test | ||
49 | + public void processMandatoryTrue() throws IOException, ParserException { | ||
50 | + | ||
51 | + YangNode node = manager.getDataModel("src/test/resources/MandatoryTrue.yang"); | ||
52 | + | ||
53 | + // Check whether the data model tree returned is of type module. | ||
54 | + assertThat((node instanceof YangModule), is(true)); | ||
55 | + | ||
56 | + // Check whether the node type is set properly to module. | ||
57 | + assertThat(node.getNodeType(), is(YangNodeType.MODULE_NODE)); | ||
58 | + | ||
59 | + // Check whether the module name is set correctly. | ||
60 | + YangModule yangNode = (YangModule) node; | ||
61 | + assertThat(yangNode.getName(), is("Test")); | ||
62 | + | ||
63 | + ListIterator<YangLeaf> leafIterator = yangNode.getListOfLeaf().listIterator(); | ||
64 | + YangLeaf leafInfo = leafIterator.next(); | ||
65 | + | ||
66 | + // Check whether the mandatory value is set correctly. | ||
67 | + assertThat(leafInfo.getLeafName(), is("invalid-interval")); | ||
68 | + assertThat(leafInfo.isMandatory(), is(true)); | ||
69 | + } | ||
70 | + | ||
71 | + /** | ||
72 | + * Checks valid mandatory with value false statement. | ||
73 | + */ | ||
74 | + @Test | ||
75 | + public void processMandatoryFalse() throws IOException, ParserException { | ||
76 | + | ||
77 | + YangNode node = manager.getDataModel("src/test/resources/MandatoryFalse.yang"); | ||
78 | + | ||
79 | + // Check whether the data model tree returned is of type module. | ||
80 | + assertThat((node instanceof YangModule), is(true)); | ||
81 | + | ||
82 | + // Check whether the node type is set properly to module. | ||
83 | + assertThat(node.getNodeType(), is(YangNodeType.MODULE_NODE)); | ||
84 | + | ||
85 | + // Check whether the module name is set correctly. | ||
86 | + YangModule yangNode = (YangModule) node; | ||
87 | + assertThat(yangNode.getName(), is("Test")); | ||
88 | + | ||
89 | + ListIterator<YangLeaf> leafIterator = yangNode.getListOfLeaf().listIterator(); | ||
90 | + YangLeaf leafInfo = leafIterator.next(); | ||
91 | + | ||
92 | + // Check whether the mandatory value is set correctly. | ||
93 | + assertThat(leafInfo.getLeafName(), is("invalid-interval")); | ||
94 | + assertThat(leafInfo.isMandatory(), is(false)); | ||
95 | + } | ||
96 | + | ||
97 | + /** | ||
98 | + * Checks default value of mandatory statement. | ||
99 | + */ | ||
100 | + @Test | ||
101 | + public void processMandatoryDefaultValue() throws IOException, ParserException { | ||
102 | + | ||
103 | + YangNode node = manager.getDataModel("src/test/resources/MandatoryDefaultValue.yang"); | ||
104 | + | ||
105 | + // Check whether the data model tree returned is of type module. | ||
106 | + assertThat((node instanceof YangModule), is(true)); | ||
107 | + | ||
108 | + // Check whether the node type is set properly to module. | ||
109 | + assertThat(node.getNodeType(), is(YangNodeType.MODULE_NODE)); | ||
110 | + | ||
111 | + // Check whether the module name is set correctly. | ||
112 | + YangModule yangNode = (YangModule) node; | ||
113 | + assertThat(yangNode.getName(), is("Test")); | ||
114 | + | ||
115 | + ListIterator<YangLeaf> leafIterator = yangNode.getListOfLeaf().listIterator(); | ||
116 | + YangLeaf leafInfo = leafIterator.next(); | ||
117 | + | ||
118 | + // Check whether the mandatory value is set correctly. | ||
119 | + assertThat(leafInfo.getLeafName(), is("invalid-interval")); | ||
120 | + assertThat(leafInfo.isMandatory(), is(false)); | ||
121 | + } | ||
122 | + | ||
123 | + /** | ||
124 | + * Checks invalid of mandatory statement and expects exception. | ||
125 | + */ | ||
126 | + @Test | ||
127 | + public void processMandatoryEmptyStatement() throws IOException, ParserException { | ||
128 | + thrown.expect(ParserException.class); | ||
129 | + thrown.expectMessage("missing {'false', 'true'} at ';'"); | ||
130 | + YangNode node = manager.getDataModel("src/test/resources/MandatoryEmptyStatement.yang"); | ||
131 | + } | ||
132 | + | ||
133 | + /** | ||
134 | + * Checks invalid mandatory statement(without statement end) and expects exception. | ||
135 | + */ | ||
136 | + @Test | ||
137 | + public void processMandatoryWithoutStatementEnd() throws IOException, ParserException { | ||
138 | + thrown.expect(ParserException.class); | ||
139 | + thrown.expectMessage("missing ';' at '}'"); | ||
140 | + YangNode node = manager.getDataModel("src/test/resources/MandatoryWithoutStatementEnd.yang"); | ||
141 | + } | ||
142 | + | ||
143 | + /** | ||
144 | + * Checks mandatory statement as sub-statement of module and expects exception. | ||
145 | + */ | ||
146 | + @Test | ||
147 | + public void processModuleSubStatementMandatory() throws IOException, ParserException { | ||
148 | + thrown.expect(ParserException.class); | ||
149 | + thrown.expectMessage("mismatched input 'mandatory' expecting {'augment', 'choice', 'contact', 'container'," + | ||
150 | + " 'description', 'extension', 'deviation', 'feature', 'grouping', 'identity', 'import', 'include'," + | ||
151 | + " 'leaf', 'leaf-list', 'list', 'namespace', 'notification', 'organization', 'prefix', 'reference'," + | ||
152 | + " 'revision', 'rpc', 'typedef', 'uses', 'yang-version', '}'}"); | ||
153 | + YangNode node = manager.getDataModel("src/test/resources/ModuleSubStatementMandatory.yang"); | ||
154 | + } | ||
155 | +} | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
1 | +/* | ||
2 | + * Copyright 2016 Open Networking Laboratory | ||
3 | + * | ||
4 | + * Licensed under the Apache License, Version 2.0 (the "License"); | ||
5 | + * you may not use this file except in compliance with the License. | ||
6 | + * You may obtain a copy of the License at | ||
7 | + * | ||
8 | + * http://www.apache.org/licenses/LICENSE-2.0 | ||
9 | + * | ||
10 | + * Unless required by applicable law or agreed to in writing, software | ||
11 | + * distributed under the License is distributed on an "AS IS" BASIS, | ||
12 | + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
13 | + * See the License for the specific language governing permissions and | ||
14 | + * limitations under the License. | ||
15 | + */ | ||
16 | + | ||
17 | +package org.onosproject.yangutils.parser.impl.listeners; | ||
18 | + | ||
19 | +import org.junit.Rule; | ||
20 | +import org.junit.Test; | ||
21 | + | ||
22 | +import org.junit.rules.ExpectedException; | ||
23 | +import org.onosproject.yangutils.datamodel.YangLeafList; | ||
24 | +import org.onosproject.yangutils.datamodel.YangModule; | ||
25 | +import org.onosproject.yangutils.datamodel.YangNode; | ||
26 | +import org.onosproject.yangutils.datamodel.YangNodeType; | ||
27 | +import org.onosproject.yangutils.datamodel.YangList; | ||
28 | +import org.onosproject.yangutils.parser.exceptions.ParserException; | ||
29 | +import org.onosproject.yangutils.parser.impl.YangUtilsParserManager; | ||
30 | + | ||
31 | +import java.io.IOException; | ||
32 | +import java.util.ListIterator; | ||
33 | + | ||
34 | +import static org.hamcrest.MatcherAssert.assertThat; | ||
35 | +import static org.hamcrest.core.Is.is; | ||
36 | + | ||
37 | +/** | ||
38 | + * Test cases for testing max-elements listener. | ||
39 | + */ | ||
40 | +public class MaxElementsListenerTest { | ||
41 | + | ||
42 | + @Rule | ||
43 | + public ExpectedException thrown = ExpectedException.none(); | ||
44 | + | ||
45 | + private final YangUtilsParserManager manager = new YangUtilsParserManager(); | ||
46 | + | ||
47 | + /** | ||
48 | + * Checks max-elements as sub-statements of leaf-list. | ||
49 | + */ | ||
50 | + @Test | ||
51 | + public void processLeafListSubStatementMaxElements() throws IOException, ParserException { | ||
52 | + | ||
53 | + YangNode node = manager.getDataModel("src/test/resources/LeafListSubStatementMaxElements.yang"); | ||
54 | + | ||
55 | + // Check whether the data model tree returned is of type module. | ||
56 | + assertThat((node instanceof YangModule), is(true)); | ||
57 | + | ||
58 | + // Check whether the node type is set properly to module. | ||
59 | + assertThat(node.getNodeType(), is(YangNodeType.MODULE_NODE)); | ||
60 | + | ||
61 | + // Check whether the module name is set correctly. | ||
62 | + YangModule yangNode = (YangModule) node; | ||
63 | + assertThat(yangNode.getName(), is("Test")); | ||
64 | + | ||
65 | + ListIterator<YangLeafList> leafListIterator = yangNode.getListOfLeafList().listIterator(); | ||
66 | + YangLeafList leafListInfo = leafListIterator.next(); | ||
67 | + | ||
68 | + assertThat(leafListInfo.getLeafName(), is("invalid-interval")); | ||
69 | + assertThat(leafListInfo.getMaxElelements(), is(3)); | ||
70 | + } | ||
71 | + | ||
72 | + /** | ||
73 | + * Checks max-elements as sub-statements of list. | ||
74 | + */ | ||
75 | + @Test | ||
76 | + public void processListSubStatementMaxElements() throws IOException, ParserException { | ||
77 | + | ||
78 | + YangNode node = manager.getDataModel("src/test/resources/ListSubStatementMaxElements.yang"); | ||
79 | + | ||
80 | + assertThat((node instanceof YangModule), is(true)); | ||
81 | + | ||
82 | + // Check whether the node type is set properly to module. | ||
83 | + assertThat(node.getNodeType(), is(YangNodeType.MODULE_NODE)); | ||
84 | + | ||
85 | + // Check whether the module name is set correctly. | ||
86 | + YangModule yangNode = (YangModule) node; | ||
87 | + assertThat(yangNode.getName(), is("Test")); | ||
88 | + | ||
89 | + // Check whether the list is child of module | ||
90 | + YangList yangList = (YangList) yangNode.getChild(); | ||
91 | + assertThat(yangList.getName(), is("valid")); | ||
92 | + assertThat(yangList.getMaxElelements(), is(3)); | ||
93 | + } | ||
94 | + | ||
95 | + /** | ||
96 | + * Checks whether exception is thrown when invalid max-elements keyword | ||
97 | + * is given as input. | ||
98 | + */ | ||
99 | + @Test | ||
100 | + public void processMaxElementsInvalidStatement() throws IOException, ParserException { | ||
101 | + thrown.expect(ParserException.class); | ||
102 | + thrown.expectMessage("extraneous input 'max-element' expecting {'config', 'description', 'if-feature'," + | ||
103 | + " 'max-elements', 'min-elements', 'must', 'ordered-by', 'reference', 'status', 'type', 'units', " + | ||
104 | + "'when', '}'}"); | ||
105 | + YangNode node = manager.getDataModel("src/test/resources/MaxElementsInvalidStatement.yang"); | ||
106 | + } | ||
107 | + | ||
108 | + /** | ||
109 | + * Checks whether exception is thrown when max-elements statement without statement | ||
110 | + * end is given as input. | ||
111 | + */ | ||
112 | + @Test | ||
113 | + public void processMaxElementsWithoutStatementEnd() throws IOException, ParserException { | ||
114 | + thrown.expect(ParserException.class); | ||
115 | + thrown.expectMessage("missing ';' at 'description'"); | ||
116 | + YangNode node = manager.getDataModel("src/test/resources/MaxElementsWithoutStatementEnd.yang"); | ||
117 | + } | ||
118 | + | ||
119 | + /** | ||
120 | + * Checks whether exception is thrown when max-elements cardinality is not | ||
121 | + * as per the grammar. | ||
122 | + */ | ||
123 | + @Test | ||
124 | + public void processMaxElementsCardinality() throws IOException, ParserException { | ||
125 | + thrown.expect(ParserException.class); | ||
126 | + thrown.expectMessage("Internal parser error detected: Invalid cardinality in max-elements before processing."); | ||
127 | + YangNode node = manager.getDataModel("src/test/resources/MaxElementsCardinality.yang"); | ||
128 | + } | ||
129 | + | ||
130 | + /** | ||
131 | + * Checks unbounded value of max-elements statement. | ||
132 | + */ | ||
133 | + @Test | ||
134 | + public void processMaxElementsUnbounded() throws IOException, ParserException { | ||
135 | + | ||
136 | + YangNode node = manager.getDataModel("src/test/resources/MaxElementsUnbounded.yang"); | ||
137 | + | ||
138 | + // Check whether the data model tree returned is of type module. | ||
139 | + assertThat((node instanceof YangModule), is(true)); | ||
140 | + | ||
141 | + // Check whether the node type is set properly to module. | ||
142 | + assertThat(node.getNodeType(), is(YangNodeType.MODULE_NODE)); | ||
143 | + | ||
144 | + // Check whether the module name is set correctly. | ||
145 | + YangModule yangNode = (YangModule) node; | ||
146 | + assertThat(yangNode.getName(), is("Test")); | ||
147 | + | ||
148 | + ListIterator<YangLeafList> leafListIterator = yangNode.getListOfLeafList().listIterator(); | ||
149 | + YangLeafList leafListInfo = leafListIterator.next(); | ||
150 | + | ||
151 | + assertThat(leafListInfo.getLeafName(), is("invalid-interval")); | ||
152 | + assertThat(leafListInfo.getMaxElelements(), is(2147483647)); | ||
153 | + } | ||
154 | +} | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
1 | +/* | ||
2 | + * Copyright 2016 Open Networking Laboratory | ||
3 | + * | ||
4 | + * Licensed under the Apache License, Version 2.0 (the "License"); | ||
5 | + * you may not use this file except in compliance with the License. | ||
6 | + * You may obtain a copy of the License at | ||
7 | + * | ||
8 | + * http://www.apache.org/licenses/LICENSE-2.0 | ||
9 | + * | ||
10 | + * Unless required by applicable law or agreed to in writing, software | ||
11 | + * distributed under the License is distributed on an "AS IS" BASIS, | ||
12 | + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
13 | + * See the License for the specific language governing permissions and | ||
14 | + * limitations under the License. | ||
15 | + */ | ||
16 | + | ||
17 | +package org.onosproject.yangutils.parser.impl.listeners; | ||
18 | + | ||
19 | +import org.junit.Rule; | ||
20 | +import org.junit.Test; | ||
21 | + | ||
22 | +import org.junit.rules.ExpectedException; | ||
23 | +import org.onosproject.yangutils.datamodel.YangLeafList; | ||
24 | +import org.onosproject.yangutils.datamodel.YangModule; | ||
25 | +import org.onosproject.yangutils.datamodel.YangNode; | ||
26 | +import org.onosproject.yangutils.datamodel.YangNodeType; | ||
27 | +import org.onosproject.yangutils.datamodel.YangList; | ||
28 | +import org.onosproject.yangutils.parser.exceptions.ParserException; | ||
29 | +import org.onosproject.yangutils.parser.impl.YangUtilsParserManager; | ||
30 | + | ||
31 | +import java.io.IOException; | ||
32 | +import java.util.ListIterator; | ||
33 | + | ||
34 | +import static org.hamcrest.MatcherAssert.assertThat; | ||
35 | +import static org.hamcrest.core.Is.is; | ||
36 | + | ||
37 | +/** | ||
38 | + * Test cases for testing min-elements listener. | ||
39 | + */ | ||
40 | +public class MinElementsListenerTest { | ||
41 | + | ||
42 | + @Rule | ||
43 | + public ExpectedException thrown = ExpectedException.none(); | ||
44 | + | ||
45 | + private final YangUtilsParserManager manager = new YangUtilsParserManager(); | ||
46 | + | ||
47 | + /** | ||
48 | + * Checks min-elements as sub-statements of leaf-list. | ||
49 | + */ | ||
50 | + @Test | ||
51 | + public void processLeafListSubStatementMinElements() throws IOException, ParserException { | ||
52 | + | ||
53 | + YangNode node = manager.getDataModel("src/test/resources/LeafListSubStatementMinElements.yang"); | ||
54 | + | ||
55 | + // Check whether the data model tree returned is of type module. | ||
56 | + assertThat((node instanceof YangModule), is(true)); | ||
57 | + | ||
58 | + // Check whether the node type is set properly to module. | ||
59 | + assertThat(node.getNodeType(), is(YangNodeType.MODULE_NODE)); | ||
60 | + | ||
61 | + // Check whether the module name is set correctly. | ||
62 | + YangModule yangNode = (YangModule) node; | ||
63 | + assertThat(yangNode.getName(), is("Test")); | ||
64 | + | ||
65 | + ListIterator<YangLeafList> leafListIterator = yangNode.getListOfLeafList().listIterator(); | ||
66 | + YangLeafList leafListInfo = leafListIterator.next(); | ||
67 | + | ||
68 | + assertThat(leafListInfo.getLeafName(), is("invalid-interval")); | ||
69 | + assertThat(leafListInfo.getMinElements(), is(3)); | ||
70 | + } | ||
71 | + | ||
72 | + /** | ||
73 | + * Checks min-elements as sub-statements of list. | ||
74 | + */ | ||
75 | + @Test | ||
76 | + public void processListSubStatementMinElements() throws IOException, ParserException { | ||
77 | + | ||
78 | + YangNode node = manager.getDataModel("src/test/resources/ListSubStatementMinElements.yang"); | ||
79 | + | ||
80 | + assertThat((node instanceof YangModule), is(true)); | ||
81 | + | ||
82 | + // Check whether the node type is set properly to module. | ||
83 | + assertThat(node.getNodeType(), is(YangNodeType.MODULE_NODE)); | ||
84 | + | ||
85 | + // Check whether the module name is set correctly. | ||
86 | + YangModule yangNode = (YangModule) node; | ||
87 | + assertThat(yangNode.getName(), is("Test")); | ||
88 | + | ||
89 | + // Check whether the list is child of module | ||
90 | + YangList yangList = (YangList) yangNode.getChild(); | ||
91 | + assertThat(yangList.getName(), is("valid")); | ||
92 | + assertThat(yangList.getMinElements(), is(3)); | ||
93 | + } | ||
94 | + | ||
95 | + /** | ||
96 | + * Checks whether exception is thrown when invalid min-elements keyword | ||
97 | + * is given as input. | ||
98 | + */ | ||
99 | + @Test | ||
100 | + public void processMinElementsInvalidKeyword() throws IOException, ParserException { | ||
101 | + thrown.expect(ParserException.class); | ||
102 | + thrown.expectMessage("extraneous input 'min-element' expecting {'config', 'description', 'if-feature'," + | ||
103 | + " 'max-elements', 'min-elements', 'must', 'ordered-by', 'reference', 'status', 'type', 'units'," + | ||
104 | + " 'when', '}'}"); | ||
105 | + YangNode node = manager.getDataModel("src/test/resources/MinElementsInvalidKeyword.yang"); | ||
106 | + } | ||
107 | + | ||
108 | + /** | ||
109 | + * Checks whether exception is thrown when invalid min-elements value | ||
110 | + * is given as input. | ||
111 | + */ | ||
112 | + @Test | ||
113 | + public void processMinElementsInvalidValue() throws IOException, ParserException { | ||
114 | + thrown.expect(ParserException.class); | ||
115 | + thrown.expectMessage("mismatched input 'asd' expecting INTEGER"); | ||
116 | + YangNode node = manager.getDataModel("src/test/resources/MinElementsInvalidValue.yang"); | ||
117 | + } | ||
118 | + | ||
119 | + /** | ||
120 | + * Checks whether exception is thrown when min-elements statement without statement | ||
121 | + * end is given as input. | ||
122 | + */ | ||
123 | + @Test | ||
124 | + public void processMinElementsWithoutStatementEnd() throws IOException, ParserException { | ||
125 | + thrown.expect(ParserException.class); | ||
126 | + thrown.expectMessage("missing ';' at 'description'"); | ||
127 | + YangNode node = manager.getDataModel("src/test/resources/MinElementsWithoutStatementEnd.yang"); | ||
128 | + } | ||
129 | + | ||
130 | + /** | ||
131 | + * Checks whether exception is thrown when min-elements cardinality is not | ||
132 | + * as per the grammar. | ||
133 | + */ | ||
134 | + @Test | ||
135 | + public void processMinElementsInvalidCardinality() throws IOException, ParserException { | ||
136 | + thrown.expect(ParserException.class); | ||
137 | + thrown.expectMessage("Internal parser error detected: Invalid cardinality in" + | ||
138 | + " min-elements before processing."); | ||
139 | + YangNode node = manager.getDataModel("src/test/resources/MinElementsInvalidCardinality.yang"); | ||
140 | + } | ||
141 | +} | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
1 | +/* | ||
2 | + * Copyright 2016 Open Networking Laboratory | ||
3 | + * | ||
4 | + * Licensed under the Apache License, Version 2.0 (the "License"); | ||
5 | + * you may not use this file except in compliance with the License. | ||
6 | + * You may obtain a copy of the License at | ||
7 | + * | ||
8 | + * http://www.apache.org/licenses/LICENSE-2.0 | ||
9 | + * | ||
10 | + * Unless required by applicable law or agreed to in writing, software | ||
11 | + * distributed under the License is distributed on an "AS IS" BASIS, | ||
12 | + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
13 | + * See the License for the specific language governing permissions and | ||
14 | + * limitations under the License. | ||
15 | + */ | ||
16 | + | ||
17 | +package org.onosproject.yangutils.parser.impl.listeners; | ||
18 | + | ||
19 | +import org.junit.Rule; | ||
20 | +import org.junit.Test; | ||
21 | + | ||
22 | +import org.junit.rules.ExpectedException; | ||
23 | +import org.onosproject.yangutils.datamodel.YangModule; | ||
24 | +import org.onosproject.yangutils.datamodel.YangNode; | ||
25 | +import org.onosproject.yangutils.datamodel.YangNodeType; | ||
26 | +import org.onosproject.yangutils.datamodel.YangContainer; | ||
27 | +import org.onosproject.yangutils.parser.exceptions.ParserException; | ||
28 | +import org.onosproject.yangutils.parser.impl.YangUtilsParserManager; | ||
29 | + | ||
30 | +import java.io.IOException; | ||
31 | + | ||
32 | +import static org.hamcrest.MatcherAssert.assertThat; | ||
33 | +import static org.hamcrest.Matchers.is; | ||
34 | +import static org.hamcrest.Matchers.nullValue; | ||
35 | + | ||
36 | +/** | ||
37 | + * Test cases for presence listener. | ||
38 | + */ | ||
39 | +public class PresenceListenerTest { | ||
40 | + | ||
41 | + @Rule | ||
42 | + public ExpectedException thrown = ExpectedException.none(); | ||
43 | + | ||
44 | + private final YangUtilsParserManager manager = new YangUtilsParserManager(); | ||
45 | + | ||
46 | + /** | ||
47 | + * Checks presence statement as sub-statement of container. | ||
48 | + */ | ||
49 | + @Test | ||
50 | + public void processContainerSubStatementPresence() throws IOException, ParserException { | ||
51 | + | ||
52 | + YangNode node = manager.getDataModel("src/test/resources/ContainerSubStatementPresence.yang"); | ||
53 | + | ||
54 | + assertThat((node instanceof YangModule), is(true)); | ||
55 | + | ||
56 | + // Check whether the node type is set properly to module. | ||
57 | + assertThat(node.getNodeType(), is(YangNodeType.MODULE_NODE)); | ||
58 | + | ||
59 | + // Check whether the module name is set correctly. | ||
60 | + YangModule yangNode = (YangModule) node; | ||
61 | + assertThat(yangNode.getName(), is("Test")); | ||
62 | + | ||
63 | + // Check whether the list is child of module | ||
64 | + YangContainer yangContainer = (YangContainer) yangNode.getChild(); | ||
65 | + assertThat(yangContainer.getName(), is("valid")); | ||
66 | + assertThat(yangContainer.getPresence(), is("\"invalid\"")); | ||
67 | + } | ||
68 | + | ||
69 | + /** | ||
70 | + * checks default value of presence statement. | ||
71 | + */ | ||
72 | + @Test | ||
73 | + public void processPresenceDefaultValue() throws IOException, ParserException { | ||
74 | + | ||
75 | + YangNode node = manager.getDataModel("src/test/resources/PresenceDefaultValue.yang"); | ||
76 | + | ||
77 | + assertThat((node instanceof YangModule), is(true)); | ||
78 | + | ||
79 | + // Check whether the node type is set properly to module. | ||
80 | + assertThat(node.getNodeType(), is(YangNodeType.MODULE_NODE)); | ||
81 | + | ||
82 | + // Check whether the module name is set correctly. | ||
83 | + YangModule yangNode = (YangModule) node; | ||
84 | + assertThat(yangNode.getName(), is("Test")); | ||
85 | + | ||
86 | + // Check whether the list is child of module | ||
87 | + YangContainer yangContainer = (YangContainer) yangNode.getChild(); | ||
88 | + assertThat(yangContainer.getName(), is("valid")); | ||
89 | + assertThat(yangContainer.getPresence(), is(nullValue())); | ||
90 | + } | ||
91 | + | ||
92 | + /** | ||
93 | + * Checks presence statement without statement end. | ||
94 | + */ | ||
95 | + @Test | ||
96 | + public void processPresenceWithoutStatementEnd() throws IOException, ParserException { | ||
97 | + thrown.expect(ParserException.class); | ||
98 | + thrown.expectMessage("mismatched input 'leaf' expecting {';', '+'}"); | ||
99 | + YangNode node = manager.getDataModel("src/test/resources/PresenceWithoutStatementEnd.yang"); | ||
100 | + } | ||
101 | +} | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
1 | +/* | ||
2 | + * Copyright 2016 Open Networking Laboratory | ||
3 | + * | ||
4 | + * Licensed under the Apache License, Version 2.0 (the "License"); | ||
5 | + * you may not use this file except in compliance with the License. | ||
6 | + * You may obtain a copy of the License at | ||
7 | + * | ||
8 | + * http://www.apache.org/licenses/LICENSE-2.0 | ||
9 | + * | ||
10 | + * Unless required by applicable law or agreed to in writing, software | ||
11 | + * distributed under the License is distributed on an "AS IS" BASIS, | ||
12 | + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
13 | + * See the License for the specific language governing permissions and | ||
14 | + * limitations under the License. | ||
15 | + */ | ||
16 | + | ||
17 | +package org.onosproject.yangutils.parser.impl.listeners; | ||
18 | + | ||
19 | +import org.junit.Rule; | ||
20 | +import org.junit.Test; | ||
21 | + | ||
22 | +import org.junit.rules.ExpectedException; | ||
23 | +import org.onosproject.yangutils.datamodel.YangLeaf; | ||
24 | +import org.onosproject.yangutils.datamodel.YangModule; | ||
25 | +import org.onosproject.yangutils.datamodel.YangNode; | ||
26 | +import org.onosproject.yangutils.datamodel.YangNodeType; | ||
27 | +import org.onosproject.yangutils.datamodel.YangDataTypes; | ||
28 | +import org.onosproject.yangutils.datamodel.YangStatusType; | ||
29 | +import org.onosproject.yangutils.datamodel.YangContainer; | ||
30 | +import org.onosproject.yangutils.datamodel.YangList; | ||
31 | +import org.onosproject.yangutils.datamodel.YangLeafList; | ||
32 | +import org.onosproject.yangutils.parser.exceptions.ParserException; | ||
33 | +import org.onosproject.yangutils.parser.impl.YangUtilsParserManager; | ||
34 | + | ||
35 | +import java.io.IOException; | ||
36 | +import java.util.ListIterator; | ||
37 | + | ||
38 | +import static org.hamcrest.MatcherAssert.assertThat; | ||
39 | +import static org.hamcrest.core.Is.is; | ||
40 | + | ||
41 | +/** | ||
42 | + * Test case for reference listener. | ||
43 | + */ | ||
44 | +public class ReferenceListenerTest { | ||
45 | + | ||
46 | + @Rule | ||
47 | + public ExpectedException thrown = ExpectedException.none(); | ||
48 | + | ||
49 | + private final YangUtilsParserManager manager = new YangUtilsParserManager(); | ||
50 | + | ||
51 | + /** | ||
52 | + * Checks valid reference statement. | ||
53 | + */ | ||
54 | + @Test | ||
55 | + public void processReferenceStatement() throws IOException, ParserException { | ||
56 | + | ||
57 | + YangNode node = manager.getDataModel("src/test/resources/ReferenceStatement.yang"); | ||
58 | + | ||
59 | + // Check whether the data model tree returned is of type module. | ||
60 | + assertThat((node instanceof YangModule), is(true)); | ||
61 | + | ||
62 | + // Check whether the node type is set properly to module. | ||
63 | + assertThat(node.getNodeType(), is(YangNodeType.MODULE_NODE)); | ||
64 | + | ||
65 | + // Check whether the module name is set correctly. | ||
66 | + YangModule yangNode = (YangModule) node; | ||
67 | + assertThat(yangNode.getName(), is("Test")); | ||
68 | + | ||
69 | + ListIterator<YangLeaf> leafIterator = yangNode.getListOfLeaf().listIterator(); | ||
70 | + YangLeaf leafInfo = leafIterator.next(); | ||
71 | + | ||
72 | + // Check whether the reference is set correctly. | ||
73 | + assertThat(leafInfo.getLeafName(), is("invalid-interval")); | ||
74 | + assertThat(leafInfo.getReference(), is("\"RFC 6020\"")); | ||
75 | + } | ||
76 | + | ||
77 | + /** | ||
78 | + * Checks whether exception is thrown for invalid reference statement. | ||
79 | + */ | ||
80 | + @Test | ||
81 | + public void processReferenceWithoutStatementEnd() throws IOException, ParserException { | ||
82 | + thrown.expect(ParserException.class); | ||
83 | + thrown.expectMessage("mismatched input '}' expecting {';', '+'}"); | ||
84 | + YangNode node = manager.getDataModel("src/test/resources/ReferenceWithoutStatementEnd.yang"); | ||
85 | + } | ||
86 | + | ||
87 | + /** | ||
88 | + * Checks valid reference statement under module. | ||
89 | + */ | ||
90 | + @Test | ||
91 | + public void processModuleSubStatementReference() throws IOException, ParserException { | ||
92 | + | ||
93 | + YangNode node = manager.getDataModel("src/test/resources/ModuleSubStatementReference.yang"); | ||
94 | + | ||
95 | + // Check whether the data model tree returned is of type module. | ||
96 | + assertThat((node instanceof YangModule), is(true)); | ||
97 | + | ||
98 | + // Check whether the node type is set properly to module. | ||
99 | + assertThat(node.getNodeType(), is(YangNodeType.MODULE_NODE)); | ||
100 | + | ||
101 | + // Check whether the module name is set correctly. | ||
102 | + YangModule yangNode = (YangModule) node; | ||
103 | + assertThat(yangNode.getName(), is("Test")); | ||
104 | + | ||
105 | + // Check whether the reference is set correctly. | ||
106 | + assertThat(yangNode.getReference(), is("\"RFC 6020\"")); | ||
107 | + } | ||
108 | + | ||
109 | + /** | ||
110 | + * Checks valid reference statement under module. | ||
111 | + */ | ||
112 | + @Test | ||
113 | + public void processReferenceEmptyStatement() throws IOException, ParserException { | ||
114 | + | ||
115 | + YangNode node = manager.getDataModel("src/test/resources/ReferenceEmptyStatement.yang"); | ||
116 | + | ||
117 | + // Check whether the data model tree returned is of type module. | ||
118 | + assertThat((node instanceof YangModule), is(true)); | ||
119 | + | ||
120 | + // Check whether the node type is set properly to module. | ||
121 | + assertThat(node.getNodeType(), is(YangNodeType.MODULE_NODE)); | ||
122 | + | ||
123 | + // Check whether the module name is set correctly. | ||
124 | + YangModule yangNode = (YangModule) node; | ||
125 | + assertThat(yangNode.getName(), is("Test")); | ||
126 | + | ||
127 | + // Check whether the reference is set correctly. | ||
128 | + assertThat(yangNode.getReference(), is("\"\"")); | ||
129 | + } | ||
130 | + | ||
131 | + /** | ||
132 | + * Checks valid reference statement as sub-statement of revision. | ||
133 | + */ | ||
134 | + @Test | ||
135 | + public void processRevisionSubStatementReference() throws IOException, ParserException { | ||
136 | + | ||
137 | + YangNode node = manager.getDataModel("src/test/resources/RevisionSubStatementReference.yang"); | ||
138 | + | ||
139 | + // Check whether the data model tree returned is of type module. | ||
140 | + assertThat((node instanceof YangModule), is(true)); | ||
141 | + | ||
142 | + // Check whether the node type is set properly to module. | ||
143 | + assertThat(node.getNodeType(), is(YangNodeType.MODULE_NODE)); | ||
144 | + | ||
145 | + // Check whether the module name is set correctly. | ||
146 | + YangModule yangNode = (YangModule) node; | ||
147 | + assertThat(yangNode.getName(), is("Test")); | ||
148 | + | ||
149 | + // Check whether the reference is set correctly. | ||
150 | + assertThat(yangNode.getRevision().getReference(), is("\"revision reference\"")); | ||
151 | + } | ||
152 | + | ||
153 | + /** | ||
154 | + * Checks reference statement as sub-statement of container. | ||
155 | + */ | ||
156 | + @Test | ||
157 | + public void processContainerSubStatementReference() throws IOException, ParserException { | ||
158 | + | ||
159 | + YangNode node = manager.getDataModel("src/test/resources/ContainerSubStatementReference.yang"); | ||
160 | + | ||
161 | + // Check whether the data model tree returned is of type module. | ||
162 | + assertThat((node instanceof YangModule), is(true)); | ||
163 | + | ||
164 | + // Check whether the node type is set properly to module. | ||
165 | + assertThat(node.getNodeType(), is(YangNodeType.MODULE_NODE)); | ||
166 | + | ||
167 | + // Check whether the module name is set correctly. | ||
168 | + YangModule yangNode = (YangModule) node; | ||
169 | + assertThat(yangNode.getName(), is("Test")); | ||
170 | + | ||
171 | + // Check whether the reference value is set correctly. | ||
172 | + YangContainer container = (YangContainer) yangNode.getChild(); | ||
173 | + assertThat(container.getName(), is("valid")); | ||
174 | + assertThat(container.getReference(), is("\"container reference\"")); | ||
175 | + | ||
176 | + // Check whether leaf properties as set correctly. | ||
177 | + ListIterator<YangLeaf> leafIterator = container.getListOfLeaf().listIterator(); | ||
178 | + YangLeaf leafInfo = leafIterator.next(); | ||
179 | + | ||
180 | + assertThat(leafInfo.getLeafName(), is("invalid-interval")); | ||
181 | + assertThat(leafInfo.getDataType().getDataTypeName(), is("\"uint16\"")); | ||
182 | + assertThat(leafInfo.getDataType().getDataType(), is(YangDataTypes.UINT16)); | ||
183 | + assertThat(leafInfo.getUnits(), is("\"seconds\"")); | ||
184 | + assertThat(leafInfo.getDescription(), is("\"Interval before a route is declared invalid\"")); | ||
185 | + assertThat(leafInfo.isMandatory(), is(true)); | ||
186 | + assertThat(leafInfo.getStatus(), is(YangStatusType.CURRENT)); | ||
187 | + assertThat(leafInfo.getReference(), is("\"RFC 6020\"")); | ||
188 | + } | ||
189 | + | ||
190 | + /** | ||
191 | + * Checks reference statement as sub-statement of list. | ||
192 | + */ | ||
193 | + @Test | ||
194 | + public void processListSubStatementReference() throws IOException, ParserException { | ||
195 | + | ||
196 | + YangNode node = manager.getDataModel("src/test/resources/ListSubStatementReference.yang"); | ||
197 | + | ||
198 | + assertThat((node instanceof YangModule), is(true)); | ||
199 | + | ||
200 | + // Check whether the node type is set properly to module. | ||
201 | + assertThat(node.getNodeType(), is(YangNodeType.MODULE_NODE)); | ||
202 | + | ||
203 | + // Check whether the module name is set correctly. | ||
204 | + YangModule yangNode = (YangModule) node; | ||
205 | + assertThat(yangNode.getName(), is("Test")); | ||
206 | + | ||
207 | + // Check whether the list is child of module and description value is set correctly. | ||
208 | + YangList yangList = (YangList) yangNode.getChild(); | ||
209 | + assertThat(yangList.getName(), is("valid")); | ||
210 | + assertThat(yangList.isConfig(), is(true)); | ||
211 | + assertThat(yangList.getReference(), is("\"list reference\"")); | ||
212 | + | ||
213 | + // Check whether leaf properties as set correctly. | ||
214 | + ListIterator<YangLeaf> leafIterator = yangList.getListOfLeaf().listIterator(); | ||
215 | + YangLeaf leafInfo = leafIterator.next(); | ||
216 | + | ||
217 | + assertThat(leafInfo.getLeafName(), is("invalid-interval")); | ||
218 | + assertThat(leafInfo.getDataType().getDataTypeName(), is("\"uint16\"")); | ||
219 | + assertThat(leafInfo.getDataType().getDataType(), is(YangDataTypes.UINT16)); | ||
220 | + assertThat(leafInfo.getUnits(), is("\"seconds\"")); | ||
221 | + assertThat(leafInfo.getDescription(), is("\"Interval before a route is declared invalid\"")); | ||
222 | + assertThat(leafInfo.isMandatory(), is(true)); | ||
223 | + assertThat(leafInfo.getStatus(), is(YangStatusType.CURRENT)); | ||
224 | + assertThat(leafInfo.getReference(), is("\"RFC 6020\"")); | ||
225 | + } | ||
226 | + | ||
227 | + /** | ||
228 | + * Checks valid reference statement as sub-statement of leaf-list. | ||
229 | + */ | ||
230 | + @Test | ||
231 | + public void processLeafListSubStatementReference() throws IOException, ParserException { | ||
232 | + | ||
233 | + YangNode node = manager.getDataModel("src/test/resources/LeafListSubStatementReference.yang"); | ||
234 | + | ||
235 | + // Check whether the data model tree returned is of type module. | ||
236 | + assertThat((node instanceof YangModule), is(true)); | ||
237 | + | ||
238 | + // Check whether the node type is set properly to module. | ||
239 | + assertThat(node.getNodeType(), is(YangNodeType.MODULE_NODE)); | ||
240 | + | ||
241 | + // Check whether the module name is set correctly. | ||
242 | + YangModule yangNode = (YangModule) node; | ||
243 | + assertThat(yangNode.getName(), is("Test")); | ||
244 | + | ||
245 | + ListIterator<YangLeafList> leafListIterator = yangNode.getListOfLeafList().listIterator(); | ||
246 | + YangLeafList leafListInfo = leafListIterator.next(); | ||
247 | + | ||
248 | + // Check whether description value is set correctly. | ||
249 | + assertThat(leafListInfo.getLeafName(), is("invalid-interval")); | ||
250 | + assertThat(leafListInfo.getReference(), is("\"RFC 6020\"")); | ||
251 | + } | ||
252 | +} | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
1 | +/* | ||
2 | + * Copyright 2016 Open Networking Laboratory | ||
3 | + * | ||
4 | + * Licensed under the Apache License, Version 2.0 (the "License"); | ||
5 | + * you may not use this file except in compliance with the License. | ||
6 | + * You may obtain a copy of the License at | ||
7 | + * | ||
8 | + * http://www.apache.org/licenses/LICENSE-2.0 | ||
9 | + * | ||
10 | + * Unless required by applicable law or agreed to in writing, software | ||
11 | + * distributed under the License is distributed on an "AS IS" BASIS, | ||
12 | + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
13 | + * See the License for the specific language governing permissions and | ||
14 | + * limitations under the License. | ||
15 | + */ | ||
16 | + | ||
17 | +package org.onosproject.yangutils.parser.impl.listeners; | ||
18 | + | ||
19 | +import org.junit.Rule; | ||
20 | +import org.junit.Test; | ||
21 | + | ||
22 | +import org.junit.rules.ExpectedException; | ||
23 | +import org.onosproject.yangutils.datamodel.YangLeaf; | ||
24 | +import org.onosproject.yangutils.datamodel.YangModule; | ||
25 | +import org.onosproject.yangutils.datamodel.YangNode; | ||
26 | +import org.onosproject.yangutils.datamodel.YangNodeType; | ||
27 | +import org.onosproject.yangutils.datamodel.YangDataTypes; | ||
28 | +import org.onosproject.yangutils.datamodel.YangStatusType; | ||
29 | +import org.onosproject.yangutils.datamodel.YangContainer; | ||
30 | +import org.onosproject.yangutils.datamodel.YangList; | ||
31 | +import org.onosproject.yangutils.datamodel.YangLeafList; | ||
32 | +import org.onosproject.yangutils.parser.exceptions.ParserException; | ||
33 | +import org.onosproject.yangutils.parser.impl.YangUtilsParserManager; | ||
34 | + | ||
35 | +import java.io.IOException; | ||
36 | +import java.util.ListIterator; | ||
37 | + | ||
38 | +import static org.hamcrest.MatcherAssert.assertThat; | ||
39 | +import static org.hamcrest.core.Is.is; | ||
40 | + | ||
41 | +/** | ||
42 | + * Test cases for status listener. | ||
43 | + */ | ||
44 | +public class StatusListenerTest { | ||
45 | + | ||
46 | + @Rule | ||
47 | + public ExpectedException thrown = ExpectedException.none(); | ||
48 | + | ||
49 | + private final YangUtilsParserManager manager = new YangUtilsParserManager(); | ||
50 | + | ||
51 | + /** | ||
52 | + * Checks valid status statement. | ||
53 | + */ | ||
54 | + @Test | ||
55 | + public void processStatusStatementCurrent() throws IOException, ParserException { | ||
56 | + | ||
57 | + YangNode node = manager.getDataModel("src/test/resources/StatusStatementCurrent.yang"); | ||
58 | + | ||
59 | + // Check whether the data model tree returned is of type module. | ||
60 | + assertThat((node instanceof YangModule), is(true)); | ||
61 | + | ||
62 | + // Check whether the node type is set properly to module. | ||
63 | + assertThat(node.getNodeType(), is(YangNodeType.MODULE_NODE)); | ||
64 | + | ||
65 | + // Check whether the module name is set correctly. | ||
66 | + YangModule yangNode = (YangModule) node; | ||
67 | + assertThat(yangNode.getName(), is("Test")); | ||
68 | + | ||
69 | + ListIterator<YangLeaf> leafIterator = yangNode.getListOfLeaf().listIterator(); | ||
70 | + YangLeaf leafInfo = leafIterator.next(); | ||
71 | + | ||
72 | + // Check whether the status is set correctly. | ||
73 | + assertThat(leafInfo.getLeafName(), is("invalid-interval")); | ||
74 | + assertThat(leafInfo.getStatus(), is(YangStatusType.CURRENT)); | ||
75 | + } | ||
76 | + | ||
77 | + /** | ||
78 | + * Checks valid status statement. | ||
79 | + */ | ||
80 | + @Test | ||
81 | + public void processStatusStatementDeprecated() throws IOException, ParserException { | ||
82 | + | ||
83 | + YangNode node = manager.getDataModel("src/test/resources/StatusStatementDeprecated.yang"); | ||
84 | + | ||
85 | + // Check whether the data model tree returned is of type module. | ||
86 | + assertThat((node instanceof YangModule), is(true)); | ||
87 | + | ||
88 | + // Check whether the node type is set properly to module. | ||
89 | + assertThat(node.getNodeType(), is(YangNodeType.MODULE_NODE)); | ||
90 | + | ||
91 | + // Check whether the module name is set correctly. | ||
92 | + YangModule yangNode = (YangModule) node; | ||
93 | + assertThat(yangNode.getName(), is("Test")); | ||
94 | + | ||
95 | + ListIterator<YangLeaf> leafIterator = yangNode.getListOfLeaf().listIterator(); | ||
96 | + YangLeaf leafInfo = leafIterator.next(); | ||
97 | + | ||
98 | + // Check whether the status is set correctly. | ||
99 | + assertThat(leafInfo.getLeafName(), is("invalid-interval")); | ||
100 | + assertThat(leafInfo.getStatus(), is(YangStatusType.DEPRECATED)); | ||
101 | + } | ||
102 | + | ||
103 | + /** | ||
104 | + * Checks valid status statement. | ||
105 | + */ | ||
106 | + @Test | ||
107 | + public void processStatusStatementObsolete() throws IOException, ParserException { | ||
108 | + | ||
109 | + YangNode node = manager.getDataModel("src/test/resources/StatusStatementObsolete.yang"); | ||
110 | + | ||
111 | + // Check whether the data model tree returned is of type module. | ||
112 | + assertThat((node instanceof YangModule), is(true)); | ||
113 | + | ||
114 | + // Check whether the node type is set properly to module. | ||
115 | + assertThat(node.getNodeType(), is(YangNodeType.MODULE_NODE)); | ||
116 | + | ||
117 | + // Check whether the module name is set correctly. | ||
118 | + YangModule yangNode = (YangModule) node; | ||
119 | + assertThat(yangNode.getName(), is("Test")); | ||
120 | + | ||
121 | + ListIterator<YangLeaf> leafIterator = yangNode.getListOfLeaf().listIterator(); | ||
122 | + YangLeaf leafInfo = leafIterator.next(); | ||
123 | + | ||
124 | + // Check whether the status is set correctly. | ||
125 | + assertThat(leafInfo.getLeafName(), is("invalid-interval")); | ||
126 | + assertThat(leafInfo.getStatus(), is(YangStatusType.OBSOLETE)); | ||
127 | + } | ||
128 | + | ||
129 | + /** | ||
130 | + * Checks whether exception is thrown for invalid status statement. | ||
131 | + */ | ||
132 | + @Test | ||
133 | + public void processStatusWithoutStatementEnd() throws IOException, ParserException { | ||
134 | + thrown.expect(ParserException.class); | ||
135 | + thrown.expectMessage("missing ';' at '}'"); | ||
136 | + YangNode node = manager.getDataModel("src/test/resources/StatusWithoutStatementEnd.yang"); | ||
137 | + } | ||
138 | + | ||
139 | + /** | ||
140 | + * Checks whether exception is thrown for invalid status statement. | ||
141 | + */ | ||
142 | + @Test | ||
143 | + public void processStatusInvalidValue() throws IOException, ParserException { | ||
144 | + thrown.expect(ParserException.class); | ||
145 | + thrown.expectMessage("mismatched input 'invalid' expecting {'current', 'deprecated', 'obsolete'}"); | ||
146 | + YangNode node = manager.getDataModel("src/test/resources/StatusInvalidValue.yang"); | ||
147 | + } | ||
148 | + | ||
149 | + /** | ||
150 | + * Checks status statement as sub-statement of module. | ||
151 | + */ | ||
152 | + @Test | ||
153 | + public void processModuleSubStatementStatus() throws IOException, ParserException { | ||
154 | + thrown.expect(ParserException.class); | ||
155 | + thrown.expectMessage("mismatched input 'status' expecting {'augment', 'choice', 'contact', 'container', " + | ||
156 | + "'description', 'extension', 'deviation', 'feature', 'grouping', 'identity', 'import', 'include'," + | ||
157 | + " 'leaf', 'leaf-list', 'list', 'namespace', 'notification', 'organization', 'prefix', 'reference', " + | ||
158 | + "'revision', 'rpc', 'typedef', 'uses', 'yang-version', '}'}"); | ||
159 | + YangNode node = manager.getDataModel("src/test/resources/ModuleSubStatementStatus.yang"); | ||
160 | + } | ||
161 | + | ||
162 | + /** | ||
163 | + * Checks status statement as sub-statement of container. | ||
164 | + */ | ||
165 | + @Test | ||
166 | + public void processContainerSubStatementStatus() throws IOException, ParserException { | ||
167 | + | ||
168 | + YangNode node = manager.getDataModel("src/test/resources/ContainerSubStatementStatus.yang"); | ||
169 | + | ||
170 | + // Check whether the data model tree returned is of type module. | ||
171 | + assertThat((node instanceof YangModule), is(true)); | ||
172 | + | ||
173 | + // Check whether the node type is set properly to module. | ||
174 | + assertThat(node.getNodeType(), is(YangNodeType.MODULE_NODE)); | ||
175 | + | ||
176 | + // Check whether the module name is set correctly. | ||
177 | + YangModule yangNode = (YangModule) node; | ||
178 | + assertThat(yangNode.getName(), is("Test")); | ||
179 | + | ||
180 | + // Check whether status is set correctly. | ||
181 | + YangContainer container = (YangContainer) yangNode.getChild(); | ||
182 | + assertThat(container.getName(), is("valid")); | ||
183 | + assertThat(container.isConfig(), is(true)); | ||
184 | + assertThat(container.getStatus(), is(YangStatusType.OBSOLETE)); | ||
185 | + | ||
186 | + // Check whether leaf properties as set correctly. | ||
187 | + ListIterator<YangLeaf> leafIterator = container.getListOfLeaf().listIterator(); | ||
188 | + YangLeaf leafInfo = leafIterator.next(); | ||
189 | + | ||
190 | + assertThat(leafInfo.getLeafName(), is("invalid-interval")); | ||
191 | + assertThat(leafInfo.getDataType().getDataTypeName(), is("\"uint16\"")); | ||
192 | + assertThat(leafInfo.getDataType().getDataType(), is(YangDataTypes.UINT16)); | ||
193 | + assertThat(leafInfo.getUnits(), is("\"seconds\"")); | ||
194 | + assertThat(leafInfo.getDescription(), is("\"Interval before a route is declared invalid\"")); | ||
195 | + assertThat(leafInfo.isMandatory(), is(true)); | ||
196 | + assertThat(leafInfo.getStatus(), is(YangStatusType.CURRENT)); | ||
197 | + assertThat(leafInfo.getReference(), is("\"RFC 6020\"")); | ||
198 | + } | ||
199 | + | ||
200 | + /** | ||
201 | + * Checks status statement as sub-statement of list. | ||
202 | + */ | ||
203 | + @Test | ||
204 | + public void processListSubStatementStatus() throws IOException, ParserException { | ||
205 | + | ||
206 | + YangNode node = manager.getDataModel("src/test/resources/ListSubStatementStatus.yang"); | ||
207 | + | ||
208 | + assertThat((node instanceof YangModule), is(true)); | ||
209 | + | ||
210 | + // Check whether the node type is set properly to module. | ||
211 | + assertThat(node.getNodeType(), is(YangNodeType.MODULE_NODE)); | ||
212 | + | ||
213 | + // Check whether the module name is set correctly. | ||
214 | + YangModule yangNode = (YangModule) node; | ||
215 | + assertThat(yangNode.getName(), is("Test")); | ||
216 | + | ||
217 | + // Check whether the list is child of module and status is set. | ||
218 | + YangList yangList = (YangList) yangNode.getChild(); | ||
219 | + assertThat(yangList.getName(), is("valid")); | ||
220 | + assertThat(yangList.isConfig(), is(true)); | ||
221 | + assertThat(yangList.getStatus(), is(YangStatusType.CURRENT)); | ||
222 | + | ||
223 | + // Check whether leaf properties as set correctly. | ||
224 | + ListIterator<YangLeaf> leafIterator = yangList.getListOfLeaf().listIterator(); | ||
225 | + YangLeaf leafInfo = leafIterator.next(); | ||
226 | + | ||
227 | + assertThat(leafInfo.getLeafName(), is("invalid-interval")); | ||
228 | + assertThat(leafInfo.getDataType().getDataTypeName(), is("\"uint16\"")); | ||
229 | + assertThat(leafInfo.getDataType().getDataType(), is(YangDataTypes.UINT16)); | ||
230 | + assertThat(leafInfo.getUnits(), is("\"seconds\"")); | ||
231 | + assertThat(leafInfo.getDescription(), is("\"Interval before a route is declared invalid\"")); | ||
232 | + assertThat(leafInfo.isMandatory(), is(true)); | ||
233 | + assertThat(leafInfo.getStatus(), is(YangStatusType.CURRENT)); | ||
234 | + assertThat(leafInfo.getReference(), is("\"RFC 6020\"")); | ||
235 | + } | ||
236 | + | ||
237 | + /** | ||
238 | + * Checks valid status statement as sub-statement of leaf-list. | ||
239 | + */ | ||
240 | + @Test | ||
241 | + public void processLeafListSubStatementStatus() throws IOException, ParserException { | ||
242 | + | ||
243 | + YangNode node = manager.getDataModel("src/test/resources/LeafListSubStatementStatus.yang"); | ||
244 | + | ||
245 | + // Check whether the data model tree returned is of type module. | ||
246 | + assertThat((node instanceof YangModule), is(true)); | ||
247 | + | ||
248 | + // Check whether the node type is set properly to module. | ||
249 | + assertThat(node.getNodeType(), is(YangNodeType.MODULE_NODE)); | ||
250 | + | ||
251 | + // Check whether the module name is set correctly. | ||
252 | + YangModule yangNode = (YangModule) node; | ||
253 | + assertThat(yangNode.getName(), is("Test")); | ||
254 | + | ||
255 | + ListIterator<YangLeafList> leafListIterator = yangNode.getListOfLeafList().listIterator(); | ||
256 | + YangLeafList leafListInfo = leafListIterator.next(); | ||
257 | + | ||
258 | + // Check whether status is set correctly. | ||
259 | + assertThat(leafListInfo.getLeafName(), is("invalid-interval")); | ||
260 | + assertThat(leafListInfo.isConfig(), is(true)); | ||
261 | + assertThat(leafListInfo.getStatus(), is(YangStatusType.CURRENT)); | ||
262 | + } | ||
263 | +} | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
utils/yangutils/src/test/java/org/onosproject/yangutils/parser/impl/listeners/TypeListenerTest.java
0 → 100644
1 | +package org.onosproject.yangutils.parser.impl.listeners; | ||
2 | + | ||
3 | +import org.junit.Test; | ||
4 | +import org.onosproject.yangutils.datamodel.YangLeaf; | ||
5 | +import org.onosproject.yangutils.datamodel.YangModule; | ||
6 | +import org.onosproject.yangutils.datamodel.YangNode; | ||
7 | +import org.onosproject.yangutils.datamodel.YangNodeType; | ||
8 | +import org.onosproject.yangutils.datamodel.YangDataTypes; | ||
9 | +import org.onosproject.yangutils.datamodel.YangLeafList; | ||
10 | +import org.onosproject.yangutils.parser.exceptions.ParserException; | ||
11 | +import org.onosproject.yangutils.parser.impl.YangUtilsParserManager; | ||
12 | + | ||
13 | +import java.io.IOException; | ||
14 | +import java.util.ListIterator; | ||
15 | + | ||
16 | +import static org.hamcrest.MatcherAssert.assertThat; | ||
17 | +import static org.hamcrest.core.Is.is; | ||
18 | + | ||
19 | +/** | ||
20 | + * Test case for type listener. | ||
21 | + */ | ||
22 | +public class TypeListenerTest { | ||
23 | + | ||
24 | + private final YangUtilsParserManager manager = new YangUtilsParserManager(); | ||
25 | + | ||
26 | + /** | ||
27 | + * Checks derived statement without contraints. | ||
28 | + */ | ||
29 | + @Test | ||
30 | + public void processDerivedTypeStatement() throws IOException, ParserException { | ||
31 | + | ||
32 | + YangNode node = manager.getDataModel("src/test/resources/DerivedTypeStatement.yang"); | ||
33 | + | ||
34 | + // Check whether the data model tree returned is of type module. | ||
35 | + assertThat((node instanceof YangModule), is(true)); | ||
36 | + | ||
37 | + // Check whether the node type is set properly to module. | ||
38 | + assertThat(node.getNodeType(), is(YangNodeType.MODULE_NODE)); | ||
39 | + | ||
40 | + // Check whether the module name is set correctly. | ||
41 | + YangModule yangNode = (YangModule) node; | ||
42 | + assertThat(yangNode.getName(), is("Test")); | ||
43 | + | ||
44 | + ListIterator<YangLeaf> leafIterator = yangNode.getListOfLeaf().listIterator(); | ||
45 | + YangLeaf leafInfo = leafIterator.next(); | ||
46 | + | ||
47 | + assertThat(leafInfo.getLeafName(), is("invalid-interval")); | ||
48 | + assertThat(leafInfo.getDataType().getDataTypeName(), is("\"hello\"")); | ||
49 | + assertThat(leafInfo.getDataType().getDataType(), is(YangDataTypes.DERIVED)); | ||
50 | + } | ||
51 | + | ||
52 | + /** | ||
53 | + * Checks valid yang data type. | ||
54 | + */ | ||
55 | + @Test | ||
56 | + public void processIntegerTypeStatement() throws IOException, ParserException { | ||
57 | + | ||
58 | + YangNode node = manager.getDataModel("src/test/resources/IntegerTypeStatement.yang"); | ||
59 | + | ||
60 | + // Check whether the data model tree returned is of type module. | ||
61 | + assertThat((node instanceof YangModule), is(true)); | ||
62 | + | ||
63 | + // Check whether the node type is set properly to module. | ||
64 | + assertThat(node.getNodeType(), is(YangNodeType.MODULE_NODE)); | ||
65 | + | ||
66 | + // Check whether the module name is set correctly. | ||
67 | + YangModule yangNode = (YangModule) node; | ||
68 | + assertThat(yangNode.getName(), is("Test")); | ||
69 | + | ||
70 | + ListIterator<YangLeaf> leafIterator = yangNode.getListOfLeaf().listIterator(); | ||
71 | + YangLeaf leafInfo = leafIterator.next(); | ||
72 | + | ||
73 | + assertThat(leafInfo.getLeafName(), is("invalid-interval")); | ||
74 | + assertThat(leafInfo.getDataType().getDataTypeName(), is("\"uint16\"")); | ||
75 | + assertThat(leafInfo.getDataType().getDataType(), is(YangDataTypes.UINT16)); | ||
76 | + } | ||
77 | + | ||
78 | + /** | ||
79 | + * Checks type for leaf-list. | ||
80 | + */ | ||
81 | + @Test | ||
82 | + public void processLeafListSubStatementType() throws IOException, ParserException { | ||
83 | + | ||
84 | + YangNode node = manager.getDataModel("src/test/resources/LeafListSubStatementType.yang"); | ||
85 | + | ||
86 | + // Check whether the data model tree returned is of type module. | ||
87 | + assertThat((node instanceof YangModule), is(true)); | ||
88 | + | ||
89 | + // Check whether the node type is set properly to module. | ||
90 | + assertThat(node.getNodeType(), is(YangNodeType.MODULE_NODE)); | ||
91 | + | ||
92 | + // Check whether the module name is set correctly. | ||
93 | + YangModule yangNode = (YangModule) node; | ||
94 | + assertThat(yangNode.getName(), is("Test")); | ||
95 | + | ||
96 | + ListIterator<YangLeafList> leafListIterator = yangNode.getListOfLeafList().listIterator(); | ||
97 | + YangLeafList leafListInfo = leafListIterator.next(); | ||
98 | + | ||
99 | + assertThat(leafListInfo.getLeafName(), is("invalid-interval")); | ||
100 | + assertThat(leafListInfo.getDataType().getDataTypeName(), is("\"uint16\"")); | ||
101 | + assertThat(leafListInfo.getDataType().getDataType(), is(YangDataTypes.UINT16)); | ||
102 | + } | ||
103 | +} | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
utils/yangutils/src/test/java/org/onosproject/yangutils/parser/impl/listeners/UnitsListenerTest.java
0 → 100644
1 | +/* | ||
2 | + * Copyright 2016 Open Networking Laboratory | ||
3 | + * | ||
4 | + * Licensed under the Apache License, Version 2.0 (the "License"); | ||
5 | + * you may not use this file except in compliance with the License. | ||
6 | + * You may obtain a copy of the License at | ||
7 | + * | ||
8 | + * http://www.apache.org/licenses/LICENSE-2.0 | ||
9 | + * | ||
10 | + * Unless required by applicable law or agreed to in writing, software | ||
11 | + * distributed under the License is distributed on an "AS IS" BASIS, | ||
12 | + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
13 | + * See the License for the specific language governing permissions and | ||
14 | + * limitations under the License. | ||
15 | + */ | ||
16 | + | ||
17 | +package org.onosproject.yangutils.parser.impl.listeners; | ||
18 | + | ||
19 | +import org.junit.Rule; | ||
20 | +import org.junit.Test; | ||
21 | + | ||
22 | +import org.junit.rules.ExpectedException; | ||
23 | +import org.onosproject.yangutils.datamodel.YangLeaf; | ||
24 | +import org.onosproject.yangutils.datamodel.YangModule; | ||
25 | +import org.onosproject.yangutils.datamodel.YangNode; | ||
26 | +import org.onosproject.yangutils.datamodel.YangNodeType; | ||
27 | +import org.onosproject.yangutils.datamodel.YangStatusType; | ||
28 | +import org.onosproject.yangutils.datamodel.YangLeafList; | ||
29 | +import org.onosproject.yangutils.parser.exceptions.ParserException; | ||
30 | +import org.onosproject.yangutils.parser.impl.YangUtilsParserManager; | ||
31 | + | ||
32 | +import java.io.IOException; | ||
33 | +import java.util.ListIterator; | ||
34 | + | ||
35 | +import static org.hamcrest.MatcherAssert.assertThat; | ||
36 | +import static org.hamcrest.core.Is.is; | ||
37 | +import static org.hamcrest.Matchers.nullValue; | ||
38 | + | ||
39 | +/** | ||
40 | + * Test cases for units listener. | ||
41 | + */ | ||
42 | +public class UnitsListenerTest { | ||
43 | + | ||
44 | + @Rule | ||
45 | + public ExpectedException thrown = ExpectedException.none(); | ||
46 | + | ||
47 | + private final YangUtilsParserManager manager = new YangUtilsParserManager(); | ||
48 | + | ||
49 | + /** | ||
50 | + * Checks valid units statement. | ||
51 | + */ | ||
52 | + @Test | ||
53 | + public void processUnitsStatement() throws IOException, ParserException { | ||
54 | + | ||
55 | + YangNode node = manager.getDataModel("src/test/resources/UnitsStatement.yang"); | ||
56 | + | ||
57 | + // Check whether the data model tree returned is of type module. | ||
58 | + assertThat((node instanceof YangModule), is(true)); | ||
59 | + | ||
60 | + // Check whether the node type is set properly to module. | ||
61 | + assertThat(node.getNodeType(), is(YangNodeType.MODULE_NODE)); | ||
62 | + | ||
63 | + // Check whether the module name is set correctly. | ||
64 | + YangModule yangNode = (YangModule) node; | ||
65 | + assertThat(yangNode.getName(), is("Test")); | ||
66 | + | ||
67 | + ListIterator<YangLeaf> leafIterator = yangNode.getListOfLeaf().listIterator(); | ||
68 | + YangLeaf leafInfo = leafIterator.next(); | ||
69 | + | ||
70 | + // Check whether units value is set correctly. | ||
71 | + assertThat(leafInfo.getLeafName(), is("invalid-interval")); | ||
72 | + assertThat(leafInfo.getUnits(), is("\"seconds\"")); | ||
73 | + } | ||
74 | + | ||
75 | + /** | ||
76 | + * Checks invalid units statement as sub-statement of module. | ||
77 | + */ | ||
78 | + @Test | ||
79 | + public void processModuleSubStatementUnits() throws IOException, ParserException { | ||
80 | + thrown.expect(ParserException.class); | ||
81 | + thrown.expectMessage("mismatched input 'type' expecting {'augment', 'choice', 'contact', 'container', " + | ||
82 | + "'description', 'extension', 'deviation', 'feature', 'grouping', 'identity', 'import', " + | ||
83 | + "'include', 'leaf', 'leaf-list', 'list', 'namespace', 'notification', 'organization', " + | ||
84 | + "'prefix', 'reference', 'revision', 'rpc', 'typedef', 'uses', 'yang-version', '}'}"); | ||
85 | + YangNode node = manager.getDataModel("src/test/resources/ModuleSubStatementUnits.yang"); | ||
86 | + } | ||
87 | + | ||
88 | + /** | ||
89 | + * Checks invalid units statement(without statement end). | ||
90 | + */ | ||
91 | + @Test | ||
92 | + public void processUnitsWithoutStatementEnd() throws IOException, ParserException { | ||
93 | + thrown.expect(ParserException.class); | ||
94 | + thrown.expectMessage("mismatched input '}' expecting {';', '+'}"); | ||
95 | + YangNode node = manager.getDataModel("src/test/resources/UnitsWithoutStatementEnd.yang"); | ||
96 | + } | ||
97 | + | ||
98 | + /** | ||
99 | + * Checks order of units statement in leaf. | ||
100 | + */ | ||
101 | + @Test | ||
102 | + public void processUnitsStatementOrder() throws IOException, ParserException { | ||
103 | + | ||
104 | + YangNode node = manager.getDataModel("src/test/resources/UnitsStatementOrder.yang"); | ||
105 | + | ||
106 | + // Check whether the data model tree returned is of type module. | ||
107 | + assertThat((node instanceof YangModule), is(true)); | ||
108 | + | ||
109 | + // Check whether the node type is set properly to module. | ||
110 | + assertThat(node.getNodeType(), is(YangNodeType.MODULE_NODE)); | ||
111 | + | ||
112 | + // Check whether the module name is set correctly. | ||
113 | + YangModule yangNode = (YangModule) node; | ||
114 | + assertThat(yangNode.getName(), is("Test")); | ||
115 | + | ||
116 | + ListIterator<YangLeaf> leafIterator = yangNode.getListOfLeaf().listIterator(); | ||
117 | + YangLeaf leafInfo = leafIterator.next(); | ||
118 | + | ||
119 | + // Check whether leaf properties is set correctly. | ||
120 | + assertThat(leafInfo.getLeafName(), is("invalid-interval")); | ||
121 | + assertThat(leafInfo.getDataType().getDataTypeName(), is("\"uint16\"")); | ||
122 | + assertThat(leafInfo.getUnits(), is("\"seconds\"")); | ||
123 | + assertThat(leafInfo.getDescription(), is("\"Interval before a route is declared invalid\"")); | ||
124 | + assertThat(leafInfo.isConfig(), is(true)); | ||
125 | + assertThat(leafInfo.isMandatory(), is(true)); | ||
126 | + assertThat(leafInfo.getStatus(), is(YangStatusType.CURRENT)); | ||
127 | + assertThat(leafInfo.getReference(), is("\"RFC 6020\"")); | ||
128 | + } | ||
129 | + | ||
130 | + /** | ||
131 | + * Checks the default value of unit statement. | ||
132 | + */ | ||
133 | + @Test | ||
134 | + public void processUnitsDefaultValue() throws IOException, ParserException { | ||
135 | + | ||
136 | + YangNode node = manager.getDataModel("src/test/resources/UnitsDefaultValue.yang"); | ||
137 | + | ||
138 | + // Check whether the data model tree returned is of type module. | ||
139 | + assertThat((node instanceof YangModule), is(true)); | ||
140 | + | ||
141 | + // Check whether the node type is set properly to module. | ||
142 | + assertThat(node.getNodeType(), is(YangNodeType.MODULE_NODE)); | ||
143 | + | ||
144 | + // Check whether the module name is set correctly. | ||
145 | + YangModule yangNode = (YangModule) node; | ||
146 | + assertThat(yangNode.getName(), is("Test")); | ||
147 | + | ||
148 | + ListIterator<YangLeaf> leafIterator = yangNode.getListOfLeaf().listIterator(); | ||
149 | + YangLeaf leafInfo = leafIterator.next(); | ||
150 | + | ||
151 | + assertThat(leafInfo.getLeafName(), is("invalid-interval")); | ||
152 | + assertThat(leafInfo.getUnits(), is(nullValue())); | ||
153 | + } | ||
154 | + | ||
155 | + /** | ||
156 | + * Checks invalid occurance of units statement as sub-statement of leaf. | ||
157 | + */ | ||
158 | + @Test | ||
159 | + public void processUnitsStatementCardinality() throws IOException, ParserException { | ||
160 | + thrown.expect(ParserException.class); | ||
161 | + thrown.expectMessage("Internal parser error detected: Invalid cardinality in units before processing."); | ||
162 | + YangNode node = manager.getDataModel("src/test/resources/UnitsStatementCardinality.yang"); | ||
163 | + } | ||
164 | + | ||
165 | + /** | ||
166 | + * Checks valid units statement as sub-statement of leaf-list. | ||
167 | + */ | ||
168 | + @Test | ||
169 | + public void processLeafListSubStatementUnits() throws IOException, ParserException { | ||
170 | + | ||
171 | + YangNode node = manager.getDataModel("src/test/resources/LeafListSubStatementUnits.yang"); | ||
172 | + | ||
173 | + // Check whether the data model tree returned is of type module. | ||
174 | + assertThat((node instanceof YangModule), is(true)); | ||
175 | + | ||
176 | + // Check whether the node type is set properly to module. | ||
177 | + assertThat(node.getNodeType(), is(YangNodeType.MODULE_NODE)); | ||
178 | + | ||
179 | + // Check whether the module name is set correctly. | ||
180 | + YangModule yangNode = (YangModule) node; | ||
181 | + assertThat(yangNode.getName(), is("Test")); | ||
182 | + | ||
183 | + ListIterator<YangLeafList> leafListIterator = yangNode.getListOfLeafList().listIterator(); | ||
184 | + YangLeafList leafListInfo = leafListIterator.next(); | ||
185 | + | ||
186 | + // Check whether units value is set correctly. | ||
187 | + assertThat(leafListInfo.getLeafName(), is("invalid-interval")); | ||
188 | + assertThat(leafListInfo.getUnits(), is("\"seconds\"")); | ||
189 | + } | ||
190 | +} | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
1 | +module Test { | ||
2 | + yang-version 1; | ||
3 | + namespace http://huawei.com; | ||
4 | + prefix Ant; | ||
5 | + leaf invalid-interval { | ||
6 | + type "uint16"; | ||
7 | + units "seconds"; | ||
8 | + description "Interval before a route is declared invalid"; | ||
9 | + config false; | ||
10 | + mandatory true; | ||
11 | + status current; | ||
12 | + reference "RFC 6020"; | ||
13 | + } | ||
14 | +} | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
1 | +module Test { | ||
2 | + yang-version 1; | ||
3 | + namespace http://huawei.com; | ||
4 | + prefix Ant; | ||
5 | + leaf invalid-interval { | ||
6 | + type "uint16"; | ||
7 | + units "seconds"; | ||
8 | + description "Interval before a route is declared invalid"; | ||
9 | + config true; | ||
10 | + mandatory true; | ||
11 | + status current; | ||
12 | + reference "RFC 6020"; | ||
13 | + } | ||
14 | +} | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
1 | +module Test { | ||
2 | + yang-version 1; | ||
3 | + namespace http://huawei.com; | ||
4 | + prefix Ant; | ||
5 | + container 1valid { | ||
6 | + reference "RFC 6020"; | ||
7 | + leaf invalid-interval { | ||
8 | + type "uint16"; | ||
9 | + units "seconds"; | ||
10 | + status current; | ||
11 | + reference "RFC 6020"; | ||
12 | + } | ||
13 | + } | ||
14 | +} | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
1 | +module Test { | ||
2 | + yang-version 1; | ||
3 | + namespace http://huawei.com; | ||
4 | + prefix Ant; | ||
5 | + container valid { | ||
6 | + reference "RFC 6020"; | ||
7 | + reference "RFC 6020"; | ||
8 | + leaf invalid-interval { | ||
9 | + type "uint16"; | ||
10 | + units "seconds"; | ||
11 | + status current; | ||
12 | + reference "RFC 6020"; | ||
13 | + } | ||
14 | + } | ||
15 | +} | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
1 | +module Test { | ||
2 | + yang-version 1; | ||
3 | + namespace http://huawei.com; | ||
4 | + prefix Ant; | ||
5 | + container valid { | ||
6 | + config true; | ||
7 | + leaf invalid-interval { | ||
8 | + type "uint16"; | ||
9 | + units "seconds"; | ||
10 | + description "Interval before a route is declared invalid"; | ||
11 | + mandatory true; | ||
12 | + status current; | ||
13 | + reference "RFC 6020"; | ||
14 | + } | ||
15 | + } | ||
16 | +} | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
1 | +module Test { | ||
2 | + yang-version 1; | ||
3 | + namespace http://huawei.com; | ||
4 | + prefix Ant; | ||
5 | + container ospf { | ||
6 | + container valid { | ||
7 | + leaf invalid-interval { | ||
8 | + type "uint16"; | ||
9 | + units "seconds"; | ||
10 | + status current; | ||
11 | + reference "RFC 6020"; | ||
12 | + } | ||
13 | + } | ||
14 | + } | ||
15 | +} | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
1 | +module Test { | ||
2 | + yang-version 1; | ||
3 | + namespace http://huawei.com; | ||
4 | + prefix Ant; | ||
5 | + container valid { | ||
6 | + description "container description"; | ||
7 | + config true; | ||
8 | + leaf invalid-interval { | ||
9 | + type "uint16"; | ||
10 | + units "seconds"; | ||
11 | + description "Interval before a route is declared invalid"; | ||
12 | + mandatory true; | ||
13 | + status current; | ||
14 | + reference "RFC 6020"; | ||
15 | + } | ||
16 | + } | ||
17 | +} | ||
18 | + |
1 | + | ||
2 | +module Test { | ||
3 | + yang-version 1; | ||
4 | + namespace http://huawei.com; | ||
5 | + prefix Ant; | ||
6 | + container valid { | ||
7 | + leaf invalid-interval { | ||
8 | + type "uint16"; | ||
9 | + units "seconds"; | ||
10 | + description "Interval before a route is declared invalid"; | ||
11 | + config true; | ||
12 | + mandatory true; | ||
13 | + status current; | ||
14 | + reference "RFC 6020"; | ||
15 | + } | ||
16 | + } | ||
17 | +} | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
1 | +module Test { | ||
2 | + yang-version 1; | ||
3 | + namespace http://huawei.com; | ||
4 | + prefix Ant; | ||
5 | + container valid { | ||
6 | + leaf-list invalid-interval { | ||
7 | + type "uint16"; | ||
8 | + units "seconds"; | ||
9 | + description "Interval before a route is declared invalid"; | ||
10 | + config true; | ||
11 | + min-elements 1; | ||
12 | + max-elements unbounded; | ||
13 | + status current; | ||
14 | + reference "RFC 6020"; | ||
15 | + } | ||
16 | + } | ||
17 | +} | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
1 | +module Test { | ||
2 | + yang-version 1; | ||
3 | + namespace http://huawei.com; | ||
4 | + prefix Ant; | ||
5 | + container valid { | ||
6 | + presence "invalid"; | ||
7 | + leaf invalid-interval { | ||
8 | + type "uint16"; | ||
9 | + units "seconds"; | ||
10 | + status current; | ||
11 | + reference "RFC 6020"; | ||
12 | + } | ||
13 | + } | ||
14 | +} | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
1 | +module Test { | ||
2 | + yang-version 1; | ||
3 | + namespace http://huawei.com; | ||
4 | + prefix Ant; | ||
5 | + container valid { | ||
6 | + reference "container reference"; | ||
7 | + config true; | ||
8 | + leaf invalid-interval { | ||
9 | + type "uint16"; | ||
10 | + units "seconds"; | ||
11 | + description "Interval before a route is declared invalid"; | ||
12 | + mandatory true; | ||
13 | + status current; | ||
14 | + reference "RFC 6020"; | ||
15 | + } | ||
16 | + } | ||
17 | +} | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
1 | +module Test { | ||
2 | + yang-version 1; | ||
3 | + namespace http://huawei.com; | ||
4 | + prefix Ant; | ||
5 | + container valid { | ||
6 | + config true; | ||
7 | + status obsolete; | ||
8 | + leaf invalid-interval { | ||
9 | + type "uint16"; | ||
10 | + units "seconds"; | ||
11 | + description "Interval before a route is declared invalid"; | ||
12 | + mandatory true; | ||
13 | + status current; | ||
14 | + reference "RFC 6020"; | ||
15 | + } | ||
16 | + } | ||
17 | +} | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
1 | +module Test { | ||
2 | + yang-version 1; | ||
3 | + namespace http://huawei.com; | ||
4 | + prefix Ant; | ||
5 | + container ospf { | ||
6 | + presence "ospf logs"; | ||
7 | + config true; | ||
8 | + description "container description"; | ||
9 | + status current; | ||
10 | + reference "container reference"; | ||
11 | + leaf invalid-interval { | ||
12 | + type "uint16"; | ||
13 | + units "seconds"; | ||
14 | + status current; | ||
15 | + reference "RFC 6020"; | ||
16 | + } | ||
17 | + } | ||
18 | +} | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
1 | +module Test { | ||
2 | + yang-version 1; | ||
3 | + namespace http://huawei.com; | ||
4 | + prefix Ant; | ||
5 | + leaf invalid-interval { | ||
6 | + type "uint16"; | ||
7 | + units "seconds"; | ||
8 | + description "Interval before a route is declared invalid"; | ||
9 | + config true; | ||
10 | + mandatory true; | ||
11 | + status current; | ||
12 | + reference "RFC 6020"; | ||
13 | + } | ||
14 | +} | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
1 | +module Test { | ||
2 | + yang-version 1; | ||
3 | + namespace http://huawei.com; | ||
4 | + prefix Ant; | ||
5 | + list valid { | ||
6 | + key "invalid" | ||
7 | + leaf invalid-interval { | ||
8 | + type "uint16"; | ||
9 | + units "seconds"; | ||
10 | + status current; | ||
11 | + reference "RFC 6020"; | ||
12 | + } | ||
13 | + } | ||
14 | +} | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
1 | +module Test { | ||
2 | + yang-version 1; | ||
3 | + namespace http://huawei.com; | ||
4 | + prefix Ant; | ||
5 | + leaf invalid-interval { | ||
6 | + type "uint16"; | ||
7 | + units "seconds"; | ||
8 | + description "Interval before a route is declared invalid"; | ||
9 | + config true; | ||
10 | + config false; | ||
11 | + mandatory true; | ||
12 | + status current; | ||
13 | + reference "RFC 6020"; | ||
14 | + } | ||
15 | +} | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
1 | +module Test { | ||
2 | + yang-version 1; | ||
3 | + namespace http://huawei.com; | ||
4 | + prefix Ant; | ||
5 | + leaf 1invalid-interval { | ||
6 | + type "uint16"; | ||
7 | + units "seconds"; | ||
8 | + description "Interval before a route is declared invalid"; | ||
9 | + config true; | ||
10 | + mandatory true; | ||
11 | + status current; | ||
12 | + reference "RFC 6020"; | ||
13 | + } | ||
14 | +} | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
1 | +module Test { | ||
2 | + yang-version 1; | ||
3 | + namespace http://huawei.com; | ||
4 | + prefix Ant; | ||
5 | + leafs invalid-interval { | ||
6 | + type "uint16"; | ||
7 | + units "seconds"; | ||
8 | + description "Interval before a route is declared invalid"; | ||
9 | + config true; | ||
10 | + mandatory true; | ||
11 | + status current; | ||
12 | + reference "RFC 6020"; | ||
13 | + } | ||
14 | +} | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
1 | +module Test { | ||
2 | + yang-version 1; | ||
3 | + namespace http://huawei.com; | ||
4 | + prefix Ant; | ||
5 | + leaf-list invalid-interval { | ||
6 | + type "uint16"; | ||
7 | + units "seconds"; | ||
8 | + description "Interval before a route is declared invalid"; | ||
9 | + config true; | ||
10 | + config false; | ||
11 | + status current; | ||
12 | + reference "RFC 6020"; | ||
13 | + } | ||
14 | +} | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
1 | +module Test { | ||
2 | + yang-version 1; | ||
3 | + namespace http://huawei.com; | ||
4 | + prefix Ant; | ||
5 | + leaf-list 1invalid-interval { | ||
6 | + type "uint16"; | ||
7 | + units "seconds"; | ||
8 | + description "Interval before a route is declared invalid"; | ||
9 | + config true; | ||
10 | + status current; | ||
11 | + reference "RFC 6020"; | ||
12 | + } | ||
13 | +} | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
1 | +module Test { | ||
2 | + yang-version 1; | ||
3 | + namespace http://huawei.com; | ||
4 | + prefix Ant; | ||
5 | + leaflist invalid-interval { | ||
6 | + type "uint16"; | ||
7 | + units "seconds"; | ||
8 | + description "Interval before a route is declared invalid"; | ||
9 | + config true; | ||
10 | + status current; | ||
11 | + reference "RFC 6020"; | ||
12 | + } | ||
13 | +} | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
1 | +module Test { | ||
2 | + yang-version 1; | ||
3 | + namespace http://huawei.com; | ||
4 | + prefix Ant; | ||
5 | + leaf-list invalid-interval { | ||
6 | + type "uint16"; | ||
7 | + units "seconds"; | ||
8 | + description "Interval before a route is declared invalid"; | ||
9 | + config true; | ||
10 | + status current; | ||
11 | + reference "RFC 6020"; | ||
12 | + } | ||
13 | +} | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
1 | +module Test { | ||
2 | + yang-version 1; | ||
3 | + namespace http://huawei.com; | ||
4 | + prefix Ant; | ||
5 | + leaf-list invalid-interval { | ||
6 | + type "uint16"; | ||
7 | + units "seconds"; | ||
8 | + description "Interval before a route is declared invalid"; | ||
9 | + config true; | ||
10 | + status current; | ||
11 | + reference "RFC 6020"; | ||
12 | + } | ||
13 | +} | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
1 | +module Test { | ||
2 | + yang-version 1; | ||
3 | + namespace http://huawei.com; | ||
4 | + prefix Ant; | ||
5 | + leaf-list invalid-interval { | ||
6 | + type "uint16"; | ||
7 | + units "seconds"; | ||
8 | + description "Interval before a route is declared invalid"; | ||
9 | + config true; | ||
10 | + status current; | ||
11 | + reference "RFC 6020"; | ||
12 | + } | ||
13 | +} | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
1 | +module Test { | ||
2 | + yang-version 1; | ||
3 | + namespace http://huawei.com; | ||
4 | + prefix Ant; | ||
5 | + leaf-list invalid-interval { | ||
6 | + type "uint16"; | ||
7 | + units "seconds"; | ||
8 | + description "Interval before a route is declared invalid"; | ||
9 | + config true; | ||
10 | + status current; | ||
11 | + reference "RFC 6020"; | ||
12 | + } | ||
13 | +} | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
1 | +module Test { | ||
2 | + yang-version 1; | ||
3 | + namespace http://huawei.com; | ||
4 | + prefix Ant; | ||
5 | + leaf-list invalid-interval { | ||
6 | + type "uint16"; | ||
7 | + units "seconds"; | ||
8 | + description "Interval before a route is declared invalid"; | ||
9 | + config true; | ||
10 | + status current; | ||
11 | + reference "RFC 6020"; | ||
12 | + } | ||
13 | +} | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
1 | +module Test { | ||
2 | + yang-version 1; | ||
3 | + namespace http://huawei.com; | ||
4 | + prefix Ant; | ||
5 | + leaf-list invalid-interval { | ||
6 | + type "uint16"; | ||
7 | + units "seconds"; | ||
8 | + max-elements 3; | ||
9 | + description "Interval before a route is declared invalid"; | ||
10 | + config true; | ||
11 | + status current; | ||
12 | + reference "RFC 6020"; | ||
13 | + } | ||
14 | +} | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
1 | +module Test { | ||
2 | + yang-version 1; | ||
3 | + namespace http://huawei.com; | ||
4 | + prefix Ant; | ||
5 | + leaf-list invalid-interval { | ||
6 | + type "uint16"; | ||
7 | + units "seconds"; | ||
8 | + units "minutes"; | ||
9 | + description "Interval before a route is declared invalid"; | ||
10 | + config true; | ||
11 | + status current; | ||
12 | + reference "RFC 6020"; | ||
13 | + } | ||
14 | +} | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
1 | +module Test { | ||
2 | + yang-version 1; | ||
3 | + namespace http://huawei.com; | ||
4 | + prefix Ant; | ||
5 | + leaf-list invalid-interval | ||
6 | + type "uint16"; | ||
7 | + units "seconds"; | ||
8 | + description "Interval before a route is declared invalid"; | ||
9 | + config true; | ||
10 | + status current; | ||
11 | + reference "RFC 6020"; | ||
12 | + } | ||
13 | +} | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
1 | +module Test { | ||
2 | + yang-version 1; | ||
3 | + namespace http://huawei.com; | ||
4 | + prefix Ant; | ||
5 | + leaf invalid-interval { | ||
6 | + type "uint16"; | ||
7 | + units "seconds"; | ||
8 | + description "Interval before a route is declared invalid"; | ||
9 | + config true; | ||
10 | + mandatory true; | ||
11 | + mandatory false; | ||
12 | + status current; | ||
13 | + reference "RFC 6020"; | ||
14 | + } | ||
15 | +} | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
1 | +module Test { | ||
2 | + yang-version 1; | ||
3 | + namespace http://huawei.com; | ||
4 | + prefix Ant; | ||
5 | + leaf invalid-interval { | ||
6 | + type "uint16"; | ||
7 | + units "seconds"; | ||
8 | + description "Interval before a route is declared invalid"; | ||
9 | + config true; | ||
10 | + mandatory true; | ||
11 | + status current; | ||
12 | + reference "RFC 6020"; | ||
13 | + } | ||
14 | +} | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
1 | +module Test { | ||
2 | + yang-version 1; | ||
3 | + namespace http://huawei.com; | ||
4 | + prefix Ant; | ||
5 | + leaf invalid-interval | ||
6 | + type "uint16"; | ||
7 | + units "seconds"; | ||
8 | + description "Interval before a route is declared invalid"; | ||
9 | + config true; | ||
10 | + mandatory true; | ||
11 | + status current; | ||
12 | + reference "RFC 6020"; | ||
13 | + } | ||
14 | +} | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
1 | +module Test { | ||
2 | + yang-version 1; | ||
3 | + namespace http://huawei.com; | ||
4 | + prefix Ant; | ||
5 | + list 1valid { | ||
6 | + key "invalid-interval"; | ||
7 | + reference "RFC 6020"; | ||
8 | + leaf invalid-interval { | ||
9 | + type "uint16"; | ||
10 | + units "seconds"; | ||
11 | + status current; | ||
12 | + reference "RFC 6020"; | ||
13 | + } | ||
14 | + } | ||
15 | +} | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
1 | +module Test { | ||
2 | + yang-version 1; | ||
3 | + namespace http://huawei.com; | ||
4 | + prefix Ant; | ||
5 | + list valid { | ||
6 | + key "invalid-interval"; | ||
7 | + config true; | ||
8 | + leaf invalid-interval { | ||
9 | + type "uint16"; | ||
10 | + units "seconds"; | ||
11 | + description "Interval before a route is declared invalid"; | ||
12 | + mandatory true; | ||
13 | + status current; | ||
14 | + reference "RFC 6020"; | ||
15 | + } | ||
16 | + } | ||
17 | +} | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
1 | +module Test { | ||
2 | + yang-version 1; | ||
3 | + namespace http://huawei.com; | ||
4 | + prefix Ant; | ||
5 | + list ospf { | ||
6 | + key "process-id"; | ||
7 | + container interface { | ||
8 | + leaf invalid-interval { | ||
9 | + type "uint16"; | ||
10 | + units "seconds"; | ||
11 | + status current; | ||
12 | + reference "RFC 6020"; | ||
13 | + } | ||
14 | + } | ||
15 | + } | ||
16 | +} | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
1 | +module Test { | ||
2 | + yang-version 1; | ||
3 | + namespace http://huawei.com; | ||
4 | + prefix Ant; | ||
5 | + list valid { | ||
6 | + key "invalid-interval"; | ||
7 | + description "list description"; | ||
8 | + config true; | ||
9 | + leaf invalid-interval { | ||
10 | + type "uint16"; | ||
11 | + units "seconds"; | ||
12 | + description "Interval before a route is declared invalid"; | ||
13 | + mandatory true; | ||
14 | + status current; | ||
15 | + reference "RFC 6020"; | ||
16 | + } | ||
17 | + } | ||
18 | +} | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
1 | +module Test { | ||
2 | + yang-version 1; | ||
3 | + namespace http://huawei.com; | ||
4 | + prefix Ant; | ||
5 | + list valid { | ||
6 | + key "invalid-interval"; | ||
7 | + leaf invalid-interval { | ||
8 | + type "uint16"; | ||
9 | + units "seconds"; | ||
10 | + description "Interval before a route is declared invalid"; | ||
11 | + config true; | ||
12 | + mandatory true; | ||
13 | + status current; | ||
14 | + reference "RFC 6020"; | ||
15 | + } | ||
16 | + } | ||
17 | +} | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
1 | + | ||
2 | +module Test { | ||
3 | + yang-version 1; | ||
4 | + namespace http://huawei.com; | ||
5 | + prefix Ant; | ||
6 | + list valid { | ||
7 | + key "invalid-interval"; | ||
8 | + leaf-list invalid-interval { | ||
9 | + type "uint16"; | ||
10 | + units "seconds"; | ||
11 | + description "Interval before a route is declared invalid"; | ||
12 | + config true; | ||
13 | + status current; | ||
14 | + reference "RFC 6020"; | ||
15 | + } | ||
16 | + } | ||
17 | +} | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
1 | +module Test { | ||
2 | + yang-version 1; | ||
3 | + namespace http://huawei.com; | ||
4 | + prefix Ant; | ||
5 | + list ospf { | ||
6 | + key "process-id"; | ||
7 | + list valid { | ||
8 | + key "invalid"; | ||
9 | + leaf invalid-interval { | ||
10 | + type "uint16"; | ||
11 | + units "seconds"; | ||
12 | + status current; | ||
13 | + reference "RFC 6020"; | ||
14 | + } | ||
15 | + } | ||
16 | + } | ||
17 | +} | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
1 | +module Test { | ||
2 | + yang-version 1; | ||
3 | + namespace http://huawei.com; | ||
4 | + prefix Ant; | ||
5 | + list valid { | ||
6 | + key "invalid-interval"; | ||
7 | + max-elements 3; | ||
8 | + leaf-list invalid-interval { | ||
9 | + type "uint16"; | ||
10 | + units "seconds"; | ||
11 | + description "Interval before a route is declared invalid"; | ||
12 | + } | ||
13 | + } | ||
14 | +} | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
1 | +module Test { | ||
2 | + yang-version 1; | ||
3 | + namespace http://huawei.com; | ||
4 | + prefix Ant; | ||
5 | + list valid { | ||
6 | + key "invalid-interval"; | ||
7 | + min-elements 3; | ||
8 | + leaf-list invalid-interval { | ||
9 | + type "uint16"; | ||
10 | + units "seconds"; | ||
11 | + description "Interval before a route is declared invalid"; | ||
12 | + } | ||
13 | + } | ||
14 | +} | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
1 | +module Test { | ||
2 | + yang-version 1; | ||
3 | + namespace http://huawei.com; | ||
4 | + prefix Ant; | ||
5 | + list valid { | ||
6 | + key "invalid-interval"; | ||
7 | + reference "list reference"; | ||
8 | + config true; | ||
9 | + leaf invalid-interval { | ||
10 | + type "uint16"; | ||
11 | + units "seconds"; | ||
12 | + description "Interval before a route is declared invalid"; | ||
13 | + mandatory true; | ||
14 | + status current; | ||
15 | + reference "RFC 6020"; | ||
16 | + } | ||
17 | + } | ||
18 | +} | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
1 | +module Test { | ||
2 | + yang-version 1; | ||
3 | + namespace http://huawei.com; | ||
4 | + prefix Ant; | ||
5 | + list valid { | ||
6 | + key "invalid-interval"; | ||
7 | + status current; | ||
8 | + config true; | ||
9 | + leaf invalid-interval { | ||
10 | + type "uint16"; | ||
11 | + units "seconds"; | ||
12 | + description "Interval before a route is declared invalid"; | ||
13 | + mandatory true; | ||
14 | + status current; | ||
15 | + reference "RFC 6020"; | ||
16 | + } | ||
17 | + } | ||
18 | +} |
1 | +module Test { | ||
2 | + yang-version 1; | ||
3 | + namespace http://huawei.com; | ||
4 | + prefix Ant; | ||
5 | + list ospf { | ||
6 | + key "process-id"; | ||
7 | + config true; | ||
8 | + max-elements 10; | ||
9 | + min-elements 3; | ||
10 | + description "list description"; | ||
11 | + status current; | ||
12 | + reference "list reference"; | ||
13 | + leaf invalid-interval { | ||
14 | + type "uint16"; | ||
15 | + units "seconds"; | ||
16 | + status current; | ||
17 | + reference "RFC 6020"; | ||
18 | + } | ||
19 | + } | ||
20 | +} | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
1 | +module Test { | ||
2 | + yang-version 1; | ||
3 | + namespace http://huawei.com; | ||
4 | + prefix Ant; | ||
5 | + list valid { | ||
6 | + key "invalid-interval"; | ||
7 | + reference "RFC 6020"; | ||
8 | + reference "RFC 6020"; | ||
9 | + leaf invalid-interval { | ||
10 | + type "uint16"; | ||
11 | + units "seconds"; | ||
12 | + status current; | ||
13 | + reference "RFC 6020"; | ||
14 | + } | ||
15 | + } | ||
16 | +} |
1 | +module Test { | ||
2 | + yang-version 1; | ||
3 | + namespace http://huawei.com; | ||
4 | + prefix Ant; | ||
5 | + leaf invalid-interval { | ||
6 | + type "uint16"; | ||
7 | + units "seconds"; | ||
8 | + description "Interval before a route is declared invalid"; | ||
9 | + config true; | ||
10 | + mandatory true; | ||
11 | + status current; | ||
12 | + reference "RFC 6020"; | ||
13 | + } | ||
14 | +} | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
1 | +module Test { | ||
2 | + yang-version 1; | ||
3 | + namespace http://huawei.com; | ||
4 | + prefix Ant; | ||
5 | + leaf-list invalid-interval { | ||
6 | + type "uint16"; | ||
7 | + units "seconds"; | ||
8 | + max-elements 4; | ||
9 | + max-elements 6; | ||
10 | + description "Interval before a route is declared invalid"; | ||
11 | + config true; | ||
12 | + status current; | ||
13 | + reference "RFC 6020"; | ||
14 | + } | ||
15 | +} |
1 | +module Test { | ||
2 | + yang-version 1; | ||
3 | + namespace http://huawei.com; | ||
4 | + prefix Ant; | ||
5 | + leaf-list invalid-interval { | ||
6 | + type "uint16"; | ||
7 | + units "seconds"; | ||
8 | + max-element 3; | ||
9 | + description "Interval before a route is declared invalid; | ||
10 | + config true; | ||
11 | + status current; | ||
12 | + reference "RFC 6020"; | ||
13 | + } | ||
14 | +} |
1 | +module Test { | ||
2 | + yang-version 1; | ||
3 | + namespace http://huawei.com; | ||
4 | + prefix Ant; | ||
5 | + leaf-list invalid-interval { | ||
6 | + type "uint16"; | ||
7 | + units "seconds"; | ||
8 | + max-elements 3 | ||
9 | + description "Interval before a route is declared invalid"; | ||
10 | + config true; | ||
11 | + status current; | ||
12 | + reference "RFC 6020"; | ||
13 | + } | ||
14 | +} |
1 | +module Test { | ||
2 | + yang-version 1; | ||
3 | + namespace http://huawei.com; | ||
4 | + prefix Ant; | ||
5 | + leaf-list invalid-interval { | ||
6 | + type "uint16"; | ||
7 | + units "seconds"; | ||
8 | + min-elements 4; | ||
9 | + min-elements 6; | ||
10 | + description "Interval before a route is declared invalid"; | ||
11 | + config true; | ||
12 | + status current; | ||
13 | + reference "RFC 6020"; | ||
14 | + } | ||
15 | +} |
1 | +module Test { | ||
2 | + yang-version 1; | ||
3 | + namespace http://huawei.com; | ||
4 | + prefix Ant; | ||
5 | + leaf-list invalid-interval { | ||
6 | + type "uint16"; | ||
7 | + units "seconds"; | ||
8 | + min-element 3; | ||
9 | + description "Interval before a route is declared invalid"; | ||
10 | + config true; | ||
11 | + status current; | ||
12 | + reference "RFC 6020"; | ||
13 | + } | ||
14 | +} | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
1 | +module Test { | ||
2 | + yang-version 1; | ||
3 | + namespace http://huawei.com; | ||
4 | + prefix Ant; | ||
5 | + leaf-list invalid-interval { | ||
6 | + type "uint16"; | ||
7 | + units "seconds"; | ||
8 | + min-elements asd; | ||
9 | + description "Interval before a route is declared invalid"; | ||
10 | + config true; | ||
11 | + status current; | ||
12 | + reference "RFC 6020"; | ||
13 | + } | ||
14 | +} | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
1 | +module Test { | ||
2 | + yang-version 1; | ||
3 | + namespace http://huawei.com; | ||
4 | + prefix Ant; | ||
5 | + leaf-list invalid-interval { | ||
6 | + type "uint16"; | ||
7 | + units "seconds"; | ||
8 | + min-elements 3 | ||
9 | + description "Interval before a route is declared invalid"; | ||
10 | + config true; | ||
11 | + status current; | ||
12 | + reference "RFC 6020"; | ||
13 | + } | ||
14 | +} | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
1 | +module Test { | ||
2 | + yang-version 1; | ||
3 | + namespace http://huawei.com; | ||
4 | + prefix Ant; | ||
5 | + container valid { | ||
6 | + leaf invalid-interval { | ||
7 | + type "uint16"; | ||
8 | + units "seconds"; | ||
9 | + status current; | ||
10 | + reference "RFC 6020"; | ||
11 | + } | ||
12 | + } | ||
13 | +} | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
1 | +module Test { | ||
2 | + yang-version 1; | ||
3 | + namespace http://huawei.com; | ||
4 | + prefix Ant; | ||
5 | + list valid { | ||
6 | + key "invalid"; | ||
7 | + leaf invalid-interval { | ||
8 | + type "uint16"; | ||
9 | + units "seconds"; | ||
10 | + status current; | ||
11 | + reference "RFC 6020"; | ||
12 | + } | ||
13 | + } | ||
14 | +} | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
1 | +module Test { | ||
2 | + yang-version 1; | ||
3 | + namespace http://huawei.com; | ||
4 | + prefix Ant; | ||
5 | + list valid { | ||
6 | + key "ospf isis"; | ||
7 | + leaf ospf { | ||
8 | + type "uint16"; | ||
9 | + units "seconds"; | ||
10 | + status current; | ||
11 | + reference "RFC 6020"; | ||
12 | + } | ||
13 | + leaf isis { | ||
14 | + type "uint16"; | ||
15 | + units "seconds"; | ||
16 | + status current; | ||
17 | + reference "RFC 6020"; | ||
18 | + } | ||
19 | + } | ||
20 | +} | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
1 | +module Test { | ||
2 | + yang-version 1; | ||
3 | + namespace http://huawei.com; | ||
4 | + prefix Ant; | ||
5 | + leaf invalid-interval { | ||
6 | + type "uint16"; | ||
7 | + units "seconds"; | ||
8 | + description "Interval before a route is declared invalid"; | ||
9 | + config true; | ||
10 | + mandatory true; | ||
11 | + status current; | ||
12 | + reference "RFC 6020"; | ||
13 | + } | ||
14 | +} | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
1 | +module Test { | ||
2 | + yang-version 1; | ||
3 | + namespace http://huawei.com; | ||
4 | + prefix Ant; | ||
5 | + leaf invalid-interval { | ||
6 | + type "uint16"; | ||
7 | + units "seconds"; | ||
8 | + description "Interval before a route is declared invalid"; | ||
9 | + config true; | ||
10 | + mandatory true; | ||
11 | + status current; | ||
12 | + reference "RFC 6020"; | ||
13 | + } | ||
14 | +} |
1 | +module Test { | ||
2 | + yang-version 1; | ||
3 | + namespace http://huawei.com; | ||
4 | + prefix Ant; | ||
5 | + leaf invalid-interval { | ||
6 | + type "uint16"; | ||
7 | + units "seconds"; | ||
8 | + description "Interval before a route is declared invalid"; | ||
9 | + config true; | ||
10 | + mandatory true; | ||
11 | + status current; | ||
12 | + reference "RFC 6020"; | ||
13 | + } | ||
14 | +} | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
1 | +module Test { | ||
2 | + yang-version 1; | ||
3 | + namespace http://huawei.com; | ||
4 | + prefix Ant; | ||
5 | + leaf invalid-interval { | ||
6 | + units "seconds"; | ||
7 | + type "uint16"; | ||
8 | + description "Interval before a route is declared invalid"; | ||
9 | + config true; | ||
10 | + mandatory true; | ||
11 | + status current; | ||
12 | + reference "RFC 6020"; | ||
13 | + } | ||
14 | +} |
-
Please register or login to post a comment