1 package org.opendaylight.controller.sal.java.api.generator.test;
3 import static org.junit.Assert.assertEquals;
4 import static org.junit.Assert.assertNotNull;
5 import static org.junit.Assert.assertTrue;
8 import java.io.IOException;
10 import java.util.ArrayList;
11 import java.util.List;
14 import org.junit.BeforeClass;
15 import org.junit.Test;
16 import org.opendaylight.controller.binding.generator.util.Types;
17 import org.opendaylight.controller.binding.generator.util.generated.type.builder.GeneratedTOBuilderImpl;
18 import org.opendaylight.controller.sal.binding.generator.api.BindingGenerator;
19 import org.opendaylight.controller.sal.binding.generator.impl.BindingGeneratorImpl;
20 import org.opendaylight.controller.sal.binding.model.api.GeneratedProperty;
21 import org.opendaylight.controller.sal.binding.model.api.GeneratedTransferObject;
22 import org.opendaylight.controller.sal.binding.model.api.GeneratedType;
23 import org.opendaylight.controller.sal.binding.model.api.Type;
24 import org.opendaylight.controller.sal.binding.model.api.type.builder.GeneratedPropertyBuilder;
25 import org.opendaylight.controller.sal.binding.model.api.type.builder.GeneratedTOBuilder;
26 import org.opendaylight.controller.sal.java.api.generator.ClassCodeGenerator;
27 import org.opendaylight.controller.yang.model.api.Module;
28 import org.opendaylight.controller.yang.model.api.SchemaContext;
29 import org.opendaylight.controller.yang.model.parser.api.YangModelParser;
30 import org.opendaylight.controller.yang.parser.impl.YangParserImpl;
32 public class ClassCodeGeneratorTest {
34 private final static List<File> testModels = new ArrayList<File>();
37 public static void loadTestResources() {
38 final File listModelFile = new File(ClassCodeGeneratorTest.class
39 .getResource("/list-composite-key.yang").getPath());
40 testModels.add(listModelFile);
44 public void compositeKeyClassTest() {
45 final YangModelParser parser = new YangParserImpl();
46 final Set<Module> modules = parser.parseYangModels(testModels);
47 final SchemaContext context = parser.resolveSchemaContext(modules);
49 assertNotNull(context);
50 final BindingGenerator bindingGen = new BindingGeneratorImpl();
51 final List<Type> genTypes = bindingGen.generateTypes(context);
53 assertTrue(genTypes != null);
54 assertEquals(7, genTypes.size());
56 int genTypesCount = 0;
58 for (final Type type : genTypes) {
59 if (type instanceof GeneratedType
60 && !(type instanceof GeneratedTransferObject)) {
62 } else if (type instanceof GeneratedTransferObject) {
63 final GeneratedTransferObject genTO = (GeneratedTransferObject) type;
65 if (genTO.getName().equals("CompositeKeyListKey")) {
66 final List<GeneratedProperty> properties = genTO
68 int propertyCount = 0;
69 for (final GeneratedProperty prop : properties) {
70 if (prop.getName().equals("Key1")) {
72 } else if (prop.getName().equals("Key2")) {
77 final ClassCodeGenerator clsGen = new ClassCodeGenerator();
79 final Writer writer = clsGen.generate(genTO);
80 assertNotNull(writer);
82 final String outputStr = writer.toString();
85 assertNotNull(outputStr);
87 .contains("public CompositeKeyListKey(java.lang.String Key2, " +
88 "java.lang.Byte Key1)"));
90 } catch (IOException e) {
94 assertEquals(2, propertyCount);
96 } else if (genTO.getName().equals("InnerListKey")) {
97 final List<GeneratedProperty> properties = genTO
99 assertEquals(1, properties.size());
105 assertEquals(5, genTypesCount);
106 assertEquals(2, genTOsCount);
110 public void defaultConstructorTest() {
111 final GeneratedTOBuilder toBuilder = new GeneratedTOBuilderImpl("simple.pack", "DefCtor");
113 GeneratedPropertyBuilder propBuilder = toBuilder.addProperty("foo");
114 propBuilder.addReturnType(Types.typeForClass(String.class));
115 propBuilder.setReadOnly(false);
117 propBuilder = toBuilder.addProperty("bar");
118 propBuilder.addReturnType(Types.typeForClass(Integer.class));
119 propBuilder.setReadOnly(false);
121 final GeneratedTransferObject genTO = toBuilder.toInstance();
123 final ClassCodeGenerator clsGen = new ClassCodeGenerator();
125 final Writer writer = clsGen.generate(genTO);
126 assertNotNull(writer);
128 final String outputStr = writer.toString();
131 assertNotNull(outputStr);
133 .contains("public DefCtor()"));
135 } catch (IOException e) {