1 package org.opendaylight.yangtools.sal.java.api.generator.test;
\r
3 import static org.junit.Assert.*;
\r
6 import java.io.IOException;
\r
7 import java.io.Writer;
\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
77 final Writer writer = clsGen.generate(genTO);
\r
78 assertNotNull(writer);
\r
80 final String outputStr = writer.toString();
\r
83 assertNotNull(outputStr);
\r
84 assertTrue(outputStr
\r
85 .contains("public CompositeKeyListKey(String Key2, "
\r
88 } catch (IOException e) {
\r
89 e.printStackTrace();
\r
92 assertEquals(2, propertyCount);
\r
94 } else if (genTO.getName().equals("InnerListKey")) {
\r
95 final List<GeneratedProperty> properties = genTO
\r
97 assertEquals(1, properties.size());
\r
103 assertEquals(5, genTypesCount);
\r
104 assertEquals(2, genTOsCount);
\r
108 public void defaultConstructorTest() {
\r
109 final GeneratedTOBuilder toBuilder = new GeneratedTOBuilderImpl(
\r
110 "simple.pack", "DefCtor");
\r
112 GeneratedPropertyBuilder propBuilder = toBuilder.addProperty("foo");
\r
113 propBuilder.setReturnType(Types.typeForClass(String.class));
\r
114 propBuilder.setReadOnly(false);
\r
116 propBuilder = toBuilder.addProperty("bar");
\r
117 propBuilder.setReturnType(Types.typeForClass(Integer.class));
\r
118 propBuilder.setReadOnly(false);
\r
120 final GeneratedTransferObject genTO = toBuilder.toInstance();
\r
122 final TOGenerator clsGen = new TOGenerator();
\r
124 final Writer writer = clsGen.generate(genTO);
\r
125 assertNotNull(writer);
\r
127 final String outputStr = writer.toString();
\r
130 assertNotNull(outputStr);
\r
131 assertTrue(outputStr.contains("public DefCtor()"));
\r
133 } catch (IOException e) {
\r
134 e.printStackTrace();
\r
139 public void toStringTest() {
\r
140 final GeneratedTOBuilder toBuilder = new GeneratedTOBuilderImpl(
\r
141 "simple.pack", "DefCtor");
\r
143 GeneratedPropertyBuilder propBuilder = toBuilder.addProperty("foo");
\r
144 propBuilder.setReturnType(Types.typeForClass(String.class));
\r
145 propBuilder.setReadOnly(false);
\r
146 toBuilder.addToStringProperty(propBuilder);
\r
148 propBuilder = toBuilder.addProperty("bar");
\r
149 propBuilder.setReturnType(Types.typeForClass(Integer.class));
\r
150 propBuilder.setReadOnly(false);
\r
151 toBuilder.addToStringProperty(propBuilder);
\r
152 final GeneratedTransferObject genTO = toBuilder.toInstance();
\r
153 final TOGenerator clsGen = new TOGenerator();
\r
155 final Writer writer = clsGen.generate(genTO);
\r
156 assertNotNull(writer);
\r
157 } catch (IOException e) {
\r
158 e.printStackTrace();
\r