2 * Copyright (c) 2014 Cisco Systems, Inc. and others. All rights reserved.
4 * This program and the accompanying materials are made available under the
5 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6 * and is available at http://www.eclipse.org/legal/epl-v10.html
8 package org.opendaylight.mdsal.binding.model.util.generated.type.builder;
10 import static org.junit.Assert.assertEquals;
11 import static org.junit.Assert.assertFalse;
12 import static org.junit.Assert.assertNotNull;
13 import static org.junit.Assert.assertTrue;
15 import java.io.Serializable;
16 import java.util.List;
17 import org.junit.Test;
18 import org.opendaylight.mdsal.binding.model.api.Constant;
19 import org.opendaylight.mdsal.binding.model.api.Enumeration;
20 import org.opendaylight.mdsal.binding.model.api.GeneratedProperty;
21 import org.opendaylight.mdsal.binding.model.api.GeneratedType;
22 import org.opendaylight.mdsal.binding.model.api.JavaTypeName;
23 import org.opendaylight.mdsal.binding.model.api.MethodSignature;
24 import org.opendaylight.mdsal.binding.model.api.Type;
25 import org.opendaylight.mdsal.binding.model.api.type.builder.EnumBuilder;
26 import org.opendaylight.mdsal.binding.model.api.type.builder.GeneratedPropertyBuilder;
27 import org.opendaylight.mdsal.binding.model.api.type.builder.GeneratedTOBuilder;
28 import org.opendaylight.mdsal.binding.model.api.type.builder.GeneratedTypeBuilder;
29 import org.opendaylight.mdsal.binding.model.api.type.builder.MethodSignatureBuilder;
30 import org.opendaylight.mdsal.binding.model.util.BindingGeneratorUtil;
31 import org.opendaylight.mdsal.binding.model.util.TypeComments;
32 import org.opendaylight.mdsal.binding.model.util.Types;
33 import org.opendaylight.yangtools.yang.common.QName;
34 import org.opendaylight.yangtools.yang.model.api.SchemaPath;
36 public class GeneratedTypeBuilderTest {
39 public void addConstantTest() {
40 GeneratedTypeBuilder generatedTypeBuilder = new CodegenGeneratedTypeBuilder(
41 JavaTypeName.create("my.package", "MyName"));
43 // assertNotNull(generatedTypeBuilder.addComment("My comment ..."));
45 Constant constant = generatedTypeBuilder.addConstant(Types.typeForClass(String.class), "myConstant",
47 // Constant constantx =
48 // generatedTypeBuilder.addConstant(Types.typeForClass(String.class),
49 // "myConstant", "myConstantValue");
50 Constant constant2 = generatedTypeBuilder.addConstant(
51 Types.typeForClass(int.class, BindingGeneratorUtil.getRestrictions(null)), "myIntConstant", 1);
53 Constant constant3 = new ConstantImpl(Types.typeForClass(String.class), "myConstant", "myConstantValue");
54 final Constant constant4 = new ConstantImpl(Types.typeForClass(String.class), "myConstant2", "myConstantValue");
55 final Constant constant5 = new ConstantImpl(Types.typeForClass(String.class), "myConstant", "myConstantValue2");
57 assertNotNull(constant);
58 assertNotNull(constant2);
59 assertNotNull(constant3);
60 assertNotNull(constant4);
61 assertNotNull(constant5);
62 // assertNotNull(constantx);
63 // assertTrue(constant!=constantx);
65 assertFalse(constant.equals(null));
66 assertFalse(constant.equals(new Object()));
67 assertTrue(constant.equals(constant));
68 assertTrue(constant.equals(constant3));
69 assertFalse(constant.equals(constant2));
70 assertFalse(constant.equals(constant4));
71 assertFalse(constant.equals(constant5));
73 assertTrue(constant.hashCode() == constant.hashCode());
74 assertTrue(constant.hashCode() == constant3.hashCode());
75 assertFalse(constant.hashCode() == constant2.hashCode());
76 assertFalse(constant.hashCode() == constant4.hashCode());
77 assertTrue(constant.hashCode() == constant5.hashCode());
79 assertEquals("Constant [type=Type (java.lang.String), name=myConstant, value=myConstantValue]",
82 assertEquals("Type (java.lang.String) myConstant myConstantValue", constant.toFormattedString());
84 GeneratedType instance = generatedTypeBuilder.build();
85 List<Constant> constantDefinitions = instance.getConstantDefinitions();
86 assertNotNull(constantDefinitions);
87 assertEquals(2, constantDefinitions.size());
88 assertTrue(constantDefinitions.contains(constant));
89 assertTrue(constantDefinitions.contains(constant2));
90 assertTrue(constantDefinitions.contains(constant3));
91 assertFalse(constantDefinitions.contains(constant4));
92 assertFalse(constantDefinitions.contains(constant5));
94 assertEquals("myConstant", constant.getName());
95 assertEquals("myConstantValue", constant.getValue());
96 assertEquals(Types.typeForClass(String.class), constant.getType());
99 @Test(expected = IllegalArgumentException.class)
100 public void addConstantIllegalArgumentTest() {
101 new CodegenGeneratedTypeBuilder(JavaTypeName.create("my.package", "MyName")).addConstant(
102 Types.typeForClass(String.class), null, "myConstantValue");
105 @Test(expected = IllegalArgumentException.class)
106 public void addConstantIllegalArgumentTest2() {
107 new CodegenGeneratedTypeBuilder(JavaTypeName.create("my.package", "MyName")).addConstant(null, "myConstantName",
112 public void generatedTypeBuilderEqualsAndHashCodeTest() {
113 final CodegenGeneratedTypeBuilder generatedTypeBuilder = new CodegenGeneratedTypeBuilder(
114 JavaTypeName.create("my.package", "MyName"));
115 final CodegenGeneratedTypeBuilder generatedTypeBuilder2 = new CodegenGeneratedTypeBuilder(
116 JavaTypeName.create("my.package", "MyName"));
117 final CodegenGeneratedTypeBuilder generatedTypeBuilder3 = new CodegenGeneratedTypeBuilder(
118 JavaTypeName.create("my.package", "MyName2"));
119 final CodegenGeneratedTypeBuilder generatedTypeBuilder4 = new CodegenGeneratedTypeBuilder(
120 JavaTypeName.create("my.package2", "MyName"));
122 assertFalse(generatedTypeBuilder.equals(null));
123 assertFalse(generatedTypeBuilder.equals(new Object()));
124 assertTrue(generatedTypeBuilder.equals(generatedTypeBuilder));
125 assertTrue(generatedTypeBuilder.equals(generatedTypeBuilder2));
127 assertTrue(generatedTypeBuilder.hashCode() == generatedTypeBuilder.hashCode());
128 assertTrue(generatedTypeBuilder.hashCode() == generatedTypeBuilder2.hashCode());
129 assertFalse(generatedTypeBuilder.hashCode() == generatedTypeBuilder3.hashCode());
130 assertFalse(generatedTypeBuilder.hashCode() == generatedTypeBuilder4.hashCode());
135 public void addPropertyTest() {
136 CodegenGeneratedTypeBuilder generatedTypeBuilder = new CodegenGeneratedTypeBuilder(
137 JavaTypeName.create("my.package", "MyName"));
139 GeneratedPropertyBuilder propertyBuilder = generatedTypeBuilder.addProperty("myProperty");
140 GeneratedPropertyBuilder propertyBuilder2 = generatedTypeBuilder.addProperty("myProperty2");
141 // GeneratedPropertyBuilder propertyBuilderNull =
142 // generatedTypeBuilder.addProperty(null);
144 assertNotNull(propertyBuilder);
145 assertNotNull(propertyBuilder2);
146 // assertNotNull(propertyBuilderNull);
148 assertTrue(generatedTypeBuilder.containsProperty("myProperty"));
149 assertTrue(generatedTypeBuilder.containsProperty("myProperty2"));
150 assertFalse(generatedTypeBuilder.containsProperty("myProperty3"));
152 GeneratedType instance = generatedTypeBuilder.build();
153 List<GeneratedProperty> properties = instance.getProperties();
155 assertEquals(2, properties.size());
157 assertTrue(properties.contains(propertyBuilder.toInstance()));
158 assertTrue(properties.contains(propertyBuilder2.toInstance()));
159 // assertTrue(properties.contains(propertyBuilderNull.toInstance(instance)));
160 assertFalse(properties.contains(new GeneratedPropertyBuilderImpl("myProperty3").toInstance()));
164 @Test(expected = IllegalArgumentException.class)
165 public void addMethodIllegalArgumentTest() {
166 new CodegenGeneratedTypeBuilder(JavaTypeName.create("my.package", "MyName")).addMethod(null);
170 public void addMethodTest() {
171 GeneratedTypeBuilder generatedTypeBuilder = new CodegenGeneratedTypeBuilder(
172 JavaTypeName.create("my.package", "MyName"));
174 MethodSignatureBuilder methodBuilder = generatedTypeBuilder.addMethod("myMethodName");
175 MethodSignatureBuilder methodBuilder2 = generatedTypeBuilder.addMethod("myMethodName2");
177 assertNotNull(methodBuilder);
178 assertNotNull(methodBuilder2);
180 assertTrue(generatedTypeBuilder.containsMethod("myMethodName"));
181 assertTrue(generatedTypeBuilder.containsMethod("myMethodName2"));
182 assertFalse(generatedTypeBuilder.containsMethod("myMethodName3"));
184 GeneratedType instance = generatedTypeBuilder.build();
185 List<MethodSignature> methodDefinitions = instance.getMethodDefinitions();
187 assertEquals(2, methodDefinitions.size());
189 assertTrue(methodDefinitions.contains(methodBuilder.toInstance(instance)));
190 assertTrue(methodDefinitions.contains(methodBuilder2.toInstance(instance)));
191 assertFalse(methodDefinitions.contains(new MethodSignatureBuilderImpl("myMethodName3").toInstance(instance)));
195 @Test(expected = IllegalArgumentException.class)
196 public void addEnumerationIllegalArgumentTest() {
197 new CodegenGeneratedTypeBuilder(JavaTypeName.create("my.package", "MyName")).addEnumeration(null);
201 public void addEnumerationTest() {
202 GeneratedTypeBuilder generatedTypeBuilder = new CodegenGeneratedTypeBuilder(
203 JavaTypeName.create("my.package", "MyName"));
205 EnumBuilder enumBuilder = generatedTypeBuilder.addEnumeration("myEnumName");
206 EnumBuilder enumBuilder2 = generatedTypeBuilder.addEnumeration("myEnumName2");
208 assertNotNull(enumBuilder);
209 assertNotNull(enumBuilder2);
211 GeneratedType instance = generatedTypeBuilder.build();
212 List<Enumeration> enumerations = instance.getEnumerations();
214 assertEquals(2, enumerations.size());
216 assertTrue(enumerations.contains(enumBuilder.toInstance()));
217 assertTrue(enumerations.contains(enumBuilder2.toInstance()));
218 assertFalse(enumerations.contains(new CodegenEnumerationBuilder(JavaTypeName.create("my.package",
219 "myEnumName3")).toInstance()));
223 @Test(expected = IllegalArgumentException.class)
224 public void addImplementsTypeIllegalArgumentTest() {
225 new CodegenGeneratedTypeBuilder(JavaTypeName.create("my.package", "MyName")).addImplementsType(null);
229 public void addImplementsTypeTest() {
230 CodegenGeneratedTypeBuilder generatedTypeBuilder = new CodegenGeneratedTypeBuilder(
231 JavaTypeName.create("my.package", "MyName"));
233 assertEquals(generatedTypeBuilder,
234 generatedTypeBuilder.addImplementsType(Types.typeForClass(Serializable.class)));
235 assertEquals(generatedTypeBuilder, generatedTypeBuilder.addImplementsType(Types.typeForClass(Runnable.class)));
237 GeneratedType instance = generatedTypeBuilder.build();
238 List<Type> implementTypes = instance.getImplements();
240 assertEquals(2, implementTypes.size());
242 assertTrue(implementTypes.contains(Types.typeForClass(Serializable.class)));
243 assertTrue(implementTypes.contains(Types.typeForClass(Runnable.class)));
244 assertFalse(implementTypes.contains(Types.typeForClass(Throwable.class)));
247 @Test(expected = IllegalArgumentException.class)
248 public void addEnclosingTransferObjectIllegalArgumentTest() {
249 new CodegenGeneratedTypeBuilder(JavaTypeName.create("my.package", "MyName")).addEnclosingTransferObject(
253 @Test(expected = IllegalArgumentException.class)
254 public void addEnclosingTransferObjectIllegalArgumentTest2() {
255 new CodegenGeneratedTypeBuilder(JavaTypeName.create("my.package", "MyName")).addEnclosingTransferObject(
256 (GeneratedTOBuilder) null);
260 public void addEnclosingTransferObjectTest() {
261 GeneratedTypeBuilder generatedTypeBuilder = new CodegenGeneratedTypeBuilder(
262 JavaTypeName.create("my.package", "MyName"));
264 GeneratedTOBuilder enclosingTransferObject = generatedTypeBuilder.addEnclosingTransferObject("myTOName");
265 GeneratedTOBuilder enclosingTransferObject2 = generatedTypeBuilder.addEnclosingTransferObject("myTOName2");
266 assertEquals(generatedTypeBuilder, generatedTypeBuilder.addEnclosingTransferObject(
267 new CodegenGeneratedTOBuilder(generatedTypeBuilder.getIdentifier().createEnclosed("myTOName3"))));
269 assertNotNull(enclosingTransferObject);
270 assertNotNull(enclosingTransferObject2);
272 GeneratedType instance = generatedTypeBuilder.build();
273 List<GeneratedType> enclosedTypes = instance.getEnclosedTypes();
275 assertEquals(3, enclosedTypes.size());
277 assertTrue(enclosedTypes.contains(enclosingTransferObject.build()));
278 assertTrue(enclosedTypes.contains(enclosingTransferObject2.build()));
279 assertTrue(enclosedTypes.contains(new CodegenGeneratedTOBuilder(
280 generatedTypeBuilder.getIdentifier().createEnclosed("myTOName3")).build()));
281 assertFalse(enclosedTypes.contains(new CodegenGeneratedTOBuilder(
282 generatedTypeBuilder.getIdentifier().createEnclosed("myTOName4")).build()));
286 public void generatedTypeTest() {
287 GeneratedTypeBuilder generatedTypeBuilder = new CodegenGeneratedTypeBuilder(
288 JavaTypeName.create("my.package", "MyName"));
290 generatedTypeBuilder.setDescription("My description ...");
291 generatedTypeBuilder.setModuleName("myModuleName");
292 generatedTypeBuilder.setReference("myReference");
293 generatedTypeBuilder.setSchemaPath(SchemaPath.create(true, QName.create("test", "path")));
294 assertNotNull(generatedTypeBuilder.addComment(TypeComments.javadoc("My comment..").get()));
297 "GeneratedTransferObject [packageName=my.package, name=MyName, comment=My comment.., annotations=[], "
298 + "implements=[], enclosedTypes=[], constants=[], enumerations=[], properties=, methods=[]]",
299 generatedTypeBuilder.toString());
301 GeneratedType instance = generatedTypeBuilder.build();
303 assertEquals("My description ...", instance.getDescription());
304 assertEquals("myModuleName", instance.getModuleName());
305 assertEquals("myReference", instance.getReference());
306 assertEquals(SchemaPath.create(true, QName.create("test", "path")).getPathFromRoot(),
307 instance.getSchemaPath());
308 assertEquals("My comment..", instance.getComment().getJavadoc());