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.util.Collection;
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;
45 public class BaseYangTypesProviderTest {
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 Collection<? extends 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 = BaseYangTypesProvider.INSTANCE;
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(Uint8.class.getCanonicalName(), javaType.getFullyQualifiedName());
171 javaType = typeProvider.javaTypeForSchemaDefinitionType(uint16, uint16);
172 assertNotNull(javaType);
173 assertEquals(Uint16.class.getCanonicalName(), javaType.getFullyQualifiedName());
175 javaType = typeProvider.javaTypeForSchemaDefinitionType(uint32, uint32);
176 assertNotNull(javaType);
177 assertEquals(Uint32.class.getCanonicalName(), javaType.getFullyQualifiedName());
179 javaType = typeProvider.javaTypeForSchemaDefinitionType(uint64, uint64);
180 assertNotNull(javaType);
181 assertEquals(Uint64.class.getCanonicalName(), javaType.getFullyQualifiedName());
183 javaType = typeProvider.javaTypeForSchemaDefinitionType(empty, empty);
184 assertNotNull(javaType);
185 assertEquals(Empty.class.getCanonicalName(), javaType.getFullyQualifiedName());
187 javaType = typeProvider.javaTypeForSchemaDefinitionType(bool, bool);
188 assertNotNull(javaType);
189 assertEquals(Boolean.class.getCanonicalName(), javaType.getFullyQualifiedName());
193 public void javaTypeForRestrictedSchemaDefinitionTypeTest() {
194 final TypeProvider typeProvider = BaseYangTypesProvider.INSTANCE;
196 Type javaType = typeProvider.javaTypeForSchemaDefinitionType(binary, binary,
197 BindingGeneratorUtil.getRestrictions(binary));
198 assertNotNull(javaType);
199 assertEquals("byte[]", javaType.getFullyQualifiedName());
201 javaType = typeProvider.javaTypeForSchemaDefinitionType(decimal64, decimal64,
202 BindingGeneratorUtil.getRestrictions(decimal64));
203 assertNotNull(javaType);
204 assertEquals(BigDecimal.class.getCanonicalName(), javaType.getFullyQualifiedName());
206 javaType = typeProvider.javaTypeForSchemaDefinitionType(enumeration, enumeration,
207 BindingGeneratorUtil.getRestrictions(enumeration));
208 assertNotNull(javaType);
209 assertEquals(Enum.class.getCanonicalName(), javaType.getFullyQualifiedName());
211 javaType = typeProvider.javaTypeForSchemaDefinitionType(int8, int8, BindingGeneratorUtil.getRestrictions(int8));
212 assertNotNull(javaType);
213 assertEquals(Byte.class.getCanonicalName(), javaType.getFullyQualifiedName());
215 javaType = typeProvider.javaTypeForSchemaDefinitionType(int16, int16,
216 BindingGeneratorUtil.getRestrictions(int16));
217 assertNotNull(javaType);
218 assertEquals(Short.class.getCanonicalName(), javaType.getFullyQualifiedName());
220 javaType = typeProvider.javaTypeForSchemaDefinitionType(int32, int32,
221 BindingGeneratorUtil.getRestrictions(int32));
222 assertNotNull(javaType);
223 assertEquals(Integer.class.getCanonicalName(), javaType.getFullyQualifiedName());
225 javaType = typeProvider.javaTypeForSchemaDefinitionType(int64, int64,
226 BindingGeneratorUtil.getRestrictions(int64));
227 assertNotNull(javaType);
228 assertEquals(Long.class.getCanonicalName(), javaType.getFullyQualifiedName());
230 javaType = typeProvider.javaTypeForSchemaDefinitionType(string, string,
231 BindingGeneratorUtil.getRestrictions(string));
232 assertNotNull(javaType);
233 assertEquals(String.class.getCanonicalName(), javaType.getFullyQualifiedName());
235 javaType = typeProvider.javaTypeForSchemaDefinitionType(uint8, uint8,
236 BindingGeneratorUtil.getRestrictions(uint8));
237 assertNotNull(javaType);
238 assertEquals(Uint8.class.getCanonicalName(), javaType.getFullyQualifiedName());
240 javaType = typeProvider.javaTypeForSchemaDefinitionType(uint16, uint16,
241 BindingGeneratorUtil.getRestrictions(uint16));
242 assertNotNull(javaType);
243 assertEquals(Uint16.class.getCanonicalName(), javaType.getFullyQualifiedName());
245 javaType = typeProvider.javaTypeForSchemaDefinitionType(uint32, uint32,
246 BindingGeneratorUtil.getRestrictions(uint32));
247 assertNotNull(javaType);
248 assertEquals(Uint32.class.getCanonicalName(), javaType.getFullyQualifiedName());
250 javaType = typeProvider.javaTypeForSchemaDefinitionType(uint64, uint64,
251 BindingGeneratorUtil.getRestrictions(uint64));
252 assertNotNull(javaType);
253 assertEquals(Uint64.class.getCanonicalName(), javaType.getFullyQualifiedName());
255 javaType = typeProvider.javaTypeForSchemaDefinitionType(empty, empty,
256 BindingGeneratorUtil.getRestrictions(empty));
257 assertNotNull(javaType);
258 assertEquals(Empty.class.getCanonicalName(), javaType.getFullyQualifiedName());
260 javaType = typeProvider.javaTypeForSchemaDefinitionType(bool, bool,
261 BindingGeneratorUtil.getRestrictions(bool));
262 assertNotNull(javaType);
263 assertEquals(Boolean.class.getCanonicalName(), javaType.getFullyQualifiedName());