1 package org.opendaylight.controller.sal.java.api.generator.test;
3 import static org.junit.Assert.*;
6 import java.io.IOException;
8 import java.util.ArrayList;
12 import org.junit.BeforeClass;
13 import org.junit.Test;
14 import org.opendaylight.controller.binding.generator.util.Types;
15 import org.opendaylight.controller.binding.generator.util.generated.type.builder.GeneratedTOBuilderImpl;
16 import org.opendaylight.controller.sal.binding.generator.api.BindingGenerator;
17 import org.opendaylight.controller.sal.binding.generator.impl.BindingGeneratorImpl;
18 import org.opendaylight.controller.sal.binding.model.api.GeneratedProperty;
19 import org.opendaylight.controller.sal.binding.model.api.GeneratedTransferObject;
20 import org.opendaylight.controller.sal.binding.model.api.GeneratedType;
21 import org.opendaylight.controller.sal.binding.model.api.Type;
22 import org.opendaylight.controller.sal.binding.model.api.type.builder.GeneratedPropertyBuilder;
23 import org.opendaylight.controller.sal.binding.model.api.type.builder.GeneratedTOBuilder;
24 import org.opendaylight.controller.sal.java.api.generator.ClassCodeGenerator;
25 import org.opendaylight.yangtools.yang.model.api.Module;
26 import org.opendaylight.yangtools.yang.model.api.SchemaContext;
27 import org.opendaylight.yangtools.yang.model.parser.api.YangModelParser;
28 import org.opendaylight.yangtools.yang.parser.impl.YangParserImpl;
30 public class ClassCodeGeneratorTest {
32 private final static List<File> testModels = new ArrayList<File>();
35 public static void loadTestResources() {
36 final File listModelFile = new File(ClassCodeGeneratorTest.class
37 .getResource("/list-composite-key.yang").getPath());
38 testModels.add(listModelFile);
42 public void compositeKeyClassTest() {
43 final YangModelParser parser = new YangParserImpl();
44 final Set<Module> modules = parser.parseYangModels(testModels);
45 final SchemaContext context = parser.resolveSchemaContext(modules);
47 assertNotNull(context);
48 final BindingGenerator bindingGen = new BindingGeneratorImpl();
49 final List<Type> genTypes = bindingGen.generateTypes(context);
51 assertTrue(genTypes != null);
52 assertEquals(8, genTypes.size());
54 int genTypesCount = 0;
56 for (final Type type : genTypes) {
57 if (type instanceof GeneratedType
58 && !(type instanceof GeneratedTransferObject)) {
60 } else if (type instanceof GeneratedTransferObject) {
61 final GeneratedTransferObject genTO = (GeneratedTransferObject) type;
63 if (genTO.getName().equals("CompositeKeyListKey")) {
64 final List<GeneratedProperty> properties = genTO
66 int propertyCount = 0;
67 for (final GeneratedProperty prop : properties) {
68 if (prop.getName().equals("Key1")) {
70 } else if (prop.getName().equals("Key2")) {
75 final ClassCodeGenerator clsGen = new ClassCodeGenerator();
77 final Writer writer = clsGen.generate(genTO);
78 assertNotNull(writer);
80 final String outputStr = writer.toString();
83 assertNotNull(outputStr);
85 .contains("public CompositeKeyListKey(String Key2, "
88 } catch (IOException e) {
92 assertEquals(2, propertyCount);
94 } else if (genTO.getName().equals("InnerListKey")) {
95 final List<GeneratedProperty> properties = genTO
97 assertEquals(1, properties.size());
103 assertEquals(6, genTypesCount);
104 assertEquals(2, genTOsCount);
108 public void defaultConstructorTest() {
109 final GeneratedTOBuilder toBuilder = new GeneratedTOBuilderImpl(
110 "simple.pack", "DefCtor");
112 GeneratedPropertyBuilder propBuilder = toBuilder.addProperty("foo");
113 propBuilder.setReturnType(Types.typeForClass(String.class));
114 propBuilder.setReadOnly(false);
116 propBuilder = toBuilder.addProperty("bar");
117 propBuilder.setReturnType(Types.typeForClass(Integer.class));
118 propBuilder.setReadOnly(false);
120 final GeneratedTransferObject genTO = toBuilder.toInstance();
122 final ClassCodeGenerator clsGen = new ClassCodeGenerator();
124 final Writer writer = clsGen.generate(genTO);
125 assertNotNull(writer);
127 final String outputStr = writer.toString();
130 assertNotNull(outputStr);
131 assertTrue(outputStr.contains("public DefCtor()"));
133 } catch (IOException e) {
139 public void toStringTest() {
140 final GeneratedTOBuilder toBuilder = new GeneratedTOBuilderImpl(
141 "simple.pack", "DefCtor");
143 GeneratedPropertyBuilder propBuilder = toBuilder.addProperty("foo");
144 propBuilder.setReturnType(Types.typeForClass(String.class));
145 propBuilder.setReadOnly(false);
146 toBuilder.addToStringProperty(propBuilder);
148 propBuilder = toBuilder.addProperty("bar");
149 propBuilder.setReturnType(Types.typeForClass(Integer.class));
150 propBuilder.setReadOnly(false);
151 toBuilder.addToStringProperty(propBuilder);
152 final GeneratedTransferObject genTO = toBuilder.toInstance();
153 final ClassCodeGenerator clsGen = new ClassCodeGenerator();
155 final Writer writer = clsGen.generate(genTO);
156 assertNotNull(writer);
157 } catch (IOException e) {