Fixed incorrect path construction in JUnit tests.
[yangtools.git] / code-generator / binding-java-api-generator / src / test / java / org / opendaylight / yangtools / sal / java / api / generator / test / ClassCodeGeneratorTest.java
1 /*\r
2  * Copyright (c) 2013 Cisco Systems, Inc. and others.  All rights reserved.\r
3  *\r
4  * This program and the accompanying materials are made available under the\r
5  * terms of the Eclipse Public License v1.0 which accompanies this distribution,\r
6  * and is available at http://www.eclipse.org/legal/epl-v10.html\r
7  */\r
8 package org.opendaylight.yangtools.sal.java.api.generator.test;\r
9 \r
10 import static org.junit.Assert.*;\r
11 \r
12 import java.io.File;\r
13 import java.net.URISyntaxException;\r
14 import java.util.ArrayList;\r
15 import java.util.List;\r
16 import java.util.Set;\r
17 \r
18 import org.junit.BeforeClass;\r
19 import org.junit.Ignore;\r
20 import org.junit.Test;\r
21 import org.opendaylight.yangtools.binding.generator.util.Types;\r
22 import org.opendaylight.yangtools.binding.generator.util.generated.type.builder.GeneratedTOBuilderImpl;\r
23 import org.opendaylight.yangtools.sal.binding.generator.api.BindingGenerator;\r
24 import org.opendaylight.yangtools.sal.binding.generator.impl.BindingGeneratorImpl;\r
25 import org.opendaylight.yangtools.sal.binding.model.api.GeneratedProperty;\r
26 import org.opendaylight.yangtools.sal.binding.model.api.GeneratedTransferObject;\r
27 import org.opendaylight.yangtools.sal.binding.model.api.GeneratedType;\r
28 import org.opendaylight.yangtools.sal.binding.model.api.Type;\r
29 import org.opendaylight.yangtools.sal.binding.model.api.type.builder.GeneratedPropertyBuilder;\r
30 import org.opendaylight.yangtools.sal.binding.model.api.type.builder.GeneratedTOBuilder;\r
31 import org.opendaylight.yangtools.sal.java.api.generator.TOGenerator;\r
32 import org.opendaylight.yangtools.yang.model.api.Module;\r
33 import org.opendaylight.yangtools.yang.model.api.SchemaContext;\r
34 import org.opendaylight.yangtools.yang.model.parser.api.YangModelParser;\r
35 import org.opendaylight.yangtools.yang.parser.impl.YangParserImpl;\r
36 \r
37 public class ClassCodeGeneratorTest {\r
38 \r
39     private final static List<File> testModels = new ArrayList<File>();\r
40 \r
41     @BeforeClass\r
42     public static void loadTestResources() throws URISyntaxException {\r
43         final File listModelFile = new File(ClassCodeGeneratorTest.class\r
44                 .getResource("/list-composite-key.yang").toURI());\r
45         testModels.add(listModelFile);\r
46     }\r
47 \r
48     @Test\r
49     public void compositeKeyClassTest() {\r
50         final YangModelParser parser = new YangParserImpl();\r
51         final Set<Module> modules = parser.parseYangModels(testModels);\r
52         final SchemaContext context = parser.resolveSchemaContext(modules);\r
53 \r
54         assertNotNull(context);\r
55         final BindingGenerator bindingGen = new BindingGeneratorImpl();\r
56         final List<Type> genTypes = bindingGen.generateTypes(context);\r
57 \r
58         assertTrue(genTypes != null);\r
59         assertEquals(7, genTypes.size());\r
60 \r
61         int genTypesCount = 0;\r
62         int genTOsCount = 0;\r
63         for (final Type type : genTypes) {\r
64             if (type instanceof GeneratedType\r
65                     && !(type instanceof GeneratedTransferObject)) {\r
66                 genTypesCount++;\r
67             } else if (type instanceof GeneratedTransferObject) {\r
68                 final GeneratedTransferObject genTO = (GeneratedTransferObject) type;\r
69 \r
70                 if (genTO.getName().equals("CompositeKeyListKey")) {\r
71                     final List<GeneratedProperty> properties = genTO\r
72                             .getProperties();\r
73                     int propertyCount = 0;\r
74                     for (final GeneratedProperty prop : properties) {\r
75                         if (prop.getName().equals("key1")) {\r
76                             propertyCount++;\r
77                         } else if (prop.getName().equals("key2")) {\r
78                             propertyCount++;\r
79                         }\r
80                     }\r
81 \r
82                     final TOGenerator clsGen = new TOGenerator();\r
83                     final String outputStr = clsGen.generate(genTO);\r
84 \r
85                     assertNotNull(outputStr);\r
86                     assertTrue(outputStr.contains("public CompositeKeyListKey(Byte _key1, String _key2)"));\r
87 \r
88                     assertEquals(2, propertyCount);\r
89                     genTOsCount++;\r
90                 } else if (genTO.getName().equals("InnerListKey")) {\r
91                     final List<GeneratedProperty> properties = genTO\r
92                             .getProperties();\r
93                     assertEquals(1, properties.size());\r
94                     genTOsCount++;\r
95                 }\r
96             }\r
97         }\r
98 \r
99         assertEquals(5, genTypesCount);\r
100         assertEquals(2, genTOsCount);\r
101     }\r
102 \r
103     @Ignore\r
104     @Test\r
105     public void defaultConstructorTest() {\r
106         final GeneratedTOBuilder toBuilder = new GeneratedTOBuilderImpl(\r
107                 "simple.pack", "DefCtor");\r
108 \r
109         GeneratedPropertyBuilder propBuilder = toBuilder.addProperty("foo");\r
110         propBuilder.setReturnType(Types.typeForClass(String.class));\r
111         propBuilder.setReadOnly(false);\r
112 \r
113         propBuilder = toBuilder.addProperty("bar");\r
114         propBuilder.setReturnType(Types.typeForClass(Integer.class));\r
115         propBuilder.setReadOnly(false);\r
116 \r
117         final GeneratedTransferObject genTO = toBuilder.toInstance();\r
118 \r
119         final TOGenerator clsGen = new TOGenerator();\r
120         final String outputStr = clsGen.generate(genTO);\r
121 \r
122         assertNotNull(outputStr);\r
123         assertTrue(outputStr.contains("public DefCtor()"));\r
124     }\r
125 \r
126     @Test\r
127     public void toStringTest() {\r
128         final GeneratedTOBuilder toBuilder = new GeneratedTOBuilderImpl(\r
129                 "simple.pack", "DefCtor");\r
130 \r
131         GeneratedPropertyBuilder propBuilder = toBuilder.addProperty("foo");\r
132         propBuilder.setReturnType(Types.typeForClass(String.class));\r
133         propBuilder.setReadOnly(false);\r
134         toBuilder.addToStringProperty(propBuilder);\r
135 \r
136         propBuilder = toBuilder.addProperty("bar");\r
137         propBuilder.setReturnType(Types.typeForClass(Integer.class));\r
138         propBuilder.setReadOnly(false);\r
139         toBuilder.addToStringProperty(propBuilder);\r
140         final GeneratedTransferObject genTO = toBuilder.toInstance();\r
141         final TOGenerator clsGen = new TOGenerator();\r
142         assertNotNull(clsGen.generate(genTO));\r
143     }\r
144 }\r