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 com.google.common.collect.Range;
15 import java.util.List;
16 import java.util.Optional;
17 import org.junit.AfterClass;
18 import org.junit.BeforeClass;
19 import org.junit.Ignore;
20 import org.junit.Test;
21 import org.junit.runner.RunWith;
22 import org.mockito.Mock;
23 import org.mockito.junit.MockitoJUnitRunner;
24 import org.opendaylight.mdsal.binding.generator.BindingGeneratorUtil;
25 import org.opendaylight.mdsal.binding.model.api.ConcreteType;
26 import org.opendaylight.mdsal.binding.model.api.Enumeration;
27 import org.opendaylight.mdsal.binding.model.api.GeneratedTransferObject;
28 import org.opendaylight.mdsal.binding.model.api.JavaTypeName;
29 import org.opendaylight.mdsal.binding.model.api.ParameterizedType;
30 import org.opendaylight.mdsal.binding.model.api.Restrictions;
31 import org.opendaylight.mdsal.binding.model.api.Type;
32 import org.opendaylight.mdsal.binding.model.api.type.builder.GeneratedTOBuilder;
33 import org.opendaylight.mdsal.binding.model.ri.generated.type.builder.CodegenGeneratedTOBuilder;
34 import org.opendaylight.mdsal.binding.spec.naming.BindingMapping;
35 import org.opendaylight.yangtools.yang.common.QName;
36 import org.opendaylight.yangtools.yang.model.api.DataNodeContainer;
37 import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
38 import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext;
39 import org.opendaylight.yangtools.yang.model.api.LeafListSchemaNode;
40 import org.opendaylight.yangtools.yang.model.api.LeafSchemaNode;
41 import org.opendaylight.yangtools.yang.model.api.Module;
42 import org.opendaylight.yangtools.yang.model.api.SchemaNode;
43 import org.opendaylight.yangtools.yang.model.api.SchemaPath;
44 import org.opendaylight.yangtools.yang.model.api.TypeDefinition;
45 import org.opendaylight.yangtools.yang.model.api.type.RangeConstraint;
46 import org.opendaylight.yangtools.yang.model.api.type.UnionTypeDefinition;
49 * Test suite for testing public methods in TypeProviderImpl class.
51 * @see org.opendaylight.mdsal.binding.yang.types.AbstractTypeProvider
52 * @author Lukas Sedlak <lsedlak@cisco.com>
54 // FIXME: rewrite tests without TypeProvider interface
56 @RunWith(MockitoJUnitRunner.class)
57 public class TypeProviderTest {
59 public static EffectiveModelContext SCHEMA_CONTEXT;
60 public static Module TEST_TYPE_PROVIDER;
63 public SchemaPath schemaPath;
66 public SchemaNode schemaNode;
69 public static void beforeClass() {
70 SCHEMA_CONTEXT = TypeProviderModel.createTestContext();
71 TEST_TYPE_PROVIDER = resolveModule(TypeProviderModel.TEST_TYPE_PROVIDER_MODULE_NAME);
75 public static void afterClass() {
76 TEST_TYPE_PROVIDER = null;
77 SCHEMA_CONTEXT = null;
80 private static Module resolveModule(final String moduleName) {
81 return SCHEMA_CONTEXT.findModules(moduleName).iterator().next();
84 private static LeafSchemaNode provideLeafNodeFromTopLevelContainer(final Module module, final String containerName,
85 final String leafNodeName) {
86 final QName containerNode = QName.create(module.getQNameModule(), containerName);
87 final DataSchemaNode rootNode = module.findDataChildByName(containerNode).get();
88 assertTrue(rootNode instanceof DataNodeContainer);
90 final QName leafNode = QName.create(module.getQNameModule(), leafNodeName);
91 final DataNodeContainer rootContainer = (DataNodeContainer) rootNode;
92 final DataSchemaNode node = rootContainer.findDataChildByName(leafNode).get();
93 assertTrue(node instanceof LeafSchemaNode);
94 return (LeafSchemaNode) node;
97 private static LeafListSchemaNode provideLeafListNodeFromTopLevelContainer(final Module module,
98 final String containerName, final String leafListNodeName) {
99 final QName containerNode = QName.create(module.getQNameModule(), containerName);
100 final DataSchemaNode rootNode = module.findDataChildByName(containerNode).get();
101 assertTrue(rootNode instanceof DataNodeContainer);
103 final DataNodeContainer rootContainer = (DataNodeContainer) rootNode;
104 final QName leafListNode = QName.create(module.getQNameModule(), leafListNodeName);
105 final DataSchemaNode node = rootContainer.findDataChildByName(leafListNode).get();
106 assertTrue(node instanceof LeafListSchemaNode);
107 return (LeafListSchemaNode) node;
111 public void javaTypeForSchemaDefinitionExtTypeTest() {
112 final TypeProvider provider = new CodegenTypeProvider(SCHEMA_CONTEXT);
113 final LeafSchemaNode leaf = provideLeafNodeFromTopLevelContainer(TEST_TYPE_PROVIDER, "foo",
116 final TypeDefinition<?> leafType = leaf.getType();
117 final Type result = provider.javaTypeForSchemaDefinitionType(leafType, leaf);
118 assertNotNull(result);
119 assertTrue(result instanceof GeneratedTransferObject);
121 final GeneratedTransferObject genTO = (GeneratedTransferObject) result;
122 assertEquals("base-yang-types", genTO.getModuleName());
123 assertEquals("org.opendaylight.yang.gen.v1.urn.opendaylight.org.test.base.yang.types.rev140914",
124 genTO.getPackageName());
125 assertEquals("YangInt8", genTO.getName());
126 assertEquals(1, genTO.getProperties().size());
130 public void javaTypeForSchemaDefinitionRestrictedExtTypeTest() {
131 final TypeProvider provider = new CodegenTypeProvider(SCHEMA_CONTEXT);
132 final LeafSchemaNode leaf = provideLeafNodeFromTopLevelContainer(TEST_TYPE_PROVIDER, "foo",
133 "restricted-int8-type");
135 final TypeDefinition<?> leafType = leaf.getType();
136 final Restrictions restrictions = BindingGeneratorUtil.getRestrictions(leafType);
138 final Type result = provider.javaTypeForSchemaDefinitionType(leafType, leaf, restrictions);
139 assertNotNull(result);
140 assertTrue(result instanceof GeneratedTransferObject);
142 final GeneratedTransferObject genTO = (GeneratedTransferObject) result;
143 assertEquals("org.opendaylight.yang.gen.v1.urn.opendaylight.org.test.base.yang.types.rev140914",
144 genTO.getPackageName());
145 assertEquals("YangInt8Restricted", genTO.getName());
146 assertEquals(1, genTO.getProperties().size());
147 final Optional<? extends RangeConstraint<?>> rangeConstraints = genTO.getRestrictions().getRangeConstraint();
149 assertTrue(rangeConstraints.isPresent());
150 final Range<?> constraint = rangeConstraints.get().getAllowedRanges().asRanges().iterator().next();
151 assertEquals((byte) 1, constraint.lowerEndpoint());
152 assertEquals((byte) 100, constraint.upperEndpoint());
156 public void javaTypeForSchemaDefinitionEmptyStringPatternTypeTest() {
157 final AbstractTypeProvider provider = new RuntimeTypeProvider(SCHEMA_CONTEXT);
159 final Module testTypeProvider = resolveModule("test-type-provider");
160 final TypeDefinition<?> emptyPatternString = resolveTypeDefinitionFromModule(testTypeProvider,
161 "empty-pattern-string");
163 assertNotNull(emptyPatternString);
164 final Restrictions restrictions = BindingGeneratorUtil.getRestrictions(emptyPatternString);
166 Type result = provider.javaTypeForSchemaDefinitionType(emptyPatternString, emptyPatternString, restrictions);
167 assertNotNull(result);
168 assertTrue(result instanceof GeneratedTransferObject);
170 result = provider.generatedTypeForExtendedDefinitionType(emptyPatternString, emptyPatternString);
171 assertNotNull(result);
172 assertTrue(result instanceof GeneratedTransferObject);
175 private static TypeDefinition<?> resolveTypeDefinitionFromModule(final Module module, final String typedefName) {
176 TypeDefinition<?> result = null;
177 for (final TypeDefinition<?> typedef : module.getTypeDefinitions()) {
178 if (typedef.getQName().getLocalName().equals(typedefName)) {
185 // FIXME: Remove @Ignore annotation once the bug https://bugs.opendaylight.org/show_bug.cgi?id=1862 is fixed
188 public void bug1862RestrictedTypedefTransformationTest() {
189 final TypeProvider provider = new CodegenTypeProvider(SCHEMA_CONTEXT);
190 final LeafSchemaNode leaf = provideLeafNodeFromTopLevelContainer(TEST_TYPE_PROVIDER, "foo",
191 "bug-1862-restricted-typedef");
193 final TypeDefinition<?> leafType = leaf.getType();
194 final Restrictions restrictions = BindingGeneratorUtil.getRestrictions(leafType);
195 final Type result = provider.javaTypeForSchemaDefinitionType(leafType, leaf, restrictions);
196 assertNotNull(result);
197 assertTrue(result instanceof GeneratedTransferObject);
198 //TODO: complete test after bug 1862 is fixed
202 public void javaTypeForSchemaDefinitionEnumExtTypeTest() {
203 final TypeProvider provider = new CodegenTypeProvider(SCHEMA_CONTEXT);
204 LeafSchemaNode leaf = provideLeafNodeFromTopLevelContainer(TEST_TYPE_PROVIDER, "foo", "resolve-enum-leaf");
205 TypeDefinition<?> leafType = leaf.getType();
206 Type result = provider.javaTypeForSchemaDefinitionType(leafType, leaf);
207 assertNotNull(result);
208 assertTrue(result instanceof Enumeration);
210 final Enumeration enumType = (Enumeration) result;
211 final List<Enumeration.Pair> enumValues = enumType.getValues();
212 assertTrue(!enumValues.isEmpty());
213 assertEquals("a", enumValues.get(0).getName());
214 assertEquals("b", enumValues.get(1).getName());
215 assertEquals("A", enumValues.get(0).getMappedName());
216 assertEquals("B", enumValues.get(1).getMappedName());
218 leaf = provideLeafNodeFromTopLevelContainer(TEST_TYPE_PROVIDER, "foo", "resolve-direct-use-of-enum");
219 leafType = leaf.getType();
220 result = provider.javaTypeForSchemaDefinitionType(leafType, leaf);
221 assertNotNull(result);
222 assertTrue(result instanceof ConcreteType);
224 assertEquals("java.lang", result.getPackageName());
225 assertEquals("Enum", result.getName());
229 public void javaTypeForSchemaDefinitionLeafrefExtTypeTest() {
230 final TypeProvider provider = new CodegenTypeProvider(SCHEMA_CONTEXT);
231 LeafSchemaNode leaf = provideLeafNodeFromTopLevelContainer(TEST_TYPE_PROVIDER, "bar", "leafref-value");
232 TypeDefinition<?> leafType = leaf.getType();
233 final Type leafrefResolvedType1 = provider.javaTypeForSchemaDefinitionType(leafType, leaf);
234 assertNotNull(leafrefResolvedType1);
235 assertTrue(leafrefResolvedType1 instanceof GeneratedTransferObject);
237 final Module module = resolveModule("test-type-provider-b");
238 final QName leafNode = QName.create(module.getQNameModule(), "id");
239 final DataSchemaNode rootNode = module.findDataChildByName(leafNode).get();
240 assertNotNull("leaf id is not present in root of module " + module.getName(), rootNode);
241 assertTrue(rootNode instanceof LeafSchemaNode);
242 leaf = (LeafSchemaNode) rootNode;
243 leafType = leaf.getType();
245 final Type leafrefResolvedType2 = provider.javaTypeForSchemaDefinitionType(leafType, leaf);
246 assertNotNull(leafrefResolvedType2);
247 assertTrue(leafrefResolvedType2 instanceof GeneratedTransferObject);
251 public void javaTypeForSchemaDefinitionLeafrefToEnumTypeTest() {
252 final AbstractTypeProvider provider = new CodegenTypeProvider(SCHEMA_CONTEXT);
254 setReferencedTypeForTypeProvider(provider);
256 final Module module = resolveModule("test-type-provider-b");
258 final QName leafNode = QName.create(module.getQNameModule(), "enum");
259 final DataSchemaNode enumNode = module.findDataChildByName(leafNode).get();
260 assertTrue(enumNode instanceof LeafSchemaNode);
261 final LeafSchemaNode leaf = (LeafSchemaNode) enumNode;
262 final TypeDefinition<?> leafType = leaf.getType();
264 final Type leafrefResolvedType1 = provider.javaTypeForSchemaDefinitionType(leafType, leaf);
265 assertNotNull(leafrefResolvedType1);
267 final QName leafListNode = QName.create(module.getQNameModule(), "enums");
268 final DataSchemaNode enumListNode = module.findDataChildByName(leafListNode).get();
269 assertTrue(enumListNode instanceof LeafListSchemaNode);
270 final LeafListSchemaNode leafList = (LeafListSchemaNode) enumListNode;
271 final TypeDefinition<?> leafListType = leafList.getType();
273 final Type leafrefResolvedType2 = provider.javaTypeForSchemaDefinitionType(leafListType, leafList);
274 assertNotNull(leafrefResolvedType2);
275 assertTrue(leafrefResolvedType2 instanceof ParameterizedType);
278 private static void setReferencedTypeForTypeProvider(final AbstractTypeProvider provider) {
279 final LeafSchemaNode enumLeafNode = provideLeafNodeFromTopLevelContainer(TEST_TYPE_PROVIDER, "foo",
280 "resolve-direct-use-of-enum");
281 final TypeDefinition<?> enumLeafTypedef = enumLeafNode.getType();
282 provider.putReferencedType(enumLeafNode.getPath(),
283 Type.of(provider.javaTypeForSchemaDefinitionType(enumLeafTypedef, enumLeafNode)));
285 final LeafListSchemaNode enumListNode = provideLeafListNodeFromTopLevelContainer(TEST_TYPE_PROVIDER,
286 "foo", "list-of-enums");
287 final TypeDefinition<?> enumLeafListTypedef = enumListNode.getType();
288 provider.putReferencedType(enumListNode.getPath(),
289 Type.of(provider.javaTypeForSchemaDefinitionType(enumLeafListTypedef, enumListNode)));
293 public void javaTypeForSchemaDefinitionConditionalLeafrefTest() {
294 final TypeProvider provider = new CodegenTypeProvider(SCHEMA_CONTEXT);
295 final Module module = resolveModule("test-type-provider-b");
297 final QName leafrefNode = QName.create(module.getQNameModule(), "conditional-leafref");
298 final DataSchemaNode condLeaf = module.findDataChildByName(leafrefNode).get();
299 assertTrue(condLeaf instanceof LeafSchemaNode);
300 final LeafSchemaNode leaf = (LeafSchemaNode) condLeaf;
301 final TypeDefinition<?> leafType = leaf.getType();
303 final Type resultType = provider.javaTypeForSchemaDefinitionType(leafType, leaf);
304 assertNotNull(resultType);
305 assertTrue(resultType instanceof ConcreteType);
306 assertEquals("java.lang", resultType.getPackageName());
307 assertEquals("Object", resultType.getName());
310 @Test(expected = IllegalArgumentException.class)
311 public void javaTypeForSchemaDefinitionInvalidLeafrefPathTest() {
312 final TypeProvider provider = new CodegenTypeProvider(SCHEMA_CONTEXT);
313 final Module module = resolveModule("test-type-provider-b");
315 final QName leafrefNode = QName.create(module.getQNameModule(), "unreslovable-leafref");
316 final DataSchemaNode condLeaf = module.findDataChildByName(leafrefNode).get();
317 assertTrue(condLeaf instanceof LeafSchemaNode);
318 final LeafSchemaNode leaf = (LeafSchemaNode) condLeaf;
319 final TypeDefinition<?> leafType = leaf.getType();
321 provider.javaTypeForSchemaDefinitionType(leafType, leaf);
325 public void javaTypeForSchemaDefinitionIdentityrefExtTypeTest() {
326 final TypeProvider provider = new RuntimeTypeProvider(SCHEMA_CONTEXT);
327 final LeafSchemaNode leaf = provideLeafNodeFromTopLevelContainer(TEST_TYPE_PROVIDER, "foo", "crypto");
328 final TypeDefinition<?> leafType = leaf.getType();
330 final Type result = provider.javaTypeForSchemaDefinitionType(leafType, leaf);
331 assertNotNull(result);
332 assertTrue(result instanceof ParameterizedType);
336 public void javaTypeForSchemaDefinitionForExtUnionWithSimpleTypesTest() {
337 final TypeProvider provider = new RuntimeTypeProvider(SCHEMA_CONTEXT);
338 final LeafSchemaNode leaf = provideLeafNodeFromTopLevelContainer(TEST_TYPE_PROVIDER, "use-of-unions",
339 "simple-int-types-union");
340 final TypeDefinition<?> leafType = leaf.getType();
342 final Type result = provider.javaTypeForSchemaDefinitionType(leafType, leaf);
343 assertNotNull(result);
344 assertTrue(result instanceof GeneratedTransferObject);
345 assertEquals("YangUnion", result.getName());
346 //TODO: write additional asserts to compare whole GeneratedTrasnferObject against yang union definition
350 public void javaTypeForSchemaDefinitionForExtComplexUnionWithInnerUnionTypesTest() {
351 final TypeProvider provider = new RuntimeTypeProvider(SCHEMA_CONTEXT);
352 final LeafSchemaNode leaf = provideLeafNodeFromTopLevelContainer(TEST_TYPE_PROVIDER, "use-of-unions",
354 final TypeDefinition<?> leafType = leaf.getType();
356 final Type result = provider.javaTypeForSchemaDefinitionType(leafType, leaf);
357 assertNotNull(result);
358 assertTrue(result instanceof GeneratedTransferObject);
359 assertEquals("ComplexUnion", result.getName());
360 //TODO: write additional asserts to compare whole GeneratedTrasnferObject against yang union definition
364 public void javaTypeForSchemaDefinitionForExtUnionWithInnerUnionAndSimpleTypeTest() {
365 final TypeProvider provider = new RuntimeTypeProvider(SCHEMA_CONTEXT);
366 final LeafSchemaNode leaf = provideLeafNodeFromTopLevelContainer(TEST_TYPE_PROVIDER, "use-of-unions",
367 "complex-string-int-union");
368 final TypeDefinition<?> leafType = leaf.getType();
370 final Type result = provider.javaTypeForSchemaDefinitionType(leafType, leaf);
371 assertNotNull(result);
372 assertTrue(result instanceof GeneratedTransferObject);
373 assertEquals("ComplexStringIntUnion", result.getName());
374 //TODO: write additional asserts to compare whole GeneratedTrasnferObject against yang union definition
378 public void provideGeneratedTOBuilderForUnionTypeDefWithInnerUnionTypesTest() {
379 final AbstractTypeProvider provider = new RuntimeTypeProvider(SCHEMA_CONTEXT);
381 final TypeDefinition<?> unionTypeDef = resolveTypeDefinitionFromModule(TEST_TYPE_PROVIDER, "complex-union");
383 assertNotNull(unionTypeDef);
384 assertTrue(unionTypeDef.getBaseType() instanceof UnionTypeDefinition);
385 GeneratedTOBuilder unionTypeBuilder = provider.provideGeneratedTOBuilderForUnionTypeDef(
386 JavaTypeName.create("test.package.name", BindingMapping.getClassName(unionTypeDef.getQName())),
387 (UnionTypeDefinition)unionTypeDef.getBaseType(), unionTypeDef);
389 assertNotNull(unionTypeBuilder);
391 GeneratedTransferObject unionType = unionTypeBuilder.build();
392 assertEquals("ComplexUnion", unionType.getName());
396 public void provideGeneratedTOBuilderForUnionTypeDefWithInnerUnionAndSimpleTypeTest() {
397 final AbstractTypeProvider provider = new RuntimeTypeProvider(SCHEMA_CONTEXT);
399 final TypeDefinition<?> unionTypeDef = resolveTypeDefinitionFromModule(TEST_TYPE_PROVIDER,
400 "complex-string-int-union");
402 assertNotNull(unionTypeDef);
403 assertTrue(unionTypeDef.getBaseType() instanceof UnionTypeDefinition);
404 final GeneratedTOBuilder unionTypeBuilder = provider.provideGeneratedTOBuilderForUnionTypeDef(
405 JavaTypeName.create("test.package.name", BindingMapping.getClassName(unionTypeDef.getQName())),
406 (UnionTypeDefinition)unionTypeDef.getBaseType(), unionTypeDef);
408 assertNotNull(unionTypeBuilder);
410 final GeneratedTransferObject unionType = unionTypeBuilder.build();
411 assertEquals("ComplexStringIntUnion", unionType.getName());
415 public void generatedTypeForExtendedDefinitionTypeTest() {
416 final AbstractTypeProvider provider = new CodegenTypeProvider(SCHEMA_CONTEXT);
418 final Module baseYangTypes = resolveModule("base-yang-types");
420 Type yangBoolean = null;
421 Type yangEmpty = null;
422 Type yangEnumeration = null;
423 Type yangInt8 = null;
424 Type yangInt8Restricted = null;
425 Type yangInt16 = null;
426 Type yangInt32 = null;
427 Type yangInt64 = null;
428 Type yangString = null;
429 Type yangDecimal = null;
430 Type yangUint8 = null;
431 Type yangUint16 = null;
432 Type yangUint32 = null;
433 Type yangUint64 = null;
434 Type yangUnion = null;
435 Type yangBinary = null;
436 Type yangBits = null;
437 Type yangInstanceIdentifier = null;
439 for (final TypeDefinition<?> typedef : baseYangTypes.getTypeDefinitions()) {
440 final Type type = provider.generatedTypeForExtendedDefinitionType(typedef, typedef);
441 if (type instanceof GeneratedTransferObject) {
442 if (type.getName().equals("YangBoolean")) {
444 } else if (type.getName().equals("YangEmpty")) {
446 } else if (type.getName().equals("YangInt8")) {
448 } else if (type.getName().equals("YangInt8Restricted")) {
449 yangInt8Restricted = type;
450 } else if (type.getName().equals("YangInt16")) {
452 } else if (type.getName().equals("YangInt32")) {
454 } else if (type.getName().equals("YangInt64")) {
456 } else if (type.getName().equals("YangString")) {
458 } else if (type.getName().equals("YangDecimal64")) {
460 } else if (type.getName().equals("YangUint8")) {
462 } else if (type.getName().equals("YangUint16")) {
464 } else if (type.getName().equals("YangUint32")) {
466 } else if (type.getName().equals("YangUint64")) {
468 } else if (type.getName().equals("YangUnion")) {
470 } else if (type.getName().equals("YangBinary")) {
472 } else if (type.getName().equals("YangInstanceIdentifier")) {
473 yangInstanceIdentifier = type;
474 } else if (type.getName().equals("YangBits")) {
477 } else if (type instanceof Enumeration) {
478 if (type.getName().equals("YangEnumeration")) {
479 yangEnumeration = type;
484 assertNotNull(yangBoolean);
485 assertNotNull(yangEmpty);
486 assertNotNull(yangEnumeration);
487 assertNotNull(yangInt8);
488 assertNotNull(yangInt8Restricted);
489 assertNotNull(yangInt16);
490 assertNotNull(yangInt32);
491 assertNotNull(yangInt64);
492 assertNotNull(yangString);
493 assertNotNull(yangDecimal);
494 assertNotNull(yangUint8);
495 assertNotNull(yangUint16);
496 assertNotNull(yangUint32);
497 assertNotNull(yangUint64);
498 assertNotNull(yangUnion);
499 assertNotNull(yangBinary);
500 assertNotNull(yangBits);
501 assertNotNull(yangInstanceIdentifier);
505 public void generatedTypeForExtendedDefinitionTypeWithInnerExtendedTypeTest() {
506 final AbstractTypeProvider provider = new RuntimeTypeProvider(SCHEMA_CONTEXT);
508 final Module baseYangTypes = resolveModule("test-type-provider");
509 final TypeDefinition<?> extYangInt8Typedef = resolveTypeDefinitionFromModule(baseYangTypes,
510 "extended-yang-int8");
511 assertNotNull(extYangInt8Typedef);
512 final Type extType = provider.generatedTypeForExtendedDefinitionType(extYangInt8Typedef, extYangInt8Typedef);
513 assertNotNull(extType);
514 assertTrue(extType instanceof GeneratedTransferObject);
518 public void generatedTypeForExtendedDefinitionTypeWithLeafrefBaseTypeTest() {
519 final AbstractTypeProvider provider = new RuntimeTypeProvider(SCHEMA_CONTEXT);
521 final Module baseYangTypes = resolveModule("test-type-provider");
522 final TypeDefinition<?> barItemLeafrefId = resolveTypeDefinitionFromModule(baseYangTypes,
523 "bar-item-leafref-id");
524 assertNotNull(barItemLeafrefId);
525 final Type extType = provider.generatedTypeForExtendedDefinitionType(barItemLeafrefId, barItemLeafrefId);
526 assertEquals(null, extType);
530 public void generatedTypeForExtendedDefinitionTypeWithIdentityrefBaseTypeTest() {
531 final AbstractTypeProvider provider = new RuntimeTypeProvider(SCHEMA_CONTEXT);
533 final Module baseYangTypes = resolveModule("test-type-provider");
535 final TypeDefinition<?> aesIdentityrefType = resolveTypeDefinitionFromModule(baseYangTypes,
536 "aes-identityref-type");
538 assertNotNull(aesIdentityrefType);
539 final Type extType = provider.generatedTypeForExtendedDefinitionType(aesIdentityrefType, aesIdentityrefType);
540 assertEquals(null, extType);
543 @Test(expected = NullPointerException.class)
544 public void provideGeneratedTOBuilderForBitsTypeDefinitionWithNullTypedefTest() {
545 final AbstractTypeProvider provider = new RuntimeTypeProvider(SCHEMA_CONTEXT);
546 provider.provideGeneratedTOBuilderForBitsTypeDefinition(JavaTypeName.create("foo", "foo"), null, "foo");
550 public void addUnitsToGenTOTest() {
551 final GeneratedTOBuilder builder = new CodegenGeneratedTOBuilder(
552 JavaTypeName.create("test.package", "TestBuilder"));
554 CodegenTypeProvider.addUnitsToGenTO(builder, null);
555 GeneratedTransferObject genTO = builder.build();
556 assertTrue(genTO.getConstantDefinitions().isEmpty());
558 CodegenTypeProvider.addUnitsToGenTO(builder, "");
559 genTO = builder.build();
560 assertTrue(genTO.getConstantDefinitions().isEmpty());
562 CodegenTypeProvider.addUnitsToGenTO(builder, "125");
563 genTO = builder.build();
564 assertTrue(!genTO.getConstantDefinitions().isEmpty());
565 assertEquals(1, genTO.getConstantDefinitions().size());
566 assertEquals("_UNITS", genTO.getConstantDefinitions().get(0).getName());
567 assertEquals(genTO.getConstantDefinitions().get(0).getValue(), "\"125\"");