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.Ignore;
\r
14 import org.junit.Test;
\r
15 import org.opendaylight.yangtools.binding.generator.util.Types;
\r
16 import org.opendaylight.yangtools.binding.generator.util.generated.type.builder.GeneratedTOBuilderImpl;
\r
17 import org.opendaylight.yangtools.sal.binding.generator.api.BindingGenerator;
\r
18 import org.opendaylight.yangtools.sal.binding.generator.impl.BindingGeneratorImpl;
\r
19 import org.opendaylight.yangtools.sal.binding.model.api.GeneratedProperty;
\r
20 import org.opendaylight.yangtools.sal.binding.model.api.GeneratedTransferObject;
\r
21 import org.opendaylight.yangtools.sal.binding.model.api.GeneratedType;
\r
22 import org.opendaylight.yangtools.sal.binding.model.api.Type;
\r
23 import org.opendaylight.yangtools.sal.binding.model.api.type.builder.GeneratedPropertyBuilder;
\r
24 import org.opendaylight.yangtools.sal.binding.model.api.type.builder.GeneratedTOBuilder;
\r
25 import org.opendaylight.yangtools.sal.java.api.generator.TOGenerator;
\r
26 import org.opendaylight.yangtools.yang.model.api.Module;
\r
27 import org.opendaylight.yangtools.yang.model.api.SchemaContext;
\r
28 import org.opendaylight.yangtools.yang.model.parser.api.YangModelParser;
\r
29 import org.opendaylight.yangtools.yang.parser.impl.YangParserImpl;
\r
31 public class ClassCodeGeneratorTest {
\r
33 private final static List<File> testModels = new ArrayList<File>();
\r
36 public static void loadTestResources() {
\r
37 final File listModelFile = new File(ClassCodeGeneratorTest.class
\r
38 .getResource("/list-composite-key.yang").getPath());
\r
39 testModels.add(listModelFile);
\r
43 public void compositeKeyClassTest() {
\r
44 final YangModelParser parser = new YangParserImpl();
\r
45 final Set<Module> modules = parser.parseYangModels(testModels);
\r
46 final SchemaContext context = parser.resolveSchemaContext(modules);
\r
48 assertNotNull(context);
\r
49 final BindingGenerator bindingGen = new BindingGeneratorImpl();
\r
50 final List<Type> genTypes = bindingGen.generateTypes(context);
\r
52 assertTrue(genTypes != null);
\r
53 assertEquals(7, genTypes.size());
\r
55 int genTypesCount = 0;
\r
56 int genTOsCount = 0;
\r
57 for (final Type type : genTypes) {
\r
58 if (type instanceof GeneratedType
\r
59 && !(type instanceof GeneratedTransferObject)) {
\r
61 } else if (type instanceof GeneratedTransferObject) {
\r
62 final GeneratedTransferObject genTO = (GeneratedTransferObject) type;
\r
64 if (genTO.getName().equals("CompositeKeyListKey")) {
\r
65 final List<GeneratedProperty> properties = genTO
\r
67 int propertyCount = 0;
\r
68 for (final GeneratedProperty prop : properties) {
\r
69 if (prop.getName().equals("Key1")) {
\r
71 } else if (prop.getName().equals("Key2")) {
\r
76 final TOGenerator clsGen = new TOGenerator();
\r
77 final String outputStr = clsGen.generate(genTO);
\r
79 assertNotNull(outputStr);
\r
80 assertTrue(outputStr
\r
81 .contains("public CompositeKeyListKey(String _Key2, "
\r
84 assertEquals(2, propertyCount);
\r
86 } else if (genTO.getName().equals("InnerListKey")) {
\r
87 final List<GeneratedProperty> properties = genTO
\r
89 assertEquals(1, properties.size());
\r
95 assertEquals(5, genTypesCount);
\r
96 assertEquals(2, genTOsCount);
\r
101 public void defaultConstructorTest() {
\r
102 final GeneratedTOBuilder toBuilder = new GeneratedTOBuilderImpl(
\r
103 "simple.pack", "DefCtor");
\r
105 GeneratedPropertyBuilder propBuilder = toBuilder.addProperty("foo");
\r
106 propBuilder.setReturnType(Types.typeForClass(String.class));
\r
107 propBuilder.setReadOnly(false);
\r
109 propBuilder = toBuilder.addProperty("bar");
\r
110 propBuilder.setReturnType(Types.typeForClass(Integer.class));
\r
111 propBuilder.setReadOnly(false);
\r
113 final GeneratedTransferObject genTO = toBuilder.toInstance();
\r
115 final TOGenerator clsGen = new TOGenerator();
\r
116 final String outputStr = clsGen.generate(genTO);
\r
118 assertNotNull(outputStr);
\r
119 assertTrue(outputStr.contains("public DefCtor()"));
\r
123 public void toStringTest() {
\r
124 final GeneratedTOBuilder toBuilder = new GeneratedTOBuilderImpl(
\r
125 "simple.pack", "DefCtor");
\r
127 GeneratedPropertyBuilder propBuilder = toBuilder.addProperty("foo");
\r
128 propBuilder.setReturnType(Types.typeForClass(String.class));
\r
129 propBuilder.setReadOnly(false);
\r
130 toBuilder.addToStringProperty(propBuilder);
\r
132 propBuilder = toBuilder.addProperty("bar");
\r
133 propBuilder.setReturnType(Types.typeForClass(Integer.class));
\r
134 propBuilder.setReadOnly(false);
\r
135 toBuilder.addToStringProperty(propBuilder);
\r
136 final GeneratedTransferObject genTO = toBuilder.toInstance();
\r
137 final TOGenerator clsGen = new TOGenerator();
\r
138 assertNotNull(clsGen.generate(genTO));
\r