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;
16 import org.junit.BeforeClass;
17 import org.junit.Test;
18 import org.opendaylight.mdsal.binding.generator.spi.TypeProvider;
19 import org.opendaylight.mdsal.binding.model.api.Type;
20 import org.opendaylight.mdsal.binding.model.util.BindingGeneratorUtil;
21 import org.opendaylight.yangtools.yang.common.Empty;
22 import org.opendaylight.yangtools.yang.common.Uint16;
23 import org.opendaylight.yangtools.yang.common.Uint32;
24 import org.opendaylight.yangtools.yang.common.Uint64;
25 import org.opendaylight.yangtools.yang.common.Uint8;
26 import org.opendaylight.yangtools.yang.model.api.SchemaContext;
27 import org.opendaylight.yangtools.yang.model.api.TypeDefinition;
28 import org.opendaylight.yangtools.yang.model.api.type.BinaryTypeDefinition;
29 import org.opendaylight.yangtools.yang.model.api.type.BooleanTypeDefinition;
30 import org.opendaylight.yangtools.yang.model.api.type.DecimalTypeDefinition;
31 import org.opendaylight.yangtools.yang.model.api.type.EmptyTypeDefinition;
32 import org.opendaylight.yangtools.yang.model.api.type.EnumTypeDefinition;
33 import org.opendaylight.yangtools.yang.model.api.type.Int16TypeDefinition;
34 import org.opendaylight.yangtools.yang.model.api.type.Int32TypeDefinition;
35 import org.opendaylight.yangtools.yang.model.api.type.Int64TypeDefinition;
36 import org.opendaylight.yangtools.yang.model.api.type.Int8TypeDefinition;
37 import org.opendaylight.yangtools.yang.model.api.type.StringTypeDefinition;
38 import org.opendaylight.yangtools.yang.model.api.type.Uint16TypeDefinition;
39 import org.opendaylight.yangtools.yang.model.api.type.Uint32TypeDefinition;
40 import org.opendaylight.yangtools.yang.model.api.type.Uint64TypeDefinition;
41 import org.opendaylight.yangtools.yang.model.api.type.Uint8TypeDefinition;
42 import org.opendaylight.yangtools.yang.model.api.type.UnionTypeDefinition;
43 import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils;
46 * Test class for testing BaseYangTypes class.
48 public class BaseYangTypesTest {
50 private static SchemaContext schemaContext;
52 private static BinaryTypeDefinition binary = null;
53 private static DecimalTypeDefinition decimal64 = null;
54 private static EnumTypeDefinition enumeration = null;
55 private static Int8TypeDefinition int8 = null;
56 private static Int16TypeDefinition int16 = null;
57 private static Int32TypeDefinition int32 = null;
58 private static Int64TypeDefinition int64 = null;
59 private static StringTypeDefinition string = null;
60 private static Uint8TypeDefinition uint8 = null;
61 private static Uint16TypeDefinition uint16 = null;
62 private static Uint32TypeDefinition uint32 = null;
63 private static Uint64TypeDefinition uint64 = null;
64 private static UnionTypeDefinition union = null;
65 private static EmptyTypeDefinition empty = null;
66 private static BooleanTypeDefinition bool = null;
69 public static void setup() {
70 schemaContext = YangParserTestUtils.parseYangResource("/base-yang-types.yang");
71 assertNotNull(schemaContext);
72 initTypeDefinitionsFromSchemaContext();
75 private static void initTypeDefinitionsFromSchemaContext() {
76 Set<TypeDefinition<?>> typedefs = schemaContext.getTypeDefinitions();
77 assertTrue(!typedefs.isEmpty());
79 for (final TypeDefinition<?> typedef : typedefs) {
80 assertNotNull(typedef);
82 final TypeDefinition<?> baseType = typedef.getBaseType();
83 assertNotNull(baseType);
85 if (baseType instanceof BinaryTypeDefinition) {
86 binary = (BinaryTypeDefinition) baseType;
87 } else if (baseType instanceof DecimalTypeDefinition) {
88 decimal64 = (DecimalTypeDefinition) baseType;
89 } else if (baseType instanceof EnumTypeDefinition) {
90 enumeration = (EnumTypeDefinition) baseType;
91 } else if (baseType instanceof Int8TypeDefinition) {
92 int8 = (Int8TypeDefinition) baseType;
93 } else if (baseType instanceof Int16TypeDefinition) {
94 int16 = (Int16TypeDefinition) baseType;
95 } else if (baseType instanceof Int32TypeDefinition) {
96 int32 = (Int32TypeDefinition) baseType;
97 } else if (baseType instanceof Int64TypeDefinition) {
98 int64 = (Int64TypeDefinition) baseType;
99 } else if (baseType instanceof StringTypeDefinition) {
100 string = (StringTypeDefinition) baseType;
101 } else if (baseType instanceof Uint8TypeDefinition) {
102 uint8 = (Uint8TypeDefinition) baseType;
103 } else if (baseType instanceof Uint16TypeDefinition) {
104 uint16 = (Uint16TypeDefinition) baseType;
105 } else if (baseType instanceof Uint32TypeDefinition) {
106 uint32 = (Uint32TypeDefinition) baseType;
107 } else if (baseType instanceof Uint64TypeDefinition) {
108 uint64 = (Uint64TypeDefinition) baseType;
109 } else if (baseType instanceof UnionTypeDefinition) {
110 union = (UnionTypeDefinition) baseType;
111 } else if (baseType instanceof EmptyTypeDefinition) {
112 empty = (EmptyTypeDefinition) baseType;
113 } else if (baseType instanceof BooleanTypeDefinition) {
114 bool = (BooleanTypeDefinition) baseType;
117 assertNotNull(binary);
118 assertNotNull(decimal64);
119 assertNotNull(enumeration);
121 assertNotNull(int16);
122 assertNotNull(int32);
123 assertNotNull(int64);
124 assertNotNull(string);
125 assertNotNull(uint8);
126 assertNotNull(uint16);
127 assertNotNull(uint32);
128 assertNotNull(uint64);
129 assertNotNull(union);
130 assertNotNull(empty);
135 public void javaTypeForSchemaDefinitionTypeTest() {
136 final TypeProvider typeProvider = BaseYangTypes.BASE_YANG_TYPES_PROVIDER;
138 Type javaType = typeProvider.javaTypeForSchemaDefinitionType(binary, binary);
139 assertNotNull(javaType);
140 assertEquals("byte[]", javaType.getFullyQualifiedName());
142 javaType = typeProvider.javaTypeForSchemaDefinitionType(decimal64, decimal64);
143 assertNotNull(javaType);
144 assertEquals(BigDecimal.class.getCanonicalName(), javaType.getFullyQualifiedName());
146 javaType = typeProvider.javaTypeForSchemaDefinitionType(enumeration, enumeration);
147 assertNotNull(javaType);
148 assertEquals(Enum.class.getCanonicalName(), javaType.getFullyQualifiedName());
150 javaType = typeProvider.javaTypeForSchemaDefinitionType(int8, int8);
151 assertNotNull(javaType);
152 assertEquals(Byte.class.getCanonicalName(), javaType.getFullyQualifiedName());
154 javaType = typeProvider.javaTypeForSchemaDefinitionType(int16, int16);
155 assertNotNull(javaType);
156 assertEquals(Short.class.getCanonicalName(), javaType.getFullyQualifiedName());
158 javaType = typeProvider.javaTypeForSchemaDefinitionType(int32, int32);
159 assertNotNull(javaType);
160 assertEquals(Integer.class.getCanonicalName(), javaType.getFullyQualifiedName());
162 javaType = typeProvider.javaTypeForSchemaDefinitionType(int64, int64);
163 assertNotNull(javaType);
164 assertEquals(Long.class.getCanonicalName(), javaType.getFullyQualifiedName());
166 javaType = typeProvider.javaTypeForSchemaDefinitionType(string, string);
167 assertNotNull(javaType);
168 assertEquals(String.class.getCanonicalName(), javaType.getFullyQualifiedName());
170 javaType = typeProvider.javaTypeForSchemaDefinitionType(uint8, uint8);
171 assertNotNull(javaType);
172 assertEquals(Uint8.class.getCanonicalName(), javaType.getFullyQualifiedName());
174 javaType = typeProvider.javaTypeForSchemaDefinitionType(uint16, uint16);
175 assertNotNull(javaType);
176 assertEquals(Uint16.class.getCanonicalName(), javaType.getFullyQualifiedName());
178 javaType = typeProvider.javaTypeForSchemaDefinitionType(uint32, uint32);
179 assertNotNull(javaType);
180 assertEquals(Uint32.class.getCanonicalName(), javaType.getFullyQualifiedName());
182 javaType = typeProvider.javaTypeForSchemaDefinitionType(uint64, uint64);
183 assertNotNull(javaType);
184 assertEquals(Uint64.class.getCanonicalName(), javaType.getFullyQualifiedName());
186 javaType = typeProvider.javaTypeForSchemaDefinitionType(empty, empty);
187 assertNotNull(javaType);
188 assertEquals(Empty.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(Uint8.class.getCanonicalName(), javaType.getFullyQualifiedName());
243 javaType = typeProvider.javaTypeForSchemaDefinitionType(uint16, uint16,
244 BindingGeneratorUtil.getRestrictions(uint16));
245 assertNotNull(javaType);
246 assertEquals(Uint16.class.getCanonicalName(), javaType.getFullyQualifiedName());
248 javaType = typeProvider.javaTypeForSchemaDefinitionType(uint32, uint32,
249 BindingGeneratorUtil.getRestrictions(uint32));
250 assertNotNull(javaType);
251 assertEquals(Uint32.class.getCanonicalName(), javaType.getFullyQualifiedName());
253 javaType = typeProvider.javaTypeForSchemaDefinitionType(uint64, uint64,
254 BindingGeneratorUtil.getRestrictions(uint64));
255 assertNotNull(javaType);
256 assertEquals(Uint64.class.getCanonicalName(), javaType.getFullyQualifiedName());
258 javaType = typeProvider.javaTypeForSchemaDefinitionType(empty, empty,
259 BindingGeneratorUtil.getRestrictions(empty));
260 assertNotNull(javaType);
261 assertEquals(Empty.class.getCanonicalName(), javaType.getFullyQualifiedName());
263 javaType = typeProvider.javaTypeForSchemaDefinitionType(bool, bool,
264 BindingGeneratorUtil.getRestrictions(bool));
265 assertNotNull(javaType);
266 assertEquals(Boolean.class.getCanonicalName(), javaType.getFullyQualifiedName());