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.yangtools.sal.binding.generator.impl;
10 import static org.junit.Assert.assertEquals;
11 import static org.junit.Assert.assertNotNull;
14 import java.text.ParseException;
15 import java.text.SimpleDateFormat;
17 import org.junit.Before;
18 import org.junit.BeforeClass;
19 import org.junit.Test;
20 import org.opendaylight.yangtools.sal.binding.yang.types.TypeProviderImpl;
21 import org.opendaylight.yangtools.yang.common.QName;
22 import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode;
23 import org.opendaylight.yangtools.yang.model.api.LeafSchemaNode;
24 import org.opendaylight.yangtools.yang.model.api.Module;
25 import org.opendaylight.yangtools.yang.model.api.SchemaContext;
26 import org.opendaylight.yangtools.yang.model.api.TypeDefinition;
28 public class TypeProviderIntegrationTest {
29 private final String PKG = "org.opendaylight.yang.gen.v1.urn.opendaylight.test.rev131008.";
30 private static SchemaContext context;
31 private TypeProviderImpl provider;
35 public static void setup() throws Exception {
36 File abstractTopology = new File(TypeProviderIntegrationTest.class.getResource("/type-provider/test.yang")
38 File ietfInetTypes = new File(TypeProviderIntegrationTest.class.getResource("/ietf/ietf-inet-types.yang")
40 context = TestUtils.parseYangSources(abstractTopology, ietfInetTypes);
41 assertNotNull(context);
45 public void init() throws ParseException {
46 provider = new TypeProviderImpl(context);
47 m = context.findModuleByName("test", new SimpleDateFormat("yyyy-MM-dd").parse("2013-10-08"));
51 public void testGetTypeDefaultConstructionBinary() throws ParseException {
52 final QName leafNode1 = QName.create(m.getQNameModule(), "leaf-binary");
53 LeafSchemaNode leaf = (LeafSchemaNode) m.getDataChildByName(leafNode1);
54 String actual = provider.getTypeDefaultConstruction(leaf);
55 assertEquals("new byte[] {77, 97, 110}", actual);
57 final QName leafNode2 = QName.create(m.getQNameModule(), "ext-binary");
58 leaf = (LeafSchemaNode) m.getDataChildByName(leafNode2);
59 actual = provider.getTypeDefaultConstruction(leaf);
60 assertEquals("new " + PKG + "MyBinary(new byte[] {77, 97, 110})", actual);
64 public void testGetTypeDefaultConstructionBits() throws ParseException {
65 final QName leafNode1 = QName.create(m.getQNameModule(), "leaf-bits");
66 LeafSchemaNode leaf = (LeafSchemaNode) m.getDataChildByName(leafNode1);
67 String actual = provider.getTypeDefaultConstruction(leaf);
68 assertEquals("new " + PKG + "TestData.LeafBits(false, false, true)", actual);
70 final QName leafNode2 = QName.create(m.getQNameModule(), "ext-bits");
71 leaf = (LeafSchemaNode) m.getDataChildByName(leafNode2);
72 actual = provider.getTypeDefaultConstruction(leaf);
73 assertEquals("new " + PKG + "MyBits(false, false, true)", actual);
77 public void testGetTypeDefaultConstructionBoolean() throws ParseException {
78 final QName leafNode1 = QName.create(m.getQNameModule(), "leaf-boolean");
79 LeafSchemaNode leaf = (LeafSchemaNode) m.getDataChildByName(leafNode1);
80 String actual = provider.getTypeDefaultConstruction(leaf);
81 assertEquals("new java.lang.Boolean(\"true\")", actual);
83 final QName leafNode2 = QName.create(m.getQNameModule(), "ext-boolean");
84 leaf = (LeafSchemaNode) m.getDataChildByName(leafNode2);
85 actual = provider.getTypeDefaultConstruction(leaf);
86 assertEquals("new " + PKG + "MyBoolean(new java.lang.Boolean(\"true\"))", actual);
90 public void testGetTypeDefaultConstructionDecimal() throws ParseException {
91 final QName leafNode1 = QName.create(m.getQNameModule(), "leaf-decimal64");
92 LeafSchemaNode leaf = (LeafSchemaNode) m.getDataChildByName(leafNode1);
93 String actual = provider.getTypeDefaultConstruction(leaf);
94 assertEquals("new java.math.BigDecimal(\"3.14\")", actual);
96 final QName leafNode2 = QName.create(m.getQNameModule(), "ext-decimal64");
97 leaf = (LeafSchemaNode) m.getDataChildByName(leafNode2);
98 actual = provider.getTypeDefaultConstruction(leaf);
99 assertEquals("new " + PKG + "MyDecimal64(new java.math.BigDecimal(\"3.14\"))", actual);
103 public void testGetTypeDefaultConstructionEmpty() throws ParseException {
104 final QName leafNode1 = QName.create(m.getQNameModule(), "leaf-empty");
105 LeafSchemaNode leaf = (LeafSchemaNode) m.getDataChildByName(leafNode1);
106 String actual = provider.getTypeDefaultConstruction(leaf);
107 assertEquals("new java.lang.Boolean(\"false\")", actual);
109 final QName leafNode2 = QName.create(m.getQNameModule(), "ext-empty");
110 leaf = (LeafSchemaNode) m.getDataChildByName(leafNode2);
111 actual = provider.getTypeDefaultConstruction(leaf);
112 assertEquals("new " + PKG + "MyEmpty(new java.lang.Boolean(\"false\"))", actual);
116 public void testGetTypeDefaultConstructionEnumeration() throws ParseException {
117 final QName leafNode1 = QName.create(m.getQNameModule(), "leaf-enumeration");
118 LeafSchemaNode leaf = (LeafSchemaNode) m.getDataChildByName(leafNode1);
119 String actual = provider.getTypeDefaultConstruction(leaf);
120 assertEquals("org.opendaylight.yang.gen.v1.urn.opendaylight.test.rev131008.LeafEnumeration.Seven", actual);
122 final QName leafNode2 = QName.create(m.getQNameModule(), "ext-enumeration");
123 leaf = (LeafSchemaNode) m.getDataChildByName(leafNode2);
124 actual = provider.getTypeDefaultConstruction(leaf);
125 assertEquals(PKG + "MyEnumeration.Seven", actual);
129 public void testGetTypeDefaultConstructionInt8() throws ParseException {
130 final QName leafNode1 = QName.create(m.getQNameModule(), "leaf-int8");
131 LeafSchemaNode leaf = (LeafSchemaNode) m.getDataChildByName(leafNode1);
132 String actual = provider.getTypeDefaultConstruction(leaf);
133 assertEquals("new java.lang.Byte(\"11\")", actual);
135 final QName leafNode2 = QName.create(m.getQNameModule(), "ext-int8");
136 leaf = (LeafSchemaNode) m.getDataChildByName(leafNode2);
137 actual = provider.getTypeDefaultConstruction(leaf);
138 assertEquals("new " + PKG + "MyInt8(new java.lang.Byte(\"11\"))", actual);
142 public void testGetTypeDefaultConstructionInt16() throws ParseException {
143 final QName leafNode1 = QName.create(m.getQNameModule(), "leaf-int16");
144 LeafSchemaNode leaf = (LeafSchemaNode) m.getDataChildByName(leafNode1);
145 String actual = provider.getTypeDefaultConstruction(leaf);
146 assertEquals("new java.lang.Short(\"111\")", actual);
148 final QName leafNode2 = QName.create(m.getQNameModule(), "ext-int16");
149 leaf = (LeafSchemaNode) m.getDataChildByName(leafNode2);
150 actual = provider.getTypeDefaultConstruction(leaf);
151 assertEquals("new " + PKG + "MyInt16(new java.lang.Short(\"111\"))", actual);
155 public void testGetTypeDefaultConstructionInt32() throws ParseException {
156 final QName leafNode1 = QName.create(m.getQNameModule(), "leaf-int32");
157 LeafSchemaNode leaf = (LeafSchemaNode) m.getDataChildByName(leafNode1);
158 String actual = provider.getTypeDefaultConstruction(leaf);
159 assertEquals("new java.lang.Integer(\"1111\")", actual);
161 final QName leafNode2 = QName.create(m.getQNameModule(), "ext-int32");
162 leaf = (LeafSchemaNode) m.getDataChildByName(leafNode2);
163 actual = provider.getTypeDefaultConstruction(leaf);
164 assertEquals("new " + PKG + "MyInt32(new java.lang.Integer(\"1111\"))", actual);
168 public void testGetTypeDefaultConstructionInt64() throws ParseException {
169 final QName leafNode1 = QName.create(m.getQNameModule(), "leaf-int64");
170 LeafSchemaNode leaf = (LeafSchemaNode) m.getDataChildByName(leafNode1);
171 String actual = provider.getTypeDefaultConstruction(leaf);
172 assertEquals("new java.lang.Long(\"11111\")", actual);
174 final QName leafNode2 = QName.create(m.getQNameModule(), "ext-int64");
175 leaf = (LeafSchemaNode) m.getDataChildByName(leafNode2);
176 actual = provider.getTypeDefaultConstruction(leaf);
177 assertEquals("new " + PKG + "MyInt64(new java.lang.Long(\"11111\"))", actual);
181 public void testGetTypeDefaultConstructionLeafref1() throws ParseException {
182 final QName leafNode1 = QName.create(m.getQNameModule(), "leaf-leafref");
183 LeafSchemaNode leaf = (LeafSchemaNode) m.getDataChildByName(leafNode1);
184 String actual = provider.getTypeDefaultConstruction(leaf);
185 assertEquals("new java.math.BigDecimal(\"1.234\")", actual);
187 final QName leafNode2 = QName.create(m.getQNameModule(), "ext-leafref");
188 leaf = (LeafSchemaNode) m.getDataChildByName(leafNode2);
189 actual = provider.getTypeDefaultConstruction(leaf);
190 assertEquals("new java.math.BigDecimal(\"1.234\")", actual);
194 public void testGetTypeDefaultConstructionLeafref2() throws ParseException {
195 final QName leafNode1 = QName.create(m.getQNameModule(), "leaf-leafref1");
196 LeafSchemaNode leaf = (LeafSchemaNode) m.getDataChildByName(leafNode1);
197 String actual = provider.getTypeDefaultConstruction(leaf);
198 assertEquals("new " + PKG + "MyBinary(new byte[] {77, 97, 110})", actual);
200 final QName leafNode2 = QName.create(m.getQNameModule(), "ext-leafref1");
201 leaf = (LeafSchemaNode) m.getDataChildByName(leafNode2);
202 actual = provider.getTypeDefaultConstruction(leaf);
203 assertEquals("new " + PKG + "MyBinary(new byte[] {77, 97, 110})", actual);
207 public void testGetTypeDefaultConstructionString() throws ParseException {
208 final QName leafNode1 = QName.create(m.getQNameModule(), "leaf-string");
209 LeafSchemaNode leaf = (LeafSchemaNode) m.getDataChildByName(leafNode1);
210 String actual = provider.getTypeDefaultConstruction(leaf);
211 assertEquals("\"name\"", actual);
213 final QName leafNode2 = QName.create(m.getQNameModule(), "ext-string");
214 leaf = (LeafSchemaNode) m.getDataChildByName(leafNode2);
215 actual = provider.getTypeDefaultConstruction(leaf);
216 assertEquals("new " + PKG + "MyString(\"name\")", actual);
220 public void testGetTypeDefaultConstructionUint8() throws ParseException {
221 final QName leafNode1 = QName.create(m.getQNameModule(), "leaf-uint8");
222 LeafSchemaNode leaf = (LeafSchemaNode) m.getDataChildByName(leafNode1);
223 String actual = provider.getTypeDefaultConstruction(leaf);
224 assertEquals("new java.lang.Short(\"11\")", actual);
226 final QName leafNode2 = QName.create(m.getQNameModule(), "ext-uint8");
227 leaf = (LeafSchemaNode) m.getDataChildByName(leafNode2);
228 actual = provider.getTypeDefaultConstruction(leaf);
229 assertEquals("new " + PKG + "MyUint8(new java.lang.Short(\"11\"))", actual);
233 public void testGetTypeDefaultConstructionUint16() throws ParseException {
234 final QName leafNode1 = QName.create(m.getQNameModule(), "leaf-uint16");
235 LeafSchemaNode leaf = (LeafSchemaNode) m.getDataChildByName(leafNode1);
236 String actual = provider.getTypeDefaultConstruction(leaf);
237 assertEquals("new java.lang.Integer(\"111\")", actual);
239 final QName leafNode2 = QName.create(m.getQNameModule(), "ext-uint16");
240 leaf = (LeafSchemaNode) m.getDataChildByName(leafNode2);
241 actual = provider.getTypeDefaultConstruction(leaf);
242 assertEquals("new " + PKG + "MyUint16(new java.lang.Integer(\"111\"))", actual);
246 public void testGetTypeDefaultConstructionUint32() throws ParseException {
247 final QName leafNode1 = QName.create(m.getQNameModule(), "leaf-uint32");
248 LeafSchemaNode leaf = (LeafSchemaNode) m.getDataChildByName(leafNode1);
249 String actual = provider.getTypeDefaultConstruction(leaf);
250 assertEquals("new java.lang.Long(\"1111\")", actual);
252 final QName leafNode2 = QName.create(m.getQNameModule(), "ext-uint32");
253 leaf = (LeafSchemaNode) m.getDataChildByName(leafNode2);
254 actual = provider.getTypeDefaultConstruction(leaf);
255 assertEquals("new " + PKG + "MyUint32(new java.lang.Long(\"1111\"))", actual);
259 public void testGetTypeDefaultConstructionUint64() throws ParseException {
260 final QName leafNode1 = QName.create(m.getQNameModule(), "leaf-uint64");
261 LeafSchemaNode leaf = (LeafSchemaNode) m.getDataChildByName(leafNode1);
262 String actual = provider.getTypeDefaultConstruction(leaf);
263 assertEquals("new java.math.BigInteger(\"11111\")", actual);
265 final QName leafNode2 = QName.create(m.getQNameModule(), "ext-uint64");
266 leaf = (LeafSchemaNode) m.getDataChildByName(leafNode2);
267 actual = provider.getTypeDefaultConstruction(leaf);
268 assertEquals("new " + PKG + "MyUint64(new java.math.BigInteger(\"11111\"))", actual);
272 public void testGetTypeDefaultConstruction() throws ParseException {
273 final QName leafNode = QName.create(m.getQNameModule(), "ip-leaf");
274 LeafSchemaNode leaf = (LeafSchemaNode) m.getDataChildByName(leafNode);
275 String actual = provider.getTypeDefaultConstruction(leaf);
276 String exp = "new org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Ipv4Address(\"0.0.0.1\")";
277 assertEquals(exp, actual);
281 public void testGetTypeDefaultConstructionUnion() throws ParseException {
282 final QName leafNode1 = QName.create(m.getQNameModule(), "leaf-union");
283 LeafSchemaNode leaf = (LeafSchemaNode) m.getDataChildByName(leafNode1);
284 String actual = provider.getTypeDefaultConstruction(leaf);
285 String expected = "new " + PKG + "TestData.LeafUnion(\"111\".toCharArray())";
286 assertEquals(expected, actual);
288 final QName leafNode2 = QName.create(m.getQNameModule(), "ext-union");
289 leaf = (LeafSchemaNode) m.getDataChildByName(leafNode2);
290 actual = provider.getTypeDefaultConstruction(leaf);
291 expected = "new " + PKG + "MyUnion(\"111\".toCharArray())";
292 assertEquals(expected, actual);
296 public void testGetTypeDefaultConstructionUnionNested() throws ParseException {
297 final QName containerNode1 = QName.create(m.getQNameModule(), "c1");
298 ContainerSchemaNode c1 = (ContainerSchemaNode) m.getDataChildByName(containerNode1);
299 final QName containerNode2 = QName.create(m.getQNameModule(), "c2");
300 ContainerSchemaNode c2 = (ContainerSchemaNode) c1.getDataChildByName(containerNode2);
301 final QName containerNode3 = QName.create(m.getQNameModule(), "c3");
302 ContainerSchemaNode c3 = (ContainerSchemaNode) c2.getDataChildByName(containerNode3);
303 final QName leafNode = QName.create(m.getQNameModule(), "id");
304 LeafSchemaNode leaf = (LeafSchemaNode) c3.getDataChildByName(leafNode);
306 String actual = provider.getTypeDefaultConstruction(leaf);
307 String expected = "new " + PKG + "NestedUnion(\"111\".toCharArray())";
308 assertEquals(expected, actual);
312 public void testGetParamNameFromType() throws ParseException {
313 m = context.findModuleByName("ietf-inet-types", new SimpleDateFormat("yyyy-MM-dd").parse("2010-09-24"));
314 Set<TypeDefinition<?>> types = m.getTypeDefinitions();
315 TypeDefinition<?> ipv4 = null;
316 TypeDefinition<?> ipv6 = null;
317 TypeDefinition<?> ipv4Pref = null;
318 TypeDefinition<?> ipv6Pref = null;
319 for (TypeDefinition<?> type : types) {
320 if ("ipv4-address".equals(type.getQName().getLocalName())) {
322 } else if ("ipv6-address".equals(type.getQName().getLocalName())) {
324 } else if ("ipv4-prefix".equals(type.getQName().getLocalName())) {
326 } else if ("ipv6-prefix".equals(type.getQName().getLocalName())) {
333 assertNotNull(ipv4Pref);
334 assertNotNull(ipv6Pref);
335 assertEquals("ipv4Address", provider.getParamNameFromType(ipv4));
336 assertEquals("ipv6Address", provider.getParamNameFromType(ipv6));
337 assertEquals("ipv4Prefix", provider.getParamNameFromType(ipv4Pref));
338 assertEquals("ipv6Prefix", provider.getParamNameFromType(ipv6Pref));