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.MethodSignature;
23 import org.opendaylight.mdsal.binding.model.api.Type;
24 import org.opendaylight.mdsal.binding.model.api.type.builder.EnumBuilder;
25 import org.opendaylight.mdsal.binding.model.api.type.builder.GeneratedPropertyBuilder;
26 import org.opendaylight.mdsal.binding.model.api.type.builder.GeneratedTOBuilder;
27 import org.opendaylight.mdsal.binding.model.api.type.builder.GeneratedTypeBuilder;
28 import org.opendaylight.mdsal.binding.model.api.type.builder.MethodSignatureBuilder;
29 import org.opendaylight.mdsal.binding.model.util.BindingGeneratorUtil;
30 import org.opendaylight.mdsal.binding.model.util.TypeComments;
31 import org.opendaylight.mdsal.binding.model.util.Types;
32 import org.opendaylight.yangtools.yang.common.QName;
33 import org.opendaylight.yangtools.yang.model.api.SchemaPath;
35 public class GeneratedTypeBuilderTest {
38 public void addConstantTest() {
39 GeneratedTypeBuilder generatedTypeBuilder = new GeneratedTypeBuilderImpl("my.package", "MyName");
41 // assertNotNull(generatedTypeBuilder.addComment("My comment ..."));
43 Constant constant = generatedTypeBuilder.addConstant(Types.typeForClass(String.class), "myConstant",
45 // Constant constantx =
46 // generatedTypeBuilder.addConstant(Types.typeForClass(String.class),
47 // "myConstant", "myConstantValue");
48 Constant constant2 = generatedTypeBuilder.addConstant(
49 Types.primitiveType("int", BindingGeneratorUtil.getRestrictions(null)), "myIntConstant", 1);
51 Constant constant3 = new ConstantImpl(generatedTypeBuilder, Types.typeForClass(String.class), "myConstant",
53 Constant constant4 = new ConstantImpl(generatedTypeBuilder, Types.typeForClass(String.class), "myConstant2",
55 Constant constant5 = new ConstantImpl(generatedTypeBuilder, Types.typeForClass(String.class), "myConstant",
58 assertNotNull(constant);
59 assertNotNull(constant2);
60 assertNotNull(constant3);
61 assertNotNull(constant4);
62 assertNotNull(constant5);
63 // assertNotNull(constantx);
64 // assertTrue(constant!=constantx);
66 assertFalse(constant.equals(null));
67 assertFalse(constant.equals(new Object()));
68 assertTrue(constant.equals(constant));
69 assertTrue(constant.equals(constant3));
70 assertFalse(constant.equals(constant2));
71 assertFalse(constant.equals(constant4));
72 assertFalse(constant.equals(constant5));
74 assertTrue(constant.hashCode() == constant.hashCode());
75 assertTrue(constant.hashCode() == constant3.hashCode());
76 assertFalse(constant.hashCode() == constant2.hashCode());
77 assertFalse(constant.hashCode() == constant4.hashCode());
78 assertTrue(constant.hashCode() == constant5.hashCode());
81 "Constant [type=Type (java.lang.String), name=myConstant, value=myConstantValue, definingType=my.package.MyName]",
84 assertEquals("Type (java.lang.String) myConstant myConstantValue", constant.toFormattedString());
86 GeneratedType instance = generatedTypeBuilder.toInstance();
87 List<Constant> constantDefinitions = instance.getConstantDefinitions();
88 assertNotNull(constantDefinitions);
89 assertEquals(2, constantDefinitions.size());
90 assertTrue(constantDefinitions.contains(constant));
91 assertTrue(constantDefinitions.contains(constant2));
92 assertTrue(constantDefinitions.contains(constant3));
93 assertFalse(constantDefinitions.contains(constant4));
94 assertFalse(constantDefinitions.contains(constant5));
96 assertEquals("myConstant", constant.getName());
97 assertEquals("myConstantValue", constant.getValue());
98 assertEquals(Types.typeForClass(String.class), constant.getType());
99 assertEquals(generatedTypeBuilder, constant.getDefiningType());
102 @Test(expected = IllegalArgumentException.class)
103 public void addConstantIllegalArgumentTest() {
104 GeneratedTypeBuilder generatedTypeBuilder = new GeneratedTypeBuilderImpl("my.package", "MyName");
105 generatedTypeBuilder.addConstant(Types.typeForClass(String.class), null, "myConstantValue");
108 @Test(expected = IllegalArgumentException.class)
109 public void addConstantIllegalArgumentTest2() {
110 GeneratedTypeBuilder generatedTypeBuilder = new GeneratedTypeBuilderImpl("my.package", "MyName");
111 generatedTypeBuilder.addConstant(null, "myConstantName", "myConstantValue");
115 public void generatedTypeBuilderEqualsAndHashCodeTest() {
116 GeneratedTypeBuilderImpl generatedTypeBuilder = new GeneratedTypeBuilderImpl("my.package", "MyName");
117 GeneratedTypeBuilderImpl generatedTypeBuilder2 = new GeneratedTypeBuilderImpl("my.package", "MyName");
118 GeneratedTypeBuilderImpl generatedTypeBuilder3 = new GeneratedTypeBuilderImpl("my.package", "MyName2");
119 GeneratedTypeBuilderImpl generatedTypeBuilder4 = new GeneratedTypeBuilderImpl("my.package2", "MyName");
121 assertFalse(generatedTypeBuilder.equals(null));
122 assertFalse(generatedTypeBuilder.equals(new Object()));
123 assertTrue(generatedTypeBuilder.equals(generatedTypeBuilder));
124 assertTrue(generatedTypeBuilder.equals(generatedTypeBuilder2));
126 assertTrue(generatedTypeBuilder.hashCode() == generatedTypeBuilder.hashCode());
127 assertTrue(generatedTypeBuilder.hashCode() == generatedTypeBuilder2.hashCode());
128 assertFalse(generatedTypeBuilder.hashCode() == generatedTypeBuilder3.hashCode());
129 assertFalse(generatedTypeBuilder.hashCode() == generatedTypeBuilder4.hashCode());
134 public void addPropertyTest() {
135 GeneratedTypeBuilderImpl generatedTypeBuilder = new GeneratedTypeBuilderImpl("my.package", "MyName");
137 GeneratedPropertyBuilder propertyBuilder = generatedTypeBuilder.addProperty("myProperty");
138 GeneratedPropertyBuilder propertyBuilder2 = generatedTypeBuilder.addProperty("myProperty2");
139 // GeneratedPropertyBuilder propertyBuilderNull =
140 // generatedTypeBuilder.addProperty(null);
142 assertNotNull(propertyBuilder);
143 assertNotNull(propertyBuilder2);
144 // assertNotNull(propertyBuilderNull);
146 assertTrue(generatedTypeBuilder.containsProperty("myProperty"));
147 assertTrue(generatedTypeBuilder.containsProperty("myProperty2"));
148 assertFalse(generatedTypeBuilder.containsProperty("myProperty3"));
150 GeneratedType instance = generatedTypeBuilder.toInstance();
151 List<GeneratedProperty> properties = instance.getProperties();
153 assertEquals(2, properties.size());
155 assertTrue(properties.contains(propertyBuilder.toInstance(instance)));
156 assertTrue(properties.contains(propertyBuilder2.toInstance(instance)));
157 // assertTrue(properties.contains(propertyBuilderNull.toInstance(instance)));
158 assertFalse(properties.contains(new GeneratedPropertyBuilderImpl("myProperty3").toInstance(instance)));
162 @Test(expected = IllegalArgumentException.class)
163 public void addMethodIllegalArgumentTest() {
164 GeneratedTypeBuilderImpl generatedTypeBuilder = new GeneratedTypeBuilderImpl("my.package", "MyName");
165 generatedTypeBuilder.addMethod(null);
169 public void addMethodTest() {
170 GeneratedTypeBuilderImpl generatedTypeBuilder = new GeneratedTypeBuilderImpl("my.package", "MyName");
172 MethodSignatureBuilder methodBuilder = generatedTypeBuilder.addMethod("myMethodName");
173 MethodSignatureBuilder methodBuilder2 = generatedTypeBuilder.addMethod("myMethodName2");
175 assertNotNull(methodBuilder);
176 assertNotNull(methodBuilder2);
178 assertTrue(generatedTypeBuilder.containsMethod("myMethodName"));
179 assertTrue(generatedTypeBuilder.containsMethod("myMethodName2"));
180 assertFalse(generatedTypeBuilder.containsMethod("myMethodName3"));
182 GeneratedType instance = generatedTypeBuilder.toInstance();
183 List<MethodSignature> methodDefinitions = instance.getMethodDefinitions();
185 assertEquals(2, methodDefinitions.size());
187 assertTrue(methodDefinitions.contains(methodBuilder.toInstance(instance)));
188 assertTrue(methodDefinitions.contains(methodBuilder2.toInstance(instance)));
189 assertFalse(methodDefinitions.contains(new MethodSignatureBuilderImpl("myMethodName3").toInstance(instance)));
193 @Test(expected = IllegalArgumentException.class)
194 public void addEnumerationIllegalArgumentTest() {
195 GeneratedTypeBuilderImpl generatedTypeBuilder = new GeneratedTypeBuilderImpl("my.package", "MyName");
197 generatedTypeBuilder.addEnumeration(null);
201 public void addEnumerationTest() {
202 GeneratedTypeBuilderImpl generatedTypeBuilder = new GeneratedTypeBuilderImpl("my.package", "MyName");
204 EnumBuilder enumBuilder = generatedTypeBuilder.addEnumeration("myEnumName");
205 EnumBuilder enumBuilder2 = generatedTypeBuilder.addEnumeration("myEnumName2");
207 assertNotNull(enumBuilder);
208 assertNotNull(enumBuilder2);
210 GeneratedType instance = generatedTypeBuilder.toInstance();
211 List<Enumeration> enumerations = instance.getEnumerations();
213 assertEquals(2, enumerations.size());
215 assertTrue(enumerations.contains(enumBuilder.toInstance(instance)));
216 assertTrue(enumerations.contains(enumBuilder2.toInstance(instance)));
217 assertFalse(enumerations.contains(new EnumerationBuilderImpl("my.package", "myEnumName3").toInstance(instance)));
221 @Test(expected = IllegalArgumentException.class)
222 public void addImplementsTypeIllegalArgumentTest() {
223 GeneratedTypeBuilderImpl generatedTypeBuilder = new GeneratedTypeBuilderImpl("my.package", "MyName");
225 generatedTypeBuilder.addImplementsType(null);
229 public void addImplementsTypeTest() {
230 GeneratedTypeBuilderImpl generatedTypeBuilder = new GeneratedTypeBuilderImpl("my.package", "MyName");
232 assertEquals(generatedTypeBuilder,
233 generatedTypeBuilder.addImplementsType(Types.typeForClass(Serializable.class)));
234 assertEquals(generatedTypeBuilder, generatedTypeBuilder.addImplementsType(Types.typeForClass(Runnable.class)));
236 GeneratedType instance = generatedTypeBuilder.toInstance();
237 List<Type> implementTypes = instance.getImplements();
239 assertEquals(2, implementTypes.size());
241 assertTrue(implementTypes.contains(Types.typeForClass(Serializable.class)));
242 assertTrue(implementTypes.contains(Types.typeForClass(Runnable.class)));
243 assertFalse(implementTypes.contains(Types.typeForClass(Throwable.class)));
247 @Test(expected = IllegalArgumentException.class)
248 public void addEnclosingTransferObjectIllegalArgumentTest() {
249 GeneratedTypeBuilderImpl generatedTypeBuilder = new GeneratedTypeBuilderImpl("my.package", "MyName");
251 generatedTypeBuilder.addEnclosingTransferObject((String) null);
254 @Test(expected = IllegalArgumentException.class)
255 public void addEnclosingTransferObjectIllegalArgumentTest2() {
256 GeneratedTypeBuilderImpl generatedTypeBuilder = new GeneratedTypeBuilderImpl("my.package", "MyName");
258 generatedTypeBuilder.addEnclosingTransferObject((GeneratedTOBuilder) null);
262 public void addEnclosingTransferObjectTest() {
263 GeneratedTypeBuilderImpl generatedTypeBuilder = new GeneratedTypeBuilderImpl("my.package", "MyName");
265 GeneratedTOBuilder enclosingTransferObject = generatedTypeBuilder.addEnclosingTransferObject("myTOName");
266 GeneratedTOBuilder enclosingTransferObject2 = generatedTypeBuilder.addEnclosingTransferObject("myTOName2");
267 assertEquals(generatedTypeBuilder, generatedTypeBuilder.addEnclosingTransferObject(new CodegenGeneratedTOBuilder(
268 generatedTypeBuilder.getFullyQualifiedName(), "myTOName3")));
270 assertNotNull(enclosingTransferObject);
271 assertNotNull(enclosingTransferObject2);
273 GeneratedType instance = generatedTypeBuilder.toInstance();
274 List<GeneratedType> enclosedTypes = instance.getEnclosedTypes();
276 assertEquals(3, enclosedTypes.size());
278 assertTrue(enclosedTypes.contains(enclosingTransferObject.toInstance()));
279 assertTrue(enclosedTypes.contains(enclosingTransferObject2.toInstance()));
280 assertTrue(enclosedTypes.contains(new CodegenGeneratedTOBuilder(generatedTypeBuilder.getFullyQualifiedName(),
281 "myTOName3").toInstance()));
282 assertFalse(enclosedTypes.contains(new CodegenGeneratedTOBuilder(generatedTypeBuilder.getFullyQualifiedName(),
283 "myTOName4").toInstance()));
288 public void generatedTypeTest() {
289 GeneratedTypeBuilderImpl generatedTypeBuilder = new GeneratedTypeBuilderImpl("my.package", "MyName");
291 generatedTypeBuilder.setDescription("My description ...");
292 generatedTypeBuilder.setModuleName("myModuleName");
293 generatedTypeBuilder.setReference("myReference");
294 generatedTypeBuilder.setSchemaPath(SchemaPath.create(true, QName.create("test", "/path")).getPathFromRoot());
295 assertNotNull(generatedTypeBuilder.addComment(TypeComments.javadoc("My comment..").get()));
298 "GeneratedTransferObject [packageName=my.package, name=MyName, comment=My comment.., annotations=[], implements=[], enclosedTypes=[], constants=[], enumerations=[], properties=, methods=[]]",
299 generatedTypeBuilder.toString());
301 GeneratedType instance = generatedTypeBuilder.toInstance();
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(), instance.getSchemaPath());
307 assertEquals("My comment..", instance.getComment().getJavadoc());