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.common.Empty;
23 import org.opendaylight.yangtools.yang.model.api.SchemaContext;
24 import org.opendaylight.yangtools.yang.model.api.TypeDefinition;
25 import org.opendaylight.yangtools.yang.model.api.type.BinaryTypeDefinition;
26 import org.opendaylight.yangtools.yang.model.api.type.BooleanTypeDefinition;
27 import org.opendaylight.yangtools.yang.model.api.type.DecimalTypeDefinition;
28 import org.opendaylight.yangtools.yang.model.api.type.EmptyTypeDefinition;
29 import org.opendaylight.yangtools.yang.model.api.type.EnumTypeDefinition;
30 import org.opendaylight.yangtools.yang.model.api.type.Int16TypeDefinition;
31 import org.opendaylight.yangtools.yang.model.api.type.Int32TypeDefinition;
32 import org.opendaylight.yangtools.yang.model.api.type.Int64TypeDefinition;
33 import org.opendaylight.yangtools.yang.model.api.type.Int8TypeDefinition;
34 import org.opendaylight.yangtools.yang.model.api.type.StringTypeDefinition;
35 import org.opendaylight.yangtools.yang.model.api.type.Uint16TypeDefinition;
36 import org.opendaylight.yangtools.yang.model.api.type.Uint32TypeDefinition;
37 import org.opendaylight.yangtools.yang.model.api.type.Uint64TypeDefinition;
38 import org.opendaylight.yangtools.yang.model.api.type.Uint8TypeDefinition;
39 import org.opendaylight.yangtools.yang.model.api.type.UnionTypeDefinition;
40 import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils;
43 * Test class for testing BaseYangTypes class.
45 public class BaseYangTypesTest {
47 private static SchemaContext schemaContext;
49 private static BinaryTypeDefinition binary = null;
50 private static DecimalTypeDefinition decimal64 = null;
51 private static EnumTypeDefinition enumeration = null;
52 private static Int8TypeDefinition int8 = null;
53 private static Int16TypeDefinition int16 = null;
54 private static Int32TypeDefinition int32 = null;
55 private static Int64TypeDefinition int64 = null;
56 private static StringTypeDefinition string = null;
57 private static Uint8TypeDefinition uint8 = null;
58 private static Uint16TypeDefinition uint16 = null;
59 private static Uint32TypeDefinition uint32 = null;
60 private static Uint64TypeDefinition uint64 = null;
61 private static UnionTypeDefinition union = null;
62 private static EmptyTypeDefinition empty = null;
63 private static BooleanTypeDefinition bool = null;
66 public static void setup() {
67 schemaContext = YangParserTestUtils.parseYangResource("/base-yang-types.yang");
68 assertNotNull(schemaContext);
69 initTypeDefinitionsFromSchemaContext();
72 private static void initTypeDefinitionsFromSchemaContext() {
73 Set<TypeDefinition<?>> typedefs = schemaContext.getTypeDefinitions();
74 assertTrue(!typedefs.isEmpty());
76 for (final TypeDefinition<?> typedef : typedefs) {
77 assertNotNull(typedef);
79 final TypeDefinition<?> baseType = typedef.getBaseType();
80 assertNotNull(baseType);
82 if (baseType instanceof BinaryTypeDefinition) {
83 binary = (BinaryTypeDefinition) baseType;
84 } else if (baseType instanceof DecimalTypeDefinition) {
85 decimal64 = (DecimalTypeDefinition) baseType;
86 } else if (baseType instanceof EnumTypeDefinition) {
87 enumeration = (EnumTypeDefinition) baseType;
88 } else if (baseType instanceof Int8TypeDefinition) {
89 int8 = (Int8TypeDefinition) baseType;
90 } else if (baseType instanceof Int16TypeDefinition) {
91 int16 = (Int16TypeDefinition) baseType;
92 } else if (baseType instanceof Int32TypeDefinition) {
93 int32 = (Int32TypeDefinition) baseType;
94 } else if (baseType instanceof Int64TypeDefinition) {
95 int64 = (Int64TypeDefinition) baseType;
96 } else if (baseType instanceof StringTypeDefinition) {
97 string = (StringTypeDefinition) baseType;
98 } else if (baseType instanceof Uint8TypeDefinition) {
99 uint8 = (Uint8TypeDefinition) baseType;
100 } else if (baseType instanceof Uint16TypeDefinition) {
101 uint16 = (Uint16TypeDefinition) baseType;
102 } else if (baseType instanceof Uint32TypeDefinition) {
103 uint32 = (Uint32TypeDefinition) baseType;
104 } else if (baseType instanceof Uint64TypeDefinition) {
105 uint64 = (Uint64TypeDefinition) baseType;
106 } else if (baseType instanceof UnionTypeDefinition) {
107 union = (UnionTypeDefinition) baseType;
108 } else if (baseType instanceof EmptyTypeDefinition) {
109 empty = (EmptyTypeDefinition) baseType;
110 } else if (baseType instanceof BooleanTypeDefinition) {
111 bool = (BooleanTypeDefinition) baseType;
114 assertNotNull(binary);
115 assertNotNull(decimal64);
116 assertNotNull(enumeration);
118 assertNotNull(int16);
119 assertNotNull(int32);
120 assertNotNull(int64);
121 assertNotNull(string);
122 assertNotNull(uint8);
123 assertNotNull(uint16);
124 assertNotNull(uint32);
125 assertNotNull(uint64);
126 assertNotNull(union);
127 assertNotNull(empty);
132 public void javaTypeForSchemaDefinitionTypeTest() {
133 final TypeProvider typeProvider = BaseYangTypes.BASE_YANG_TYPES_PROVIDER;
135 Type javaType = typeProvider.javaTypeForSchemaDefinitionType(binary, binary);
136 assertNotNull(javaType);
137 assertEquals("byte[]", javaType.getFullyQualifiedName());
139 javaType = typeProvider.javaTypeForSchemaDefinitionType(decimal64, decimal64);
140 assertNotNull(javaType);
141 assertEquals(BigDecimal.class.getCanonicalName(), javaType.getFullyQualifiedName());
143 javaType = typeProvider.javaTypeForSchemaDefinitionType(enumeration, enumeration);
144 assertNotNull(javaType);
145 assertEquals(Enum.class.getCanonicalName(), javaType.getFullyQualifiedName());
147 javaType = typeProvider.javaTypeForSchemaDefinitionType(int8, int8);
148 assertNotNull(javaType);
149 assertEquals(Byte.class.getCanonicalName(), javaType.getFullyQualifiedName());
151 javaType = typeProvider.javaTypeForSchemaDefinitionType(int16, int16);
152 assertNotNull(javaType);
153 assertEquals(Short.class.getCanonicalName(), javaType.getFullyQualifiedName());
155 javaType = typeProvider.javaTypeForSchemaDefinitionType(int32, int32);
156 assertNotNull(javaType);
157 assertEquals(Integer.class.getCanonicalName(), javaType.getFullyQualifiedName());
159 javaType = typeProvider.javaTypeForSchemaDefinitionType(int64, int64);
160 assertNotNull(javaType);
161 assertEquals(Long.class.getCanonicalName(), javaType.getFullyQualifiedName());
163 javaType = typeProvider.javaTypeForSchemaDefinitionType(string, string);
164 assertNotNull(javaType);
165 assertEquals(String.class.getCanonicalName(), javaType.getFullyQualifiedName());
167 javaType = typeProvider.javaTypeForSchemaDefinitionType(uint8, uint8);
168 assertNotNull(javaType);
169 assertEquals(Short.class.getCanonicalName(), javaType.getFullyQualifiedName());
171 javaType = typeProvider.javaTypeForSchemaDefinitionType(uint16, uint16);
172 assertNotNull(javaType);
173 assertEquals(Integer.class.getCanonicalName(), javaType.getFullyQualifiedName());
175 javaType = typeProvider.javaTypeForSchemaDefinitionType(uint32, uint32);
176 assertNotNull(javaType);
177 assertEquals(Long.class.getCanonicalName(), javaType.getFullyQualifiedName());
179 javaType = typeProvider.javaTypeForSchemaDefinitionType(uint64, uint64);
180 assertNotNull(javaType);
181 assertEquals(BigInteger.class.getCanonicalName(), javaType.getFullyQualifiedName());
183 javaType = typeProvider.javaTypeForSchemaDefinitionType(union, union);
184 assertNotNull(javaType);
185 assertEquals("Union", javaType.getFullyQualifiedName());
187 javaType = typeProvider.javaTypeForSchemaDefinitionType(empty, empty);
188 assertNotNull(javaType);
189 assertEquals(Empty.class.getCanonicalName(), javaType.getFullyQualifiedName());
191 javaType = typeProvider.javaTypeForSchemaDefinitionType(bool, bool);
192 assertNotNull(javaType);
193 assertEquals(Boolean.class.getCanonicalName(), javaType.getFullyQualifiedName());
197 public void javaTypeForRestrictedSchemaDefinitionTypeTest() {
198 final TypeProvider typeProvider = BaseYangTypes.BASE_YANG_TYPES_PROVIDER;
200 Type javaType = typeProvider.javaTypeForSchemaDefinitionType(binary, binary,
201 BindingGeneratorUtil.getRestrictions(binary));
202 assertNotNull(javaType);
203 assertEquals("byte[]", javaType.getFullyQualifiedName());
205 javaType = typeProvider.javaTypeForSchemaDefinitionType(decimal64, decimal64,
206 BindingGeneratorUtil.getRestrictions(decimal64));
207 assertNotNull(javaType);
208 assertEquals(BigDecimal.class.getCanonicalName(), javaType.getFullyQualifiedName());
210 javaType = typeProvider.javaTypeForSchemaDefinitionType(enumeration, enumeration,
211 BindingGeneratorUtil.getRestrictions(enumeration));
212 assertNotNull(javaType);
213 assertEquals(Enum.class.getCanonicalName(), javaType.getFullyQualifiedName());
215 javaType = typeProvider.javaTypeForSchemaDefinitionType(int8, int8, BindingGeneratorUtil.getRestrictions(int8));
216 assertNotNull(javaType);
217 assertEquals(Byte.class.getCanonicalName(), javaType.getFullyQualifiedName());
219 javaType = typeProvider.javaTypeForSchemaDefinitionType(int16, int16,
220 BindingGeneratorUtil.getRestrictions(int16));
221 assertNotNull(javaType);
222 assertEquals(Short.class.getCanonicalName(), javaType.getFullyQualifiedName());
224 javaType = typeProvider.javaTypeForSchemaDefinitionType(int32, int32,
225 BindingGeneratorUtil.getRestrictions(int32));
226 assertNotNull(javaType);
227 assertEquals(Integer.class.getCanonicalName(), javaType.getFullyQualifiedName());
229 javaType = typeProvider.javaTypeForSchemaDefinitionType(int64, int64,
230 BindingGeneratorUtil.getRestrictions(int64));
231 assertNotNull(javaType);
232 assertEquals(Long.class.getCanonicalName(), javaType.getFullyQualifiedName());
234 javaType = typeProvider.javaTypeForSchemaDefinitionType(string, string,
235 BindingGeneratorUtil.getRestrictions(string));
236 assertNotNull(javaType);
237 assertEquals(String.class.getCanonicalName(), javaType.getFullyQualifiedName());
239 javaType = typeProvider.javaTypeForSchemaDefinitionType(uint8, uint8,
240 BindingGeneratorUtil.getRestrictions(uint8));
241 assertNotNull(javaType);
242 assertEquals(Short.class.getCanonicalName(), javaType.getFullyQualifiedName());
244 javaType = typeProvider.javaTypeForSchemaDefinitionType(uint16, uint16,
245 BindingGeneratorUtil.getRestrictions(uint16));
246 assertNotNull(javaType);
247 assertEquals(Integer.class.getCanonicalName(), javaType.getFullyQualifiedName());
249 javaType = typeProvider.javaTypeForSchemaDefinitionType(uint32, uint32,
250 BindingGeneratorUtil.getRestrictions(uint32));
251 assertNotNull(javaType);
252 assertEquals(Long.class.getCanonicalName(), javaType.getFullyQualifiedName());
254 javaType = typeProvider.javaTypeForSchemaDefinitionType(uint64, uint64,
255 BindingGeneratorUtil.getRestrictions(uint64));
256 assertNotNull(javaType);
257 assertEquals(BigInteger.class.getCanonicalName(), javaType.getFullyQualifiedName());
259 javaType = typeProvider.javaTypeForSchemaDefinitionType(union, union,
260 BindingGeneratorUtil.getRestrictions(union));
261 assertNotNull(javaType);
262 assertEquals("Union", javaType.getFullyQualifiedName());
264 javaType = typeProvider.javaTypeForSchemaDefinitionType(empty, empty,
265 BindingGeneratorUtil.getRestrictions(empty));
266 assertNotNull(javaType);
267 assertEquals(Empty.class.getCanonicalName(), javaType.getFullyQualifiedName());
269 javaType = typeProvider.javaTypeForSchemaDefinitionType(bool, bool,
270 BindingGeneratorUtil.getRestrictions(bool));
271 assertNotNull(javaType);
272 assertEquals(Boolean.class.getCanonicalName(), javaType.getFullyQualifiedName());