1 package org.opendaylight.yangtools.sal.binding.generator.impl;
3 import static org.junit.Assert.*;
6 import java.util.ArrayList;
10 import org.junit.BeforeClass;
11 import org.junit.Test;
12 import org.opendaylight.yangtools.sal.binding.generator.api.BindingGenerator;
13 import org.opendaylight.yangtools.sal.binding.model.api.GeneratedProperty;
14 import org.opendaylight.yangtools.sal.binding.model.api.GeneratedTransferObject;
15 import org.opendaylight.yangtools.sal.binding.model.api.Type;
16 import org.opendaylight.yangtools.sal.binding.yang.types.BaseYangTypes;
17 import org.opendaylight.yangtools.yang.model.api.Module;
18 import org.opendaylight.yangtools.yang.model.api.SchemaContext;
19 import org.opendaylight.yangtools.yang.model.parser.api.YangModelParser;
20 import org.opendaylight.yangtools.yang.parser.impl.YangParserImpl;
22 public class ExtendedTypedefTest {
24 private final static List<File> testModels = new ArrayList<File>();
25 private final static String testFolderPath = AugmentedTypeTest.class.getResource("/typedef-of-typedef").getPath();
28 public static void loadTestResources() {
29 final File testFolder = new File(testFolderPath);
31 for (final File fileEntry : testFolder.listFiles()) {
32 if (fileEntry.isFile()) {
33 testModels.add(fileEntry);
39 public void constantGenerationTest() {
40 final YangModelParser parser = new YangParserImpl();
41 final Set<Module> modules = parser.parseYangModels(testModels);
42 final SchemaContext context = parser.resolveSchemaContext(modules);
44 assertNotNull(context);
45 final BindingGenerator bindingGen = new BindingGeneratorImpl();
46 final List<Type> genTypes = bindingGen.generateTypes(context);
48 GeneratedTransferObject simpleTypedef4 = null;
49 GeneratedTransferObject extendedTypedefUnion = null;
50 GeneratedTransferObject unionTypedef = null;
51 GeneratedTransferObject typedefFromImport = null;
52 for (final Type type : genTypes) {
53 if (type instanceof GeneratedTransferObject) {
54 if (type.getName().equals("SimpleTypedef4")) {
55 simpleTypedef4 = (GeneratedTransferObject) type;
56 } else if (type.getName().equals("ExtendedTypedefUnion")) {
57 extendedTypedefUnion = (GeneratedTransferObject) type;
58 } else if (type.getName().equals("UnionTypedef")) {
59 unionTypedef = (GeneratedTransferObject) type;
60 } else if (type.getName().equals("TypedefFromImport")) {
61 typedefFromImport = (GeneratedTransferObject) type;
66 // typedef-from-import
67 assertNotNull("TypedefFromImport not found", typedefFromImport);
68 List<GeneratedProperty> properties = typedefFromImport.getProperties();
69 assertTrue("Properties of TypedefFromImport should be empty", properties.isEmpty());
70 assertEquals("TypedefFromImport should be extended", "Ipv4Address", typedefFromImport.getExtends().getName());
73 assertNotNull("SimpleTypedef4 not found", simpleTypedef4);
74 assertNotNull("ExtendedTypedefUnion not found", extendedTypedefUnion);
75 assertNotNull("UnionTypedef", unionTypedef);
77 properties = simpleTypedef4.getProperties();
78 assertTrue("SimpleTypedef4 shouldn't have properties.", properties.isEmpty());
80 GeneratedTransferObject extendTO = simpleTypedef4.getExtends();
81 assertNotNull("SimpleTypedef4 should have extend.", extendTO);
82 assertEquals("Incorrect extension for SimpleTypedef4.", "SimpleTypedef3", extendTO.getName());
83 properties = extendTO.getProperties();
84 assertTrue("SimpleTypedef3 shouldn't have properties.", properties.isEmpty());
86 extendTO = extendTO.getExtends();
87 assertNotNull("SimpleTypedef3 should have extend.", extendTO);
88 assertEquals("Incorrect extension for SimpleTypedef3.", "SimpleTypedef2", extendTO.getName());
89 properties = extendTO.getProperties();
90 assertTrue("SimpleTypedef2 shouldn't have properties.", properties.isEmpty());
92 extendTO = extendTO.getExtends();
93 assertNotNull("SimpleTypedef2 should have extend.", extendTO);
94 assertEquals("SimpleTypedef2 should be extended with SimpleTypedef1.", "SimpleTypedef1", extendTO.getName());
95 properties = extendTO.getProperties();
96 assertEquals("Incorrect number of properties in class SimpleTypedef1.", 1, properties.size());
98 assertEquals("Incorrect property's name", "simpleTypedef1", properties.get(0).getName());
99 assertEquals("Property's incorrect type", BaseYangTypes.UINT8_TYPE, properties.get(0).getReturnType());
101 extendTO = extendTO.getExtends();
102 assertNull("SimpleTypedef1 shouldn't have extend.", extendTO);
104 // extended-typedef-union
105 assertNotNull("ExtendedTypedefUnion object not found", extendedTypedefUnion);
106 properties = extendedTypedefUnion.getProperties();
107 assertTrue("ExtendedTypedefUnion shouldn't have any property", properties.isEmpty());
109 extendTO = extendedTypedefUnion.getExtends();
110 assertEquals("Incorrect extension fo ExtendedTypedefUnion.", "UnionTypedef", extendTO.getName());
111 assertNull("UnionTypedef shouldn't be extended", extendTO.getExtends());
112 assertEquals("Incorrect number of properties for UnionTypedef.", 4, extendTO.getProperties().size());
114 GeneratedProperty simpleTypedef4Property = null;
115 GeneratedProperty simpleTypedef1Property = null;
116 GeneratedProperty byteTypeProperty = null;
117 GeneratedProperty typedefEnumFruitProperty = null;
118 for (GeneratedProperty genProperty : extendTO.getProperties()) {
119 if (genProperty.getName().equals("simpleTypedef1")) {
120 simpleTypedef1Property = genProperty;
121 } else if (genProperty.getName().equals("simpleTypedef4")) {
122 simpleTypedef4Property = genProperty;
123 } else if (genProperty.getName().equals("byteType")) {
124 byteTypeProperty = genProperty;
125 } else if (genProperty.getName().equals("typedefEnumFruit")) {
126 typedefEnumFruitProperty = genProperty;
130 assertNotNull("simpleTypedef4 property not found in UnionTypedef", simpleTypedef4Property);
131 assertNotNull("simpleTypedef1 property not found in UnionTypedef", simpleTypedef1Property);
132 assertNotNull("byteType property not found in UnionTypedef", byteTypeProperty);
133 assertNotNull("typedefEnumFruit property not found in UnionTypedef", typedefEnumFruitProperty);
135 assertEquals("Incorrect type for property simpleTypedef4.", "SimpleTypedef4", simpleTypedef4Property
136 .getReturnType().getName());
137 assertEquals("Incorrect type for property simpleTypedef1.", "SimpleTypedef1", simpleTypedef1Property
138 .getReturnType().getName());
139 assertEquals("Incorrect type for property byteType.", "ByteType", byteTypeProperty.getReturnType().getName());
140 assertEquals("Incorrect type for property typedefEnumFruit.", "TypedefEnumFruit", typedefEnumFruitProperty
141 .getReturnType().getName());