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.yangtools.binding.model.ri.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.yangtools.binding.model.api.Constant;
19 import org.opendaylight.yangtools.binding.model.api.Enumeration;
20 import org.opendaylight.yangtools.binding.model.api.GeneratedProperty;
21 import org.opendaylight.yangtools.binding.model.api.GeneratedTransferObject;
22 import org.opendaylight.yangtools.binding.model.api.GeneratedType;
23 import org.opendaylight.yangtools.binding.model.api.JavaTypeName;
24 import org.opendaylight.yangtools.binding.model.api.MethodSignature;
25 import org.opendaylight.yangtools.binding.model.api.Restrictions;
26 import org.opendaylight.yangtools.binding.model.api.Type;
27 import org.opendaylight.yangtools.binding.model.api.type.builder.EnumBuilder;
28 import org.opendaylight.yangtools.binding.model.api.type.builder.GeneratedPropertyBuilder;
29 import org.opendaylight.yangtools.binding.model.api.type.builder.GeneratedTOBuilder;
30 import org.opendaylight.yangtools.binding.model.api.type.builder.GeneratedTypeBuilder;
31 import org.opendaylight.yangtools.binding.model.api.type.builder.MethodSignatureBuilder;
32 import org.opendaylight.yangtools.binding.model.ri.Types;
34 public class GeneratedTypeBuilderTest {
37 public void addConstantTest() {
38 GeneratedTypeBuilder generatedTypeBuilder = new CodegenGeneratedTypeBuilder(
39 JavaTypeName.create("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.typeForClass(int.class, Restrictions.empty()), "myIntConstant", 1);
51 Constant constant3 = new ConstantImpl(Types.typeForClass(String.class), "myConstant", "myConstantValue");
52 final Constant constant4 = new ConstantImpl(Types.typeForClass(String.class), "myConstant2", "myConstantValue");
53 final Constant constant5 = new ConstantImpl(Types.typeForClass(String.class), "myConstant", "myConstantValue2");
55 assertNotNull(constant);
56 assertNotNull(constant2);
57 assertNotNull(constant3);
58 assertNotNull(constant4);
59 assertNotNull(constant5);
60 // assertNotNull(constantx);
61 // assertTrue(constant!=constantx);
63 assertFalse(constant.equals(null));
64 assertFalse(constant.equals(new Object()));
65 assertTrue(constant.equals(constant));
66 assertTrue(constant.equals(constant3));
67 assertFalse(constant.equals(constant2));
68 assertFalse(constant.equals(constant4));
69 assertFalse(constant.equals(constant5));
71 assertTrue(constant.hashCode() == constant.hashCode());
72 assertTrue(constant.hashCode() == constant3.hashCode());
73 assertFalse(constant.hashCode() == constant2.hashCode());
74 assertFalse(constant.hashCode() == constant4.hashCode());
75 assertTrue(constant.hashCode() == constant5.hashCode());
78 "Constant [type=ConcreteTypeImpl{identifier=java.lang.String}, name=myConstant, value=myConstantValue]",
81 GeneratedType instance = generatedTypeBuilder.build();
82 List<Constant> constantDefinitions = instance.getConstantDefinitions();
83 assertNotNull(constantDefinitions);
84 assertEquals(2, constantDefinitions.size());
85 assertTrue(constantDefinitions.contains(constant));
86 assertTrue(constantDefinitions.contains(constant2));
87 assertTrue(constantDefinitions.contains(constant3));
88 assertFalse(constantDefinitions.contains(constant4));
89 assertFalse(constantDefinitions.contains(constant5));
91 assertEquals("myConstant", constant.getName());
92 assertEquals("myConstantValue", constant.getValue());
93 assertEquals(Types.typeForClass(String.class), constant.getType());
96 @Test(expected = IllegalArgumentException.class)
97 public void addConstantIllegalArgumentTest() {
98 new CodegenGeneratedTypeBuilder(JavaTypeName.create("my.package", "MyName")).addConstant(
99 Types.typeForClass(String.class), null, "myConstantValue");
102 @Test(expected = IllegalArgumentException.class)
103 public void addConstantIllegalArgumentTest2() {
104 new CodegenGeneratedTypeBuilder(JavaTypeName.create("my.package", "MyName")).addConstant(null, "myConstantName",
109 public void generatedTypeBuilderEqualsAndHashCodeTest() {
110 final CodegenGeneratedTypeBuilder generatedTypeBuilder = new CodegenGeneratedTypeBuilder(
111 JavaTypeName.create("my.package", "MyName"));
112 final CodegenGeneratedTypeBuilder generatedTypeBuilder2 = new CodegenGeneratedTypeBuilder(
113 JavaTypeName.create("my.package", "MyName"));
114 final CodegenGeneratedTypeBuilder generatedTypeBuilder3 = new CodegenGeneratedTypeBuilder(
115 JavaTypeName.create("my.package", "MyName2"));
116 final CodegenGeneratedTypeBuilder generatedTypeBuilder4 = new CodegenGeneratedTypeBuilder(
117 JavaTypeName.create("my.package2", "MyName"));
119 assertFalse(generatedTypeBuilder.equals(null));
120 assertFalse(generatedTypeBuilder.equals(new Object()));
121 assertTrue(generatedTypeBuilder.equals(generatedTypeBuilder));
122 assertTrue(generatedTypeBuilder.equals(generatedTypeBuilder2));
124 assertTrue(generatedTypeBuilder.hashCode() == generatedTypeBuilder.hashCode());
125 assertTrue(generatedTypeBuilder.hashCode() == generatedTypeBuilder2.hashCode());
126 assertFalse(generatedTypeBuilder.hashCode() == generatedTypeBuilder3.hashCode());
127 assertFalse(generatedTypeBuilder.hashCode() == generatedTypeBuilder4.hashCode());
132 public void addPropertyTest() {
133 CodegenGeneratedTypeBuilder generatedTypeBuilder = new CodegenGeneratedTypeBuilder(
134 JavaTypeName.create("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.build();
150 List<GeneratedProperty> properties = instance.getProperties();
152 assertEquals(2, properties.size());
154 assertTrue(properties.contains(propertyBuilder.toInstance()));
155 assertTrue(properties.contains(propertyBuilder2.toInstance()));
156 // assertTrue(properties.contains(propertyBuilderNull.toInstance(instance)));
157 assertFalse(properties.contains(new GeneratedPropertyBuilderImpl("myProperty3").toInstance()));
161 @Test(expected = IllegalArgumentException.class)
162 public void addMethodIllegalArgumentTest() {
163 new CodegenGeneratedTypeBuilder(JavaTypeName.create("my.package", "MyName")).addMethod(null);
167 public void addMethodTest() {
168 GeneratedTypeBuilder generatedTypeBuilder = new CodegenGeneratedTypeBuilder(
169 JavaTypeName.create("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.build();
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 new CodegenGeneratedTypeBuilder(JavaTypeName.create("my.package", "MyName")).addEnumeration(null);
198 public void addEnumerationTest() {
199 GeneratedTypeBuilder generatedTypeBuilder = new CodegenGeneratedTypeBuilder(
200 JavaTypeName.create("my.package", "MyName"));
202 EnumBuilder enumBuilder = new CodegenEnumerationBuilder(generatedTypeBuilder.getIdentifier()
203 .createEnclosed("myEnumName"));
204 EnumBuilder enumBuilder2 = new CodegenEnumerationBuilder(generatedTypeBuilder.getIdentifier()
205 .createEnclosed("myEnumName2"));
207 generatedTypeBuilder.addEnumeration(enumBuilder.toInstance());
208 generatedTypeBuilder.addEnumeration(enumBuilder2.toInstance());
210 GeneratedType instance = generatedTypeBuilder.build();
211 List<Enumeration> enumerations = instance.getEnumerations();
213 assertEquals(2, enumerations.size());
215 assertTrue(enumerations.contains(enumBuilder.toInstance()));
216 assertTrue(enumerations.contains(enumBuilder2.toInstance()));
217 assertFalse(enumerations.contains(new CodegenEnumerationBuilder(JavaTypeName.create("my.package",
218 "myEnumName3")).toInstance()));
222 @Test(expected = IllegalArgumentException.class)
223 public void addImplementsTypeIllegalArgumentTest() {
224 new CodegenGeneratedTypeBuilder(JavaTypeName.create("my.package", "MyName")).addImplementsType(null);
228 public void addImplementsTypeTest() {
229 CodegenGeneratedTypeBuilder generatedTypeBuilder = new CodegenGeneratedTypeBuilder(
230 JavaTypeName.create("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.build();
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)));
246 @Test(expected = IllegalArgumentException.class)
247 public void addEnclosingTransferObjectIllegalArgumentTest2() {
248 new CodegenGeneratedTypeBuilder(JavaTypeName.create("my.package", "MyName")).addEnclosingTransferObject(
249 (GeneratedTransferObject) null);
253 public void addEnclosingTransferObjectTest() {
254 GeneratedTypeBuilder generatedTypeBuilder = new CodegenGeneratedTypeBuilder(
255 JavaTypeName.create("my.package", "MyName"));
257 GeneratedTOBuilder enclosingTransferObject = new CodegenGeneratedTOBuilder(generatedTypeBuilder.getIdentifier()
258 .createEnclosed("myTOName"));
259 GeneratedTOBuilder enclosingTransferObject2 = new CodegenGeneratedTOBuilder(generatedTypeBuilder.getIdentifier()
260 .createEnclosed("myTOName2"));
261 GeneratedTOBuilder enclosingTransferObject3 = new CodegenGeneratedTOBuilder(generatedTypeBuilder.getIdentifier()
262 .createEnclosed("myTOName3"));
264 generatedTypeBuilder.addEnclosingTransferObject(enclosingTransferObject.build());
265 generatedTypeBuilder.addEnclosingTransferObject(enclosingTransferObject2.build());
266 generatedTypeBuilder.addEnclosingTransferObject(enclosingTransferObject3.build());
267 GeneratedType instance = generatedTypeBuilder.build();
268 List<GeneratedType> enclosedTypes = instance.getEnclosedTypes();
270 assertEquals(3, enclosedTypes.size());
272 assertTrue(enclosedTypes.contains(enclosingTransferObject.build()));
273 assertTrue(enclosedTypes.contains(enclosingTransferObject2.build()));
274 assertTrue(enclosedTypes.contains(enclosingTransferObject3.build()));
275 assertFalse(enclosedTypes.contains(new CodegenGeneratedTOBuilder(
276 generatedTypeBuilder.getIdentifier().createEnclosed("myTOName4")).build()));
280 public void generatedTypeTest() {
281 GeneratedTypeBuilder generatedTypeBuilder = new CodegenGeneratedTypeBuilder(
282 JavaTypeName.create("my.package", "MyName"));
284 generatedTypeBuilder.setDescription("My description ...");
285 generatedTypeBuilder.setModuleName("myModuleName");
286 generatedTypeBuilder.setReference("myReference");
287 assertNotNull(generatedTypeBuilder.addComment(() -> "My comment.."));
289 assertEquals("CodegenGeneratedTypeBuilder{identifier=my.package.MyName, comment=My comment.., constants=[], "
290 + "enumerations=[], methods=[], annotations=[], implements=[]}", generatedTypeBuilder.toString());
292 GeneratedType instance = generatedTypeBuilder.build();
294 assertEquals("My description ...", instance.getDescription());
295 assertEquals("myModuleName", instance.getModuleName());
296 assertEquals("myReference", instance.getReference());
297 assertEquals("My comment..", instance.getComment().getJavadoc());