fa217f39c744eb2a8c900d2f2d000f4c541095e5
[mdsal.git] / binding / mdsal-binding-generator-util / src / test / java / org / opendaylight / mdsal / binding / model / util / generated / type / builder / GeneratedTOBuilderImplTest.java
1 /*
2  * Copyright (c) 2014 Cisco Systems, Inc. and others.  All rights reserved.
3  *
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
7  */
8 package org.opendaylight.mdsal.binding.model.util.generated.type.builder;
9
10 import static org.junit.Assert.assertEquals;
11 import static org.junit.Assert.assertNotNull;
12 import static org.junit.Assert.assertTrue;
13
14 import java.util.List;
15 import java.util.Optional;
16 import org.junit.Test;
17 import org.opendaylight.mdsal.binding.model.api.GeneratedTransferObject;
18 import org.opendaylight.mdsal.binding.model.api.Restrictions;
19 import org.opendaylight.mdsal.binding.model.api.type.builder.MethodSignatureBuilder;
20 import org.opendaylight.yangtools.yang.model.api.SchemaPath;
21 import org.opendaylight.yangtools.yang.model.api.type.LengthConstraint;
22 import org.opendaylight.yangtools.yang.model.api.type.PatternConstraint;
23 import org.opendaylight.yangtools.yang.model.api.type.RangeConstraint;
24
25 public class GeneratedTOBuilderImplTest {
26
27     @Test
28     public void testCreateNewInstance() {
29         final CodegenGeneratedTOBuilder genTOBuilder = new CodegenGeneratedTOBuilder("org.opendaylight.yangtools.test", "Test");
30         assertNotNull(genTOBuilder);
31     }
32
33     @Test
34     public void testSetExtendsType() {
35         final CodegenGeneratedTOBuilder genTOBuilder = new CodegenGeneratedTOBuilder("org.opendaylight.yangtools.test", "Test");
36         final CodegenGeneratedTOBuilder extendedTypeBuilder = new CodegenGeneratedTOBuilder("org.opendaylight.yangtools.test", "ExtendedType");
37         final GeneratedTransferObject extendedType = extendedTypeBuilder.build();
38         genTOBuilder.setExtendsType(extendedType);
39         final GeneratedTransferObject genTO = genTOBuilder.build();
40
41         assertEquals("ExtendedType", genTO.getSuperType().getName());
42     }
43
44     @Test
45     public void testAddMethod() {
46         final CodegenGeneratedTOBuilder genTOBuilder = new CodegenGeneratedTOBuilder("org.opendaylight.yangtools.test", "Test");
47         final MethodSignatureBuilder methodSignatureBuilder = genTOBuilder.addMethod("testMethod");
48         assertEquals(methodSignatureBuilder, genTOBuilder.getMethodDefinitions().get(0));
49         assertEquals("testMethod", genTOBuilder.getMethodDefinitions().get(0).getName());
50     }
51
52     @Test
53     public void testAddEqualsIdentity() {
54         final CodegenGeneratedTOBuilder genTOBuilder = new CodegenGeneratedTOBuilder("org.opendaylight.yangtools.test", "Test");
55         final GeneratedPropertyBuilderImpl propertyBuilder = new GeneratedPropertyBuilderImpl("testProperty");
56         genTOBuilder.addEqualsIdentity(propertyBuilder);
57
58         final GeneratedTransferObject genTO = genTOBuilder.build();
59         assertEquals(1, genTO.getEqualsIdentifiers().size());
60         assertEquals("testProperty", genTO.getEqualsIdentifiers().get(0).getName());
61     }
62
63     @Test
64     public void testAddHashIdentity() {
65         final CodegenGeneratedTOBuilder genTOBuilder = new CodegenGeneratedTOBuilder("org.opendaylight.yangtools.test", "Test");
66         final GeneratedPropertyBuilderImpl propertyBuilder = new GeneratedPropertyBuilderImpl("testProperty");
67         genTOBuilder.addHashIdentity(propertyBuilder);
68
69         final GeneratedTransferObject genTO = genTOBuilder.build();
70         assertEquals(1, genTO.getHashCodeIdentifiers().size());
71         assertEquals("testProperty", genTO.getHashCodeIdentifiers().get(0).getName());
72     }
73
74     @Test
75     public void testAddToStringProperty() {
76         final CodegenGeneratedTOBuilder genTOBuilder = new CodegenGeneratedTOBuilder("org.opendaylight.yangtools.test", "Test");
77         final GeneratedPropertyBuilderImpl propertyBuilder = new GeneratedPropertyBuilderImpl("testProperty");
78         genTOBuilder.addToStringProperty(propertyBuilder);
79
80         final GeneratedTransferObject genTO = genTOBuilder.build();
81         assertEquals(1, genTO.getToStringIdentifiers().size());
82         assertEquals("testProperty", genTO.getToStringIdentifiers().get(0).getName());
83     }
84
85     @Test
86     public void testSetRestrictions() {
87         final CodegenGeneratedTOBuilder genTOBuilder = new CodegenGeneratedTOBuilder("org.opendaylight.yangtools.test", "Test");
88         final Restrictions restrictions = new Restrictions() {
89
90             @Override
91             public boolean isEmpty() {
92                 return false;
93             }
94
95             @Override
96             public Optional<? extends RangeConstraint<?>> getRangeConstraint() {
97                 return Optional.empty();
98             }
99
100             @Override
101             public List<PatternConstraint> getPatternConstraints() {
102                 return null;
103             }
104
105             @Override
106             public Optional<LengthConstraint> getLengthConstraint() {
107                 return Optional.empty();
108             }
109         };
110         genTOBuilder.setRestrictions(restrictions);
111         final GeneratedTransferObject genTO = genTOBuilder.build();
112
113         assertNotNull(genTO.getRestrictions());
114     }
115
116     @Test
117     public void testSetSUID() {
118         final CodegenGeneratedTOBuilder genTOBuilder = new CodegenGeneratedTOBuilder("org.opendaylight.yangtools.test", "Test");
119         final GeneratedPropertyBuilderImpl propertyBuilder = new GeneratedPropertyBuilderImpl("testProperty");
120         genTOBuilder.setSUID(propertyBuilder);
121
122         final GeneratedTransferObject genTO = genTOBuilder.build();
123         assertEquals("testProperty", genTO.getSUID().getName());
124     }
125
126     @Test
127     public void testToStringMethod() {
128         final CodegenGeneratedTOBuilder genTOBuilder = new CodegenGeneratedTOBuilder("org.opendaylight.yangtools.test", "Test");
129         assertNotNull(genTOBuilder.toString());
130     }
131
132     @Test
133     public void testSetterMethods() {
134         final CodegenGeneratedTOBuilder genTOBuilder = new CodegenGeneratedTOBuilder("org.opendaylight.yangtools.test", "Test");
135         genTOBuilder.setTypedef(true);
136         genTOBuilder.setIsUnion(true);
137         genTOBuilder.setIsUnionBuilder(true);
138         genTOBuilder.setDescription("test description");
139         genTOBuilder.setModuleName("test-module");
140         genTOBuilder.setReference("http://tools.ietf.org/html/rfc6020");
141         genTOBuilder.setSchemaPath(SchemaPath.ROOT);
142
143         final GeneratedTransferObject genTO = genTOBuilder.build();
144
145         assertTrue(genTO.isTypedef());
146         assertTrue(genTO.isUnionType());
147         assertTrue(genTO.isUnionTypeBuilder());
148         assertEquals("test description", genTO.getDescription());
149         assertEquals("test-module", genTO.getModuleName());
150         assertEquals("http://tools.ietf.org/html/rfc6020", genTO.getReference());
151         assertEquals(SchemaPath.ROOT.getPathFromRoot(), genTO.getSchemaPath());
152     }
153
154     @Test
155     public void testMethodsOfGeneratedTransferObjectImpl() {
156         final CodegenGeneratedTOBuilder genTOBuilder = new CodegenGeneratedTOBuilder("org.opendaylight.yangtools.test", "Test");
157         final GeneratedTransferObject genTO = genTOBuilder.build();
158
159         assertNotNull(genTO.toString());
160     }
161 }