2 * Copyright (c) 2013 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;
16 import java.util.ArrayList;
17 import java.util.List;
20 import org.junit.Ignore;
21 import org.junit.Test;
22 import org.opendaylight.yangtools.sal.binding.yang.types.TypeProviderImpl;
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.parser.api.YangModelParser;
27 import org.opendaylight.yangtools.yang.parser.impl.YangParserImpl;
29 public class TypeProviderIntegrationTest {
30 private final String PKG = "org.opendaylight.yang.gen.v1.urn.opendaylight.test.rev131008.";
32 private SchemaContext resolveSchemaContextFromFiles(final String... yangFiles) {
33 final YangModelParser parser = new YangParserImpl();
35 final List<File> inputFiles = new ArrayList<File>();
36 for (int i = 0; i < yangFiles.length; ++i) {
37 inputFiles.add(new File(yangFiles[i]));
40 final Set<Module> modules = parser.parseYangModels(inputFiles);
41 return parser.resolveSchemaContext(modules);
45 public void testGetTypeDefaultConstruction1() throws ParseException {
46 final String path1 = getClass().getResource("/type-provider/test.yang").getPath();
47 final String path2 = getClass().getResource("/type-provider/ietf-inet-types@2010-09-24.yang").getPath();
48 final SchemaContext context = resolveSchemaContextFromFiles(path1, path2);
49 assertNotNull(context);
50 TypeProviderImpl provider = new TypeProviderImpl(context);
51 Module m = context.findModuleByName("test", new SimpleDateFormat("yyyy-MM-dd").parse("2013-10-08"));
53 LeafSchemaNode leaf = (LeafSchemaNode)m.getDataChildByName("id-binary");
54 String actual = provider.getTypeDefaultConstruction(leaf);
55 assertEquals("new byte[] {77, 97, 110}", actual);
57 leaf = (LeafSchemaNode)m.getDataChildByName("id-bits");
58 actual = provider.getTypeDefaultConstruction(leaf);
59 assertEquals("new " + PKG + "TestData.IdBits(false, false, true)", actual);
61 leaf = (LeafSchemaNode)m.getDataChildByName("id-boolean");
62 actual = provider.getTypeDefaultConstruction(leaf);
63 assertEquals("new java.lang.Boolean(\"true\")", actual);
65 leaf = (LeafSchemaNode)m.getDataChildByName("id-decimal64");
66 actual = provider.getTypeDefaultConstruction(leaf);
67 assertEquals("new java.math.BigDecimal(\"3.14\")", actual);
69 leaf = (LeafSchemaNode)m.getDataChildByName("id-empty");
70 actual = provider.getTypeDefaultConstruction(leaf);
71 assertEquals("new java.lang.Boolean(\"false\")", actual);
73 leaf = (LeafSchemaNode)m.getDataChildByName("id-enumeration");
74 actual = provider.getTypeDefaultConstruction(leaf);
75 //assertEquals("org.opendaylight.yang.gen.v1.urn.opendaylight.test.rev131008.IdEnumeration.Seven", actual);
77 leaf = (LeafSchemaNode)m.getDataChildByName("id-8");
78 actual = provider.getTypeDefaultConstruction(leaf);
79 assertEquals("new java.lang.Byte(\"11\")", actual);
81 leaf = (LeafSchemaNode)m.getDataChildByName("id-16");
82 actual = provider.getTypeDefaultConstruction(leaf);
83 assertEquals("new java.lang.Short(\"111\")", actual);
85 leaf = (LeafSchemaNode)m.getDataChildByName("id-32");
86 actual = provider.getTypeDefaultConstruction(leaf);
87 assertEquals("new java.lang.Integer(\"1111\")", actual);
89 leaf = (LeafSchemaNode)m.getDataChildByName("id-64");
90 actual = provider.getTypeDefaultConstruction(leaf);
91 assertEquals("new java.lang.Long(\"11111\")", actual);
93 leaf = (LeafSchemaNode)m.getDataChildByName("id-leafref");
94 actual = provider.getTypeDefaultConstruction(leaf);
95 assertEquals("new java.math.BigDecimal(\"1.234\")", actual);
97 leaf = (LeafSchemaNode)m.getDataChildByName("id-string");
98 actual = provider.getTypeDefaultConstruction(leaf);
99 assertEquals("\"name\"", actual);
101 leaf = (LeafSchemaNode)m.getDataChildByName("id-u8");
102 actual = provider.getTypeDefaultConstruction(leaf);
103 assertEquals("new java.lang.Short(\"11\")", actual);
105 leaf = (LeafSchemaNode)m.getDataChildByName("id-u16");
106 actual = provider.getTypeDefaultConstruction(leaf);
107 assertEquals("new java.lang.Integer(\"111\")", actual);
109 leaf = (LeafSchemaNode)m.getDataChildByName("id-u32");
110 actual = provider.getTypeDefaultConstruction(leaf);
111 assertEquals("new java.lang.Long(\"1111\")", actual);
113 leaf = (LeafSchemaNode)m.getDataChildByName("id-u64");
114 actual = provider.getTypeDefaultConstruction(leaf);
115 assertEquals("new java.math.BigInteger(\"11111\")", actual);
120 public void testGetTypeDefaultConstruction2() throws ParseException {
121 final String path1 = getClass().getResource("/type-provider/test.yang").getPath();
122 final String path2 = getClass().getResource("/type-provider/ietf-inet-types@2010-09-24.yang").getPath();
123 final SchemaContext context = resolveSchemaContextFromFiles(path1, path2);
124 assertNotNull(context);
125 TypeProviderImpl provider = new TypeProviderImpl(context);
126 Module m = context.findModuleByName("test", new SimpleDateFormat("yyyy-MM-dd").parse("2013-10-08"));
128 LeafSchemaNode leaf = (LeafSchemaNode)m.getDataChildByName("ext-binary");
129 String actual = provider.getTypeDefaultConstruction(leaf);
130 assertEquals("new " + PKG + "MyBinary(new byte[] {77, 97, 110})", actual);
132 leaf = (LeafSchemaNode)m.getDataChildByName("ext-bits");
133 actual = provider.getTypeDefaultConstruction(leaf);
134 //assertEquals("new " + PKG + "MyBits(false, false, true)", actual);
136 leaf = (LeafSchemaNode)m.getDataChildByName("ext-boolean");
137 actual = provider.getTypeDefaultConstruction(leaf);
138 assertEquals("new " + PKG + "MyBoolean(new java.lang.Boolean(\"true\"))", actual);
140 leaf = (LeafSchemaNode)m.getDataChildByName("ext-decimal64");
141 actual = provider.getTypeDefaultConstruction(leaf);
142 assertEquals("new " + PKG + "MyDecimal64(new java.math.BigDecimal(\"3.14\"))", actual);
144 leaf = (LeafSchemaNode)m.getDataChildByName("ext-empty");
145 actual = provider.getTypeDefaultConstruction(leaf);
146 assertEquals("new " + PKG + "MyEmpty(new java.lang.Boolean(\"false\"))", actual);
148 leaf = (LeafSchemaNode)m.getDataChildByName("ext-enumeration");
149 actual = provider.getTypeDefaultConstruction(leaf);
150 assertEquals("new " + PKG + "MyEnumeration(" + PKG + "MyEnumeration.Seven)", actual);
152 leaf = (LeafSchemaNode)m.getDataChildByName("ext-8");
153 actual = provider.getTypeDefaultConstruction(leaf);
154 assertEquals("new " + PKG + "My8(new java.lang.Byte(\"11\"))", actual);
156 leaf = (LeafSchemaNode)m.getDataChildByName("ext-16");
157 actual = provider.getTypeDefaultConstruction(leaf);
158 assertEquals("new " + PKG + "My16(new java.lang.Short(\"111\"))", actual);
160 leaf = (LeafSchemaNode)m.getDataChildByName("ext-32");
161 actual = provider.getTypeDefaultConstruction(leaf);
162 assertEquals("new " + PKG + "My32(new java.lang.Integer(\"1111\"))", actual);
164 leaf = (LeafSchemaNode)m.getDataChildByName("ext-64");
165 actual = provider.getTypeDefaultConstruction(leaf);
166 assertEquals("new " + PKG + "My64(new java.lang.Long(\"11111\"))", actual);
168 leaf = (LeafSchemaNode)m.getDataChildByName("ext-leafref");
169 actual = provider.getTypeDefaultConstruction(leaf);
170 assertEquals("new java.math.BigDecimal(\"1.234\")", actual);
172 leaf = (LeafSchemaNode)m.getDataChildByName("ext-string");
173 actual = provider.getTypeDefaultConstruction(leaf);
174 assertEquals("new " + PKG + "MyString(\"name\")", actual);
176 leaf = (LeafSchemaNode)m.getDataChildByName("ext-u8");
177 actual = provider.getTypeDefaultConstruction(leaf);
178 assertEquals("new " + PKG + "MyU8(new java.lang.Short(\"11\"))", actual);
180 leaf = (LeafSchemaNode)m.getDataChildByName("ext-u16");
181 actual = provider.getTypeDefaultConstruction(leaf);
182 assertEquals("new " + PKG + "MyU16(new java.lang.Integer(\"111\"))", actual);
184 leaf = (LeafSchemaNode)m.getDataChildByName("ext-u32");
185 actual = provider.getTypeDefaultConstruction(leaf);
186 assertEquals("new " + PKG + "MyU32(new java.lang.Long(\"1111\"))", actual);
188 leaf = (LeafSchemaNode)m.getDataChildByName("ext-u64");
189 actual = provider.getTypeDefaultConstruction(leaf);
190 assertEquals("new " + PKG + "MyU64(new java.math.BigInteger(\"11111\"))", actual);
192 leaf = (LeafSchemaNode)m.getDataChildByName("ip-leaf");
193 actual = provider.getTypeDefaultConstruction(leaf);
194 String exp = "new org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.Ipv4Address(\"0.0.0.1\")";
195 assertEquals(exp, actual);