2 * Copyright (c) 2016 Cisco Systems, Inc. and others. All rights reserved.
4 * This program and the accompanying materials are made available under the
5 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6 * and is available at http://www.eclipse.org/legal/epl-v10.html
8 package org.opendaylight.mdsal.binding.generator.impl;
10 import static org.junit.Assert.assertEquals;
11 import static org.junit.Assert.assertNotNull;
14 import org.junit.Before;
15 import org.junit.BeforeClass;
16 import org.junit.Test;
17 import org.opendaylight.mdsal.binding.yang.types.TypeProviderImpl;
18 import org.opendaylight.yangtools.yang.common.QName;
19 import org.opendaylight.yangtools.yang.common.Revision;
20 import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode;
21 import org.opendaylight.yangtools.yang.model.api.LeafSchemaNode;
22 import org.opendaylight.yangtools.yang.model.api.Module;
23 import org.opendaylight.yangtools.yang.model.api.SchemaContext;
24 import org.opendaylight.yangtools.yang.model.api.TypeDefinition;
25 import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils;
27 public class TypeProviderIntegrationTest {
28 private final String PKG = "org.opendaylight.yang.gen.v1.urn.opendaylight.test.rev131008.";
29 private static SchemaContext context;
30 private TypeProviderImpl provider;
34 public static void setup() {
35 context = YangParserTestUtils.parseYangResources(TypeProviderIntegrationTest.class, "/type-provider/test.yang",
36 "/ietf/ietf-inet-types.yang");
37 assertNotNull(context);
42 provider = new TypeProviderImpl(context);
43 m = context.findModule("test", Revision.of("2013-10-08")).get();
47 public void testGetTypeDefaultConstructionBinary() {
48 final QName leafNode1 = QName.create(m.getQNameModule(), "leaf-binary");
49 LeafSchemaNode leaf = (LeafSchemaNode) m.getDataChildByName(leafNode1);
50 String actual = provider.getTypeDefaultConstruction(leaf);
51 assertEquals("new byte[] {77, 97, 110}", actual);
53 final QName leafNode2 = QName.create(m.getQNameModule(), "ext-binary");
54 leaf = (LeafSchemaNode) m.getDataChildByName(leafNode2);
55 actual = provider.getTypeDefaultConstruction(leaf);
56 assertEquals("new " + PKG + "MyBinary(new byte[] {77, 97, 110})", actual);
60 public void testGetTypeDefaultConstructionBits() {
61 final QName leafNode1 = QName.create(m.getQNameModule(), "leaf-bits");
62 LeafSchemaNode leaf = (LeafSchemaNode) m.getDataChildByName(leafNode1);
63 String actual = provider.getTypeDefaultConstruction(leaf);
64 assertEquals("new " + PKG + "TestData.LeafBits(false, false, true)", actual);
66 final QName leafNode2 = QName.create(m.getQNameModule(), "ext-bits");
67 leaf = (LeafSchemaNode) m.getDataChildByName(leafNode2);
68 actual = provider.getTypeDefaultConstruction(leaf);
69 assertEquals("new " + PKG + "MyBits(false, false, true)", actual);
73 public void testGetTypeDefaultConstructionBoolean() {
74 final QName leafNode1 = QName.create(m.getQNameModule(), "leaf-boolean");
75 LeafSchemaNode leaf = (LeafSchemaNode) m.getDataChildByName(leafNode1);
76 String actual = provider.getTypeDefaultConstruction(leaf);
77 assertEquals("java.lang.Boolean.TRUE", actual);
79 final QName leafNode2 = QName.create(m.getQNameModule(), "ext-boolean");
80 leaf = (LeafSchemaNode) m.getDataChildByName(leafNode2);
81 actual = provider.getTypeDefaultConstruction(leaf);
82 assertEquals("new " + PKG + "MyBoolean(java.lang.Boolean.TRUE)", actual);
86 public void testGetTypeDefaultConstructionDecimal() {
87 final QName leafNode1 = QName.create(m.getQNameModule(), "leaf-decimal64");
88 LeafSchemaNode leaf = (LeafSchemaNode) m.getDataChildByName(leafNode1);
89 String actual = provider.getTypeDefaultConstruction(leaf);
90 assertEquals("new java.math.BigDecimal(\"3.14\")", actual);
92 final QName leafNode2 = QName.create(m.getQNameModule(), "ext-decimal64");
93 leaf = (LeafSchemaNode) m.getDataChildByName(leafNode2);
94 actual = provider.getTypeDefaultConstruction(leaf);
95 assertEquals("new " + PKG + "MyDecimal64(new java.math.BigDecimal(\"3.14\"))", actual);
99 public void testGetTypeDefaultConstructionEmpty() {
100 final QName leafNode1 = QName.create(m.getQNameModule(), "leaf-empty");
101 LeafSchemaNode leaf = (LeafSchemaNode) m.getDataChildByName(leafNode1);
102 String actual = provider.getTypeDefaultConstruction(leaf);
103 assertEquals("java.lang.Boolean.FALSE", actual);
105 final QName leafNode2 = QName.create(m.getQNameModule(), "ext-empty");
106 leaf = (LeafSchemaNode) m.getDataChildByName(leafNode2);
107 actual = provider.getTypeDefaultConstruction(leaf);
108 assertEquals("new " + PKG + "MyEmpty(java.lang.Boolean.FALSE)", actual);
112 public void testGetTypeDefaultConstructionEnumeration() {
113 final QName leafNode1 = QName.create(m.getQNameModule(), "leaf-enumeration");
114 LeafSchemaNode leaf = (LeafSchemaNode) m.getDataChildByName(leafNode1);
115 String actual = provider.getTypeDefaultConstruction(leaf);
116 assertEquals("org.opendaylight.yang.gen.v1.urn.opendaylight.test.rev131008.LeafEnumeration.Seven", actual);
118 final QName leafNode2 = QName.create(m.getQNameModule(), "ext-enumeration");
119 leaf = (LeafSchemaNode) m.getDataChildByName(leafNode2);
120 actual = provider.getTypeDefaultConstruction(leaf);
121 assertEquals(PKG + "MyEnumeration.Seven", actual);
125 public void testGetTypeDefaultConstructionInt8() {
126 final QName leafNode1 = QName.create(m.getQNameModule(), "leaf-int8");
127 LeafSchemaNode leaf = (LeafSchemaNode) m.getDataChildByName(leafNode1);
128 String actual = provider.getTypeDefaultConstruction(leaf);
129 assertEquals("java.lang.Byte.valueOf(\"11\")", actual);
131 final QName leafNode2 = QName.create(m.getQNameModule(), "ext-int8");
132 leaf = (LeafSchemaNode) m.getDataChildByName(leafNode2);
133 actual = provider.getTypeDefaultConstruction(leaf);
134 assertEquals("new " + PKG + "MyInt8(java.lang.Byte.valueOf(\"11\"))", actual);
138 public void testGetTypeDefaultConstructionInt16() {
139 final QName leafNode1 = QName.create(m.getQNameModule(), "leaf-int16");
140 LeafSchemaNode leaf = (LeafSchemaNode) m.getDataChildByName(leafNode1);
141 String actual = provider.getTypeDefaultConstruction(leaf);
142 assertEquals("java.lang.Short.valueOf(\"111\")", actual);
144 final QName leafNode2 = QName.create(m.getQNameModule(), "ext-int16");
145 leaf = (LeafSchemaNode) m.getDataChildByName(leafNode2);
146 actual = provider.getTypeDefaultConstruction(leaf);
147 assertEquals("new " + PKG + "MyInt16(java.lang.Short.valueOf(\"111\"))", actual);
151 public void testGetTypeDefaultConstructionInt32() {
152 final QName leafNode1 = QName.create(m.getQNameModule(), "leaf-int32");
153 LeafSchemaNode leaf = (LeafSchemaNode) m.getDataChildByName(leafNode1);
154 String actual = provider.getTypeDefaultConstruction(leaf);
155 assertEquals("java.lang.Integer.valueOf(\"1111\")", actual);
157 final QName leafNode2 = QName.create(m.getQNameModule(), "ext-int32");
158 leaf = (LeafSchemaNode) m.getDataChildByName(leafNode2);
159 actual = provider.getTypeDefaultConstruction(leaf);
160 assertEquals("new " + PKG + "MyInt32(java.lang.Integer.valueOf(\"1111\"))", actual);
164 public void testGetTypeDefaultConstructionInt64() {
165 final QName leafNode1 = QName.create(m.getQNameModule(), "leaf-int64");
166 LeafSchemaNode leaf = (LeafSchemaNode) m.getDataChildByName(leafNode1);
167 String actual = provider.getTypeDefaultConstruction(leaf);
168 assertEquals("java.lang.Long.valueOf(\"11111\")", actual);
170 final QName leafNode2 = QName.create(m.getQNameModule(), "ext-int64");
171 leaf = (LeafSchemaNode) m.getDataChildByName(leafNode2);
172 actual = provider.getTypeDefaultConstruction(leaf);
173 assertEquals("new " + PKG + "MyInt64(java.lang.Long.valueOf(\"11111\"))", actual);
177 public void testGetTypeDefaultConstructionLeafref1() {
178 final QName leafNode1 = QName.create(m.getQNameModule(), "leaf-leafref");
179 LeafSchemaNode leaf = (LeafSchemaNode) m.getDataChildByName(leafNode1);
180 String actual = provider.getTypeDefaultConstruction(leaf);
181 assertEquals("new java.math.BigDecimal(\"1.234\")", actual);
183 final QName leafNode2 = QName.create(m.getQNameModule(), "ext-leafref");
184 leaf = (LeafSchemaNode) m.getDataChildByName(leafNode2);
185 actual = provider.getTypeDefaultConstruction(leaf);
186 assertEquals("new java.math.BigDecimal(\"1.234\")", actual);
190 public void testGetTypeDefaultConstructionLeafref2() {
191 final QName leafNode1 = QName.create(m.getQNameModule(), "leaf-leafref1");
192 LeafSchemaNode leaf = (LeafSchemaNode) m.getDataChildByName(leafNode1);
193 String actual = provider.getTypeDefaultConstruction(leaf);
194 assertEquals("new " + PKG + "MyBinary(new byte[] {77, 97, 110})", actual);
196 final QName leafNode2 = QName.create(m.getQNameModule(), "ext-leafref1");
197 leaf = (LeafSchemaNode) m.getDataChildByName(leafNode2);
198 actual = provider.getTypeDefaultConstruction(leaf);
199 assertEquals("new " + PKG + "MyBinary(new byte[] {77, 97, 110})", actual);
203 public void testGetTypeDefaultConstructionString() {
204 final QName leafNode1 = QName.create(m.getQNameModule(), "leaf-string");
205 LeafSchemaNode leaf = (LeafSchemaNode) m.getDataChildByName(leafNode1);
206 String actual = provider.getTypeDefaultConstruction(leaf);
207 assertEquals("\"name\"", actual);
209 final QName leafNode2 = QName.create(m.getQNameModule(), "ext-string");
210 leaf = (LeafSchemaNode) m.getDataChildByName(leafNode2);
211 actual = provider.getTypeDefaultConstruction(leaf);
212 assertEquals("new " + PKG + "MyString(\"name\")", actual);
216 public void testGetTypeDefaultConstructionUint8() {
217 final QName leafNode1 = QName.create(m.getQNameModule(), "leaf-uint8");
218 LeafSchemaNode leaf = (LeafSchemaNode) m.getDataChildByName(leafNode1);
219 String actual = provider.getTypeDefaultConstruction(leaf);
220 assertEquals("java.lang.Short.valueOf(\"11\")", actual);
222 final QName leafNode2 = QName.create(m.getQNameModule(), "ext-uint8");
223 leaf = (LeafSchemaNode) m.getDataChildByName(leafNode2);
224 actual = provider.getTypeDefaultConstruction(leaf);
225 assertEquals("new " + PKG + "MyUint8(java.lang.Short.valueOf(\"11\"))", actual);
229 public void testGetTypeDefaultConstructionUint16() {
230 final QName leafNode1 = QName.create(m.getQNameModule(), "leaf-uint16");
231 LeafSchemaNode leaf = (LeafSchemaNode) m.getDataChildByName(leafNode1);
232 String actual = provider.getTypeDefaultConstruction(leaf);
233 assertEquals("java.lang.Integer.valueOf(\"111\")", actual);
235 final QName leafNode2 = QName.create(m.getQNameModule(), "ext-uint16");
236 leaf = (LeafSchemaNode) m.getDataChildByName(leafNode2);
237 actual = provider.getTypeDefaultConstruction(leaf);
238 assertEquals("new " + PKG + "MyUint16(java.lang.Integer.valueOf(\"111\"))", actual);
242 public void testGetTypeDefaultConstructionUint32() {
243 final QName leafNode1 = QName.create(m.getQNameModule(), "leaf-uint32");
244 LeafSchemaNode leaf = (LeafSchemaNode) m.getDataChildByName(leafNode1);
245 String actual = provider.getTypeDefaultConstruction(leaf);
246 assertEquals("java.lang.Long.valueOf(\"1111\")", actual);
248 final QName leafNode2 = QName.create(m.getQNameModule(), "ext-uint32");
249 leaf = (LeafSchemaNode) m.getDataChildByName(leafNode2);
250 actual = provider.getTypeDefaultConstruction(leaf);
251 assertEquals("new " + PKG + "MyUint32(java.lang.Long.valueOf(\"1111\"))", actual);
255 public void testGetTypeDefaultConstructionUint64() {
256 final QName leafNode1 = QName.create(m.getQNameModule(), "leaf-uint64");
257 LeafSchemaNode leaf = (LeafSchemaNode) m.getDataChildByName(leafNode1);
258 String actual = provider.getTypeDefaultConstruction(leaf);
259 assertEquals("new java.math.BigInteger(\"11111\")", actual);
261 final QName leafNode2 = QName.create(m.getQNameModule(), "ext-uint64");
262 leaf = (LeafSchemaNode) m.getDataChildByName(leafNode2);
263 actual = provider.getTypeDefaultConstruction(leaf);
264 assertEquals("new " + PKG + "MyUint64(new java.math.BigInteger(\"11111\"))", actual);
268 public void testGetTypeDefaultConstruction() {
269 final QName leafNode = QName.create(m.getQNameModule(), "ip-leaf");
270 LeafSchemaNode leaf = (LeafSchemaNode) m.getDataChildByName(leafNode);
271 String actual = provider.getTypeDefaultConstruction(leaf);
272 String exp = "new org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Ipv4Address(\"0.0.0.1\")";
273 assertEquals(exp, actual);
277 public void testGetTypeDefaultConstructionUnion() {
278 final QName leafNode1 = QName.create(m.getQNameModule(), "leaf-union");
279 LeafSchemaNode leaf = (LeafSchemaNode) m.getDataChildByName(leafNode1);
280 String actual = provider.getTypeDefaultConstruction(leaf);
281 String expected = "new " + PKG + "TestData.LeafUnion(\"111\".toCharArray())";
282 assertEquals(expected, actual);
284 final QName leafNode2 = QName.create(m.getQNameModule(), "ext-union");
285 leaf = (LeafSchemaNode) m.getDataChildByName(leafNode2);
286 actual = provider.getTypeDefaultConstruction(leaf);
287 expected = "new " + PKG + "MyUnion(\"111\".toCharArray())";
288 assertEquals(expected, actual);
292 public void testGetTypeDefaultConstructionUnionNested() {
293 final QName containerNode1 = QName.create(m.getQNameModule(), "c1");
294 ContainerSchemaNode c1 = (ContainerSchemaNode) m.getDataChildByName(containerNode1);
295 final QName containerNode2 = QName.create(m.getQNameModule(), "c2");
296 ContainerSchemaNode c2 = (ContainerSchemaNode) c1.getDataChildByName(containerNode2);
297 final QName containerNode3 = QName.create(m.getQNameModule(), "c3");
298 ContainerSchemaNode c3 = (ContainerSchemaNode) c2.getDataChildByName(containerNode3);
299 final QName leafNode = QName.create(m.getQNameModule(), "id");
300 LeafSchemaNode leaf = (LeafSchemaNode) c3.getDataChildByName(leafNode);
302 String actual = provider.getTypeDefaultConstruction(leaf);
303 String expected = "new " + PKG + "NestedUnion(\"111\".toCharArray())";
304 assertEquals(expected, actual);
308 public void testGetParamNameFromType() {
309 m = context.findModule("ietf-inet-types", Revision.of("2010-09-24")).get();
310 Set<TypeDefinition<?>> types = m.getTypeDefinitions();
311 TypeDefinition<?> ipv4 = null;
312 TypeDefinition<?> ipv6 = null;
313 TypeDefinition<?> ipv4Pref = null;
314 TypeDefinition<?> ipv6Pref = null;
315 for (TypeDefinition<?> type : types) {
316 if ("ipv4-address".equals(type.getQName().getLocalName())) {
318 } else if ("ipv6-address".equals(type.getQName().getLocalName())) {
320 } else if ("ipv4-prefix".equals(type.getQName().getLocalName())) {
322 } else if ("ipv6-prefix".equals(type.getQName().getLocalName())) {
329 assertNotNull(ipv4Pref);
330 assertNotNull(ipv6Pref);
331 assertEquals("ipv4Address", provider.getParamNameFromType(ipv4));
332 assertEquals("ipv6Address", provider.getParamNameFromType(ipv6));
333 assertEquals("ipv4Prefix", provider.getParamNameFromType(ipv4Pref));
334 assertEquals("ipv6Prefix", provider.getParamNameFromType(ipv6Pref));