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.generator.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.generator.util.BindingGeneratorUtil;
19 import org.opendaylight.mdsal.binding.generator.util.Types;
20 import org.opendaylight.mdsal.binding.model.api.Constant;
21 import org.opendaylight.mdsal.binding.model.api.Enumeration;
22 import org.opendaylight.mdsal.binding.model.api.GeneratedProperty;
23 import org.opendaylight.mdsal.binding.model.api.GeneratedType;
24 import org.opendaylight.mdsal.binding.model.api.MethodSignature;
25 import org.opendaylight.mdsal.binding.model.api.Type;
26 import org.opendaylight.mdsal.binding.model.api.type.builder.EnumBuilder;
27 import org.opendaylight.mdsal.binding.model.api.type.builder.GeneratedPropertyBuilder;
28 import org.opendaylight.mdsal.binding.model.api.type.builder.GeneratedTOBuilder;
29 import org.opendaylight.mdsal.binding.model.api.type.builder.GeneratedTypeBuilder;
30 import org.opendaylight.mdsal.binding.model.api.type.builder.MethodSignatureBuilder;
31 import org.opendaylight.yangtools.yang.common.QName;
32 import org.opendaylight.yangtools.yang.model.api.SchemaPath;
34 public class GeneratedTypeBuilderTest {
37 public void addConstantTest() {
38 GeneratedTypeBuilder generatedTypeBuilder = new GeneratedTypeBuilderImpl("my.package", "MyName");
40 // assertNotNull(generatedTypeBuilder.addComment("My comment ..."));
42 Constant constant = generatedTypeBuilder.addConstant(Types.typeForClass(String.class), "myConstant",
44 // Constant constantx =
45 // generatedTypeBuilder.addConstant(Types.typeForClass(String.class),
46 // "myConstant", "myConstantValue");
47 Constant constant2 = generatedTypeBuilder.addConstant(
48 Types.primitiveType("int", BindingGeneratorUtil.getRestrictions(null)), "myIntConstant", 1);
50 Constant constant3 = new ConstantImpl(generatedTypeBuilder, Types.typeForClass(String.class), "myConstant",
52 Constant constant4 = new ConstantImpl(generatedTypeBuilder, Types.typeForClass(String.class), "myConstant2",
54 Constant constant5 = new ConstantImpl(generatedTypeBuilder, Types.typeForClass(String.class), "myConstant",
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());
80 "Constant [type=Type (java.lang.String), name=myConstant, value=myConstantValue, definingType=my.package.MyName]",
83 assertEquals("Type (java.lang.String) myConstant myConstantValue", constant.toFormattedString());
85 GeneratedType instance = generatedTypeBuilder.toInstance();
86 List<Constant> constantDefinitions = instance.getConstantDefinitions();
87 assertNotNull(constantDefinitions);
88 assertEquals(2, constantDefinitions.size());
89 assertTrue(constantDefinitions.contains(constant));
90 assertTrue(constantDefinitions.contains(constant2));
91 assertTrue(constantDefinitions.contains(constant3));
92 assertFalse(constantDefinitions.contains(constant4));
93 assertFalse(constantDefinitions.contains(constant5));
95 assertEquals("myConstant", constant.getName());
96 assertEquals("myConstantValue", constant.getValue());
97 assertEquals(Types.typeForClass(String.class), constant.getType());
98 assertEquals(generatedTypeBuilder, constant.getDefiningType());
101 @Test(expected = IllegalArgumentException.class)
102 public void addConstantIllegalArgumentTest() {
103 GeneratedTypeBuilder generatedTypeBuilder = new GeneratedTypeBuilderImpl("my.package", "MyName");
104 generatedTypeBuilder.addConstant(Types.typeForClass(String.class), null, "myConstantValue");
107 @Test(expected = IllegalArgumentException.class)
108 public void addConstantIllegalArgumentTest2() {
109 GeneratedTypeBuilder generatedTypeBuilder = new GeneratedTypeBuilderImpl("my.package", "MyName");
110 generatedTypeBuilder.addConstant(null, "myConstantName", "myConstantValue");
114 public void generatedTypeBuilderEqualsAndHashCodeTest() {
115 GeneratedTypeBuilderImpl generatedTypeBuilder = new GeneratedTypeBuilderImpl("my.package", "MyName");
116 GeneratedTypeBuilderImpl generatedTypeBuilder2 = new GeneratedTypeBuilderImpl("my.package", "MyName");
117 GeneratedTypeBuilderImpl generatedTypeBuilder3 = new GeneratedTypeBuilderImpl("my.package", "MyName2");
118 GeneratedTypeBuilderImpl generatedTypeBuilder4 = new GeneratedTypeBuilderImpl("my.package2", "MyName");
120 assertFalse(generatedTypeBuilder.equals(null));
121 assertFalse(generatedTypeBuilder.equals(new Object()));
122 assertTrue(generatedTypeBuilder.equals(generatedTypeBuilder));
123 assertTrue(generatedTypeBuilder.equals(generatedTypeBuilder2));
125 assertTrue(generatedTypeBuilder.hashCode() == generatedTypeBuilder.hashCode());
126 assertTrue(generatedTypeBuilder.hashCode() == generatedTypeBuilder2.hashCode());
127 assertFalse(generatedTypeBuilder.hashCode() == generatedTypeBuilder3.hashCode());
128 assertFalse(generatedTypeBuilder.hashCode() == generatedTypeBuilder4.hashCode());
133 public void addPropertyTest() {
134 GeneratedTypeBuilderImpl generatedTypeBuilder = new GeneratedTypeBuilderImpl("my.package", "MyName");
136 GeneratedPropertyBuilder propertyBuilder = generatedTypeBuilder.addProperty("myProperty");
137 GeneratedPropertyBuilder propertyBuilder2 = generatedTypeBuilder.addProperty("myProperty2");
138 // GeneratedPropertyBuilder propertyBuilderNull =
139 // generatedTypeBuilder.addProperty(null);
141 assertNotNull(propertyBuilder);
142 assertNotNull(propertyBuilder2);
143 // assertNotNull(propertyBuilderNull);
145 assertTrue(generatedTypeBuilder.containsProperty("myProperty"));
146 assertTrue(generatedTypeBuilder.containsProperty("myProperty2"));
147 assertFalse(generatedTypeBuilder.containsProperty("myProperty3"));
149 GeneratedType instance = generatedTypeBuilder.toInstance();
150 List<GeneratedProperty> properties = instance.getProperties();
152 assertEquals(2, properties.size());
154 assertTrue(properties.contains(propertyBuilder.toInstance(instance)));
155 assertTrue(properties.contains(propertyBuilder2.toInstance(instance)));
156 // assertTrue(properties.contains(propertyBuilderNull.toInstance(instance)));
157 assertFalse(properties.contains(new GeneratedPropertyBuilderImpl("myProperty3").toInstance(instance)));
161 @Test(expected = IllegalArgumentException.class)
162 public void addMethodIllegalArgumentTest() {
163 GeneratedTypeBuilderImpl generatedTypeBuilder = new GeneratedTypeBuilderImpl("my.package", "MyName");
164 generatedTypeBuilder.addMethod(null);
168 public void addMethodTest() {
169 GeneratedTypeBuilderImpl generatedTypeBuilder = new GeneratedTypeBuilderImpl("my.package", "MyName");
171 MethodSignatureBuilder methodBuilder = generatedTypeBuilder.addMethod("myMethodName");
172 MethodSignatureBuilder methodBuilder2 = generatedTypeBuilder.addMethod("myMethodName2");
174 assertNotNull(methodBuilder);
175 assertNotNull(methodBuilder2);
177 assertTrue(generatedTypeBuilder.containsMethod("myMethodName"));
178 assertTrue(generatedTypeBuilder.containsMethod("myMethodName2"));
179 assertFalse(generatedTypeBuilder.containsMethod("myMethodName3"));
181 GeneratedType instance = generatedTypeBuilder.toInstance();
182 List<MethodSignature> methodDefinitions = instance.getMethodDefinitions();
184 assertEquals(2, methodDefinitions.size());
186 assertTrue(methodDefinitions.contains(methodBuilder.toInstance(instance)));
187 assertTrue(methodDefinitions.contains(methodBuilder2.toInstance(instance)));
188 assertFalse(methodDefinitions.contains(new MethodSignatureBuilderImpl("myMethodName3").toInstance(instance)));
192 @Test(expected = IllegalArgumentException.class)
193 public void addEnumerationIllegalArgumentTest() {
194 GeneratedTypeBuilderImpl generatedTypeBuilder = new GeneratedTypeBuilderImpl("my.package", "MyName");
196 generatedTypeBuilder.addEnumeration(null);
200 public void addEnumerationTest() {
201 GeneratedTypeBuilderImpl generatedTypeBuilder = new GeneratedTypeBuilderImpl("my.package", "MyName");
203 EnumBuilder enumBuilder = generatedTypeBuilder.addEnumeration("myEnumName");
204 EnumBuilder enumBuilder2 = generatedTypeBuilder.addEnumeration("myEnumName2");
206 assertNotNull(enumBuilder);
207 assertNotNull(enumBuilder2);
209 GeneratedType instance = generatedTypeBuilder.toInstance();
210 List<Enumeration> enumerations = instance.getEnumerations();
212 assertEquals(2, enumerations.size());
214 assertTrue(enumerations.contains(enumBuilder.toInstance(instance)));
215 assertTrue(enumerations.contains(enumBuilder2.toInstance(instance)));
216 assertFalse(enumerations.contains(new EnumerationBuilderImpl("my.package", "myEnumName3").toInstance(instance)));
220 @Test(expected = IllegalArgumentException.class)
221 public void addImplementsTypeIllegalArgumentTest() {
222 GeneratedTypeBuilderImpl generatedTypeBuilder = new GeneratedTypeBuilderImpl("my.package", "MyName");
224 generatedTypeBuilder.addImplementsType(null);
228 public void addImplementsTypeTest() {
229 GeneratedTypeBuilderImpl generatedTypeBuilder = new GeneratedTypeBuilderImpl("my.package", "MyName");
231 assertEquals(generatedTypeBuilder,
232 generatedTypeBuilder.addImplementsType(Types.typeForClass(Serializable.class)));
233 assertEquals(generatedTypeBuilder, generatedTypeBuilder.addImplementsType(Types.typeForClass(Runnable.class)));
235 GeneratedType instance = generatedTypeBuilder.toInstance();
236 List<Type> implementTypes = instance.getImplements();
238 assertEquals(2, implementTypes.size());
240 assertTrue(implementTypes.contains(Types.typeForClass(Serializable.class)));
241 assertTrue(implementTypes.contains(Types.typeForClass(Runnable.class)));
242 assertFalse(implementTypes.contains(Types.typeForClass(Throwable.class)));
246 @Test(expected = IllegalArgumentException.class)
247 public void addEnclosingTransferObjectIllegalArgumentTest() {
248 GeneratedTypeBuilderImpl generatedTypeBuilder = new GeneratedTypeBuilderImpl("my.package", "MyName");
250 generatedTypeBuilder.addEnclosingTransferObject((String) null);
253 @Test(expected = IllegalArgumentException.class)
254 public void addEnclosingTransferObjectIllegalArgumentTest2() {
255 GeneratedTypeBuilderImpl generatedTypeBuilder = new GeneratedTypeBuilderImpl("my.package", "MyName");
257 generatedTypeBuilder.addEnclosingTransferObject((GeneratedTOBuilder) null);
261 public void addEnclosingTransferObjectTest() {
262 GeneratedTypeBuilderImpl generatedTypeBuilder = new GeneratedTypeBuilderImpl("my.package", "MyName");
264 GeneratedTOBuilder enclosingTransferObject = generatedTypeBuilder.addEnclosingTransferObject("myTOName");
265 GeneratedTOBuilder enclosingTransferObject2 = generatedTypeBuilder.addEnclosingTransferObject("myTOName2");
266 assertEquals(generatedTypeBuilder, generatedTypeBuilder.addEnclosingTransferObject(new GeneratedTOBuilderImpl(
267 generatedTypeBuilder.getFullyQualifiedName(), "myTOName3")));
269 assertNotNull(enclosingTransferObject);
270 assertNotNull(enclosingTransferObject2);
272 GeneratedType instance = generatedTypeBuilder.toInstance();
273 List<GeneratedType> enclosedTypes = instance.getEnclosedTypes();
275 assertEquals(3, enclosedTypes.size());
277 assertTrue(enclosedTypes.contains(enclosingTransferObject.toInstance()));
278 assertTrue(enclosedTypes.contains(enclosingTransferObject2.toInstance()));
279 assertTrue(enclosedTypes.contains(new GeneratedTOBuilderImpl(generatedTypeBuilder.getFullyQualifiedName(),
280 "myTOName3").toInstance()));
281 assertFalse(enclosedTypes.contains(new GeneratedTOBuilderImpl(generatedTypeBuilder.getFullyQualifiedName(),
282 "myTOName4").toInstance()));
287 public void generatedTypeTest() {
288 GeneratedTypeBuilderImpl generatedTypeBuilder = new GeneratedTypeBuilderImpl("my.package", "MyName");
290 generatedTypeBuilder.setDescription("My description ...");
291 generatedTypeBuilder.setModuleName("myModuleName");
292 generatedTypeBuilder.setReference("myReference");
293 generatedTypeBuilder.setSchemaPath(SchemaPath.create(true, QName.create("/path")).getPathFromRoot());
294 assertNotNull(generatedTypeBuilder.addComment("My comment.."));
297 "GeneratedTransferObject [packageName=my.package, name=MyName, comment=My comment.., annotations=[], implements=[], enclosedTypes=[], constants=[], enumerations=[], properties=, methods=[]]",
298 generatedTypeBuilder.toString());
300 GeneratedType instance = generatedTypeBuilder.toInstance();
302 assertEquals("My description ...", instance.getDescription());
303 assertEquals("myModuleName", instance.getModuleName());
304 assertEquals("myReference", instance.getReference());
305 assertEquals(SchemaPath.create(true, QName.create("/path")).getPathFromRoot(), instance.getSchemaPath());
306 assertEquals("My comment..", instance.getComment());