1 package org.opendaylight.yangtools.sal.java.api.generator.test;
\r
3 import static org.junit.Assert.assertEquals;
\r
4 import static org.junit.Assert.assertNotNull;
\r
5 import static org.junit.Assert.assertTrue;
\r
8 import java.util.ArrayList;
\r
9 import java.util.List;
\r
10 import java.util.Set;
\r
12 import org.junit.BeforeClass;
\r
13 import org.junit.Test;
\r
14 import org.opendaylight.yangtools.binding.generator.util.Types;
\r
15 import org.opendaylight.yangtools.binding.generator.util.generated.type.builder.GeneratedTOBuilderImpl;
\r
16 import org.opendaylight.yangtools.sal.binding.generator.api.BindingGenerator;
\r
17 import org.opendaylight.yangtools.sal.binding.generator.impl.BindingGeneratorImpl;
\r
18 import org.opendaylight.yangtools.sal.binding.model.api.GeneratedProperty;
\r
19 import org.opendaylight.yangtools.sal.binding.model.api.GeneratedTransferObject;
\r
20 import org.opendaylight.yangtools.sal.binding.model.api.GeneratedType;
\r
21 import org.opendaylight.yangtools.sal.binding.model.api.Type;
\r
22 import org.opendaylight.yangtools.sal.binding.model.api.type.builder.GeneratedPropertyBuilder;
\r
23 import org.opendaylight.yangtools.sal.binding.model.api.type.builder.GeneratedTOBuilder;
\r
24 import org.opendaylight.yangtools.sal.java.api.generator.TOGenerator;
\r
25 import org.opendaylight.yangtools.yang.model.api.Module;
\r
26 import org.opendaylight.yangtools.yang.model.api.SchemaContext;
\r
27 import org.opendaylight.yangtools.yang.model.parser.api.YangModelParser;
\r
28 import org.opendaylight.yangtools.yang.parser.impl.YangParserImpl;
\r
30 public class ClassCodeGeneratorTest {
\r
32 private final static List<File> testModels = new ArrayList<File>();
\r
35 public static void loadTestResources() {
\r
36 final File listModelFile = new File(ClassCodeGeneratorTest.class
\r
37 .getResource("/list-composite-key.yang").getPath());
\r
38 testModels.add(listModelFile);
\r
42 public void compositeKeyClassTest() {
\r
43 final YangModelParser parser = new YangParserImpl();
\r
44 final Set<Module> modules = parser.parseYangModels(testModels);
\r
45 final SchemaContext context = parser.resolveSchemaContext(modules);
\r
47 assertNotNull(context);
\r
48 final BindingGenerator bindingGen = new BindingGeneratorImpl();
\r
49 final List<Type> genTypes = bindingGen.generateTypes(context);
\r
51 assertTrue(genTypes != null);
\r
52 assertEquals(7, genTypes.size());
\r
54 int genTypesCount = 0;
\r
55 int genTOsCount = 0;
\r
56 for (final Type type : genTypes) {
\r
57 if (type instanceof GeneratedType
\r
58 && !(type instanceof GeneratedTransferObject)) {
\r
60 } else if (type instanceof GeneratedTransferObject) {
\r
61 final GeneratedTransferObject genTO = (GeneratedTransferObject) type;
\r
63 if (genTO.getName().equals("CompositeKeyListKey")) {
\r
64 final List<GeneratedProperty> properties = genTO
\r
66 int propertyCount = 0;
\r
67 for (final GeneratedProperty prop : properties) {
\r
68 if (prop.getName().equals("Key1")) {
\r
70 } else if (prop.getName().equals("Key2")) {
\r
75 final TOGenerator clsGen = new TOGenerator();
\r
76 final String outputStr = clsGen.generate(genTO);
\r
78 assertNotNull(outputStr);
\r
79 assertTrue(outputStr
\r
80 .contains("public CompositeKeyListKey(String _Key2, "
\r
83 assertEquals(2, propertyCount);
\r
85 } else if (genTO.getName().equals("InnerListKey")) {
\r
86 final List<GeneratedProperty> properties = genTO
\r
88 assertEquals(1, properties.size());
\r
94 assertEquals(5, genTypesCount);
\r
95 assertEquals(2, genTOsCount);
\r
99 public void defaultConstructorTest() {
\r
100 final GeneratedTOBuilder toBuilder = new GeneratedTOBuilderImpl(
\r
101 "simple.pack", "DefCtor");
\r
103 GeneratedPropertyBuilder propBuilder = toBuilder.addProperty("foo");
\r
104 propBuilder.setReturnType(Types.typeForClass(String.class));
\r
105 propBuilder.setReadOnly(false);
\r
107 propBuilder = toBuilder.addProperty("bar");
\r
108 propBuilder.setReturnType(Types.typeForClass(Integer.class));
\r
109 propBuilder.setReadOnly(false);
\r
111 final GeneratedTransferObject genTO = toBuilder.toInstance();
\r
113 final TOGenerator clsGen = new TOGenerator();
\r
114 final String outputStr = clsGen.generate(genTO);
\r
116 assertNotNull(outputStr);
\r
117 assertTrue(outputStr.contains("public DefCtor()"));
\r
121 public void toStringTest() {
\r
122 final GeneratedTOBuilder toBuilder = new GeneratedTOBuilderImpl(
\r
123 "simple.pack", "DefCtor");
\r
125 GeneratedPropertyBuilder propBuilder = toBuilder.addProperty("foo");
\r
126 propBuilder.setReturnType(Types.typeForClass(String.class));
\r
127 propBuilder.setReadOnly(false);
\r
128 toBuilder.addToStringProperty(propBuilder);
\r
130 propBuilder = toBuilder.addProperty("bar");
\r
131 propBuilder.setReturnType(Types.typeForClass(Integer.class));
\r
132 propBuilder.setReadOnly(false);
\r
133 toBuilder.addToStringProperty(propBuilder);
\r
134 final GeneratedTransferObject genTO = toBuilder.toInstance();
\r
135 final TOGenerator clsGen = new TOGenerator();
\r
136 assertNotNull(clsGen.generate(genTO));
\r