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.yang.types;
10 import static org.junit.Assert.assertEquals;
11 import static org.junit.Assert.assertNotNull;
12 import static org.junit.Assert.assertTrue;
14 import java.math.BigDecimal;
15 import java.math.BigInteger;
17 import org.junit.BeforeClass;
18 import org.junit.Test;
19 import org.opendaylight.mdsal.binding.generator.spi.TypeProvider;
20 import org.opendaylight.mdsal.binding.model.api.Type;
21 import org.opendaylight.mdsal.binding.model.util.BindingGeneratorUtil;
22 import org.opendaylight.yangtools.yang.model.api.SchemaContext;
23 import org.opendaylight.yangtools.yang.model.api.TypeDefinition;
24 import org.opendaylight.yangtools.yang.model.api.type.BinaryTypeDefinition;
25 import org.opendaylight.yangtools.yang.model.api.type.BooleanTypeDefinition;
26 import org.opendaylight.yangtools.yang.model.api.type.DecimalTypeDefinition;
27 import org.opendaylight.yangtools.yang.model.api.type.EmptyTypeDefinition;
28 import org.opendaylight.yangtools.yang.model.api.type.EnumTypeDefinition;
29 import org.opendaylight.yangtools.yang.model.api.type.Int16TypeDefinition;
30 import org.opendaylight.yangtools.yang.model.api.type.Int32TypeDefinition;
31 import org.opendaylight.yangtools.yang.model.api.type.Int64TypeDefinition;
32 import org.opendaylight.yangtools.yang.model.api.type.Int8TypeDefinition;
33 import org.opendaylight.yangtools.yang.model.api.type.StringTypeDefinition;
34 import org.opendaylight.yangtools.yang.model.api.type.Uint16TypeDefinition;
35 import org.opendaylight.yangtools.yang.model.api.type.Uint32TypeDefinition;
36 import org.opendaylight.yangtools.yang.model.api.type.Uint64TypeDefinition;
37 import org.opendaylight.yangtools.yang.model.api.type.Uint8TypeDefinition;
38 import org.opendaylight.yangtools.yang.model.api.type.UnionTypeDefinition;
39 import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils;
42 * Test class for testing BaseYangTypes class.
44 public class BaseYangTypesTest {
46 private static SchemaContext schemaContext;
48 private static BinaryTypeDefinition binary = null;
49 private static DecimalTypeDefinition decimal64 = null;
50 private static EnumTypeDefinition enumeration = null;
51 private static Int8TypeDefinition int8 = null;
52 private static Int16TypeDefinition int16 = null;
53 private static Int32TypeDefinition int32 = null;
54 private static Int64TypeDefinition int64 = null;
55 private static StringTypeDefinition string = null;
56 private static Uint8TypeDefinition uint8 = null;
57 private static Uint16TypeDefinition uint16 = null;
58 private static Uint32TypeDefinition uint32 = null;
59 private static Uint64TypeDefinition uint64 = null;
60 private static UnionTypeDefinition union = null;
61 private static EmptyTypeDefinition empty = null;
62 private static BooleanTypeDefinition bool = null;
65 public static void setup() {
66 schemaContext = YangParserTestUtils.parseYangResource("/base-yang-types.yang");
67 assertNotNull(schemaContext);
68 initTypeDefinitionsFromSchemaContext();
71 private static void initTypeDefinitionsFromSchemaContext() {
72 Set<TypeDefinition<?>> typedefs = schemaContext.getTypeDefinitions();
73 assertTrue(!typedefs.isEmpty());
75 for (final TypeDefinition<?> typedef : typedefs) {
76 assertNotNull(typedef);
78 final TypeDefinition<?> baseType = typedef.getBaseType();
79 assertNotNull(baseType);
81 if (baseType instanceof BinaryTypeDefinition) {
82 binary = (BinaryTypeDefinition) baseType;
83 } else if (baseType instanceof DecimalTypeDefinition) {
84 decimal64 = (DecimalTypeDefinition) baseType;
85 } else if (baseType instanceof EnumTypeDefinition) {
86 enumeration = (EnumTypeDefinition) baseType;
87 } else if (baseType instanceof Int8TypeDefinition) {
88 int8 = (Int8TypeDefinition) baseType;
89 } else if (baseType instanceof Int16TypeDefinition) {
90 int16 = (Int16TypeDefinition) baseType;
91 } else if (baseType instanceof Int32TypeDefinition) {
92 int32 = (Int32TypeDefinition) baseType;
93 } else if (baseType instanceof Int64TypeDefinition) {
94 int64 = (Int64TypeDefinition) baseType;
95 } else if (baseType instanceof StringTypeDefinition) {
96 string = (StringTypeDefinition) baseType;
97 } else if (baseType instanceof Uint8TypeDefinition) {
98 uint8 = (Uint8TypeDefinition) baseType;
99 } else if (baseType instanceof Uint16TypeDefinition) {
100 uint16 = (Uint16TypeDefinition) baseType;
101 } else if (baseType instanceof Uint32TypeDefinition) {
102 uint32 = (Uint32TypeDefinition) baseType;
103 } else if (baseType instanceof Uint64TypeDefinition) {
104 uint64 = (Uint64TypeDefinition) baseType;
105 } else if (baseType instanceof UnionTypeDefinition) {
106 union = (UnionTypeDefinition) baseType;
107 } else if (baseType instanceof EmptyTypeDefinition) {
108 empty = (EmptyTypeDefinition) baseType;
109 } else if (baseType instanceof BooleanTypeDefinition) {
110 bool = (BooleanTypeDefinition) baseType;
113 assertNotNull(binary);
114 assertNotNull(decimal64);
115 assertNotNull(enumeration);
117 assertNotNull(int16);
118 assertNotNull(int32);
119 assertNotNull(int64);
120 assertNotNull(string);
121 assertNotNull(uint8);
122 assertNotNull(uint16);
123 assertNotNull(uint32);
124 assertNotNull(uint64);
125 assertNotNull(union);
126 assertNotNull(empty);
131 public void javaTypeForSchemaDefinitionTypeTest() {
132 final TypeProvider typeProvider = BaseYangTypes.BASE_YANG_TYPES_PROVIDER;
134 Type javaType = typeProvider.javaTypeForSchemaDefinitionType(binary, binary);
135 assertNotNull(javaType);
136 assertEquals("byte[]", javaType.getFullyQualifiedName());
138 javaType = typeProvider.javaTypeForSchemaDefinitionType(decimal64, decimal64);
139 assertNotNull(javaType);
140 assertEquals(BigDecimal.class.getCanonicalName(), javaType.getFullyQualifiedName());
142 javaType = typeProvider.javaTypeForSchemaDefinitionType(enumeration, enumeration);
143 assertNotNull(javaType);
144 assertEquals(Enum.class.getCanonicalName(), javaType.getFullyQualifiedName());
146 javaType = typeProvider.javaTypeForSchemaDefinitionType(int8, int8);
147 assertNotNull(javaType);
148 assertEquals(Byte.class.getCanonicalName(), javaType.getFullyQualifiedName());
150 javaType = typeProvider.javaTypeForSchemaDefinitionType(int16, int16);
151 assertNotNull(javaType);
152 assertEquals(Short.class.getCanonicalName(), javaType.getFullyQualifiedName());
154 javaType = typeProvider.javaTypeForSchemaDefinitionType(int32, int32);
155 assertNotNull(javaType);
156 assertEquals(Integer.class.getCanonicalName(), javaType.getFullyQualifiedName());
158 javaType = typeProvider.javaTypeForSchemaDefinitionType(int64, int64);
159 assertNotNull(javaType);
160 assertEquals(Long.class.getCanonicalName(), javaType.getFullyQualifiedName());
162 javaType = typeProvider.javaTypeForSchemaDefinitionType(string, string);
163 assertNotNull(javaType);
164 assertEquals(String.class.getCanonicalName(), javaType.getFullyQualifiedName());
166 javaType = typeProvider.javaTypeForSchemaDefinitionType(uint8, uint8);
167 assertNotNull(javaType);
168 assertEquals(Short.class.getCanonicalName(), javaType.getFullyQualifiedName());
170 javaType = typeProvider.javaTypeForSchemaDefinitionType(uint16, uint16);
171 assertNotNull(javaType);
172 assertEquals(Integer.class.getCanonicalName(), javaType.getFullyQualifiedName());
174 javaType = typeProvider.javaTypeForSchemaDefinitionType(uint32, uint32);
175 assertNotNull(javaType);
176 assertEquals(Long.class.getCanonicalName(), javaType.getFullyQualifiedName());
178 javaType = typeProvider.javaTypeForSchemaDefinitionType(uint64, uint64);
179 assertNotNull(javaType);
180 assertEquals(BigInteger.class.getCanonicalName(), javaType.getFullyQualifiedName());
182 javaType = typeProvider.javaTypeForSchemaDefinitionType(union, union);
183 assertNotNull(javaType);
184 assertEquals("Union", javaType.getFullyQualifiedName());
186 javaType = typeProvider.javaTypeForSchemaDefinitionType(empty, empty);
187 assertNotNull(javaType);
188 assertEquals(Boolean.class.getCanonicalName(), javaType.getFullyQualifiedName());
190 javaType = typeProvider.javaTypeForSchemaDefinitionType(bool, bool);
191 assertNotNull(javaType);
192 assertEquals(Boolean.class.getCanonicalName(), javaType.getFullyQualifiedName());
196 public void javaTypeForRestrictedSchemaDefinitionTypeTest() {
197 final TypeProvider typeProvider = BaseYangTypes.BASE_YANG_TYPES_PROVIDER;
199 Type javaType = typeProvider.javaTypeForSchemaDefinitionType(binary, binary,
200 BindingGeneratorUtil.getRestrictions(binary));
201 assertNotNull(javaType);
202 assertEquals("byte[]", javaType.getFullyQualifiedName());
204 javaType = typeProvider.javaTypeForSchemaDefinitionType(decimal64, decimal64,
205 BindingGeneratorUtil.getRestrictions(decimal64));
206 assertNotNull(javaType);
207 assertEquals(BigDecimal.class.getCanonicalName(), javaType.getFullyQualifiedName());
209 javaType = typeProvider.javaTypeForSchemaDefinitionType(enumeration, enumeration,
210 BindingGeneratorUtil.getRestrictions(enumeration));
211 assertNotNull(javaType);
212 assertEquals(Enum.class.getCanonicalName(), javaType.getFullyQualifiedName());
214 javaType = typeProvider.javaTypeForSchemaDefinitionType(int8, int8, BindingGeneratorUtil.getRestrictions(int8));
215 assertNotNull(javaType);
216 assertEquals(Byte.class.getCanonicalName(), javaType.getFullyQualifiedName());
218 javaType = typeProvider.javaTypeForSchemaDefinitionType(int16, int16,
219 BindingGeneratorUtil.getRestrictions(int16));
220 assertNotNull(javaType);
221 assertEquals(Short.class.getCanonicalName(), javaType.getFullyQualifiedName());
223 javaType = typeProvider.javaTypeForSchemaDefinitionType(int32, int32,
224 BindingGeneratorUtil.getRestrictions(int32));
225 assertNotNull(javaType);
226 assertEquals(Integer.class.getCanonicalName(), javaType.getFullyQualifiedName());
228 javaType = typeProvider.javaTypeForSchemaDefinitionType(int64, int64,
229 BindingGeneratorUtil.getRestrictions(int64));
230 assertNotNull(javaType);
231 assertEquals(Long.class.getCanonicalName(), javaType.getFullyQualifiedName());
233 javaType = typeProvider.javaTypeForSchemaDefinitionType(string, string,
234 BindingGeneratorUtil.getRestrictions(string));
235 assertNotNull(javaType);
236 assertEquals(String.class.getCanonicalName(), javaType.getFullyQualifiedName());
238 javaType = typeProvider.javaTypeForSchemaDefinitionType(uint8, uint8,
239 BindingGeneratorUtil.getRestrictions(uint8));
240 assertNotNull(javaType);
241 assertEquals(Short.class.getCanonicalName(), javaType.getFullyQualifiedName());
243 javaType = typeProvider.javaTypeForSchemaDefinitionType(uint16, uint16,
244 BindingGeneratorUtil.getRestrictions(uint16));
245 assertNotNull(javaType);
246 assertEquals(Integer.class.getCanonicalName(), javaType.getFullyQualifiedName());
248 javaType = typeProvider.javaTypeForSchemaDefinitionType(uint32, uint32,
249 BindingGeneratorUtil.getRestrictions(uint32));
250 assertNotNull(javaType);
251 assertEquals(Long.class.getCanonicalName(), javaType.getFullyQualifiedName());
253 javaType = typeProvider.javaTypeForSchemaDefinitionType(uint64, uint64,
254 BindingGeneratorUtil.getRestrictions(uint64));
255 assertNotNull(javaType);
256 assertEquals(BigInteger.class.getCanonicalName(), javaType.getFullyQualifiedName());
258 javaType = typeProvider.javaTypeForSchemaDefinitionType(union, union,
259 BindingGeneratorUtil.getRestrictions(union));
260 assertNotNull(javaType);
261 assertEquals("Union", javaType.getFullyQualifiedName());
263 javaType = typeProvider.javaTypeForSchemaDefinitionType(empty, empty,
264 BindingGeneratorUtil.getRestrictions(empty));
265 assertNotNull(javaType);
266 assertEquals(Boolean.class.getCanonicalName(), javaType.getFullyQualifiedName());
268 javaType = typeProvider.javaTypeForSchemaDefinitionType(bool, bool,
269 BindingGeneratorUtil.getRestrictions(bool));
270 assertNotNull(javaType);
271 assertEquals(Boolean.class.getCanonicalName(), javaType.getFullyQualifiedName());