2 * Copyright (c) 2017 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.javav2.java.api.generator.renderers;
10 import static org.junit.Assert.assertTrue;
11 import static org.mockito.Mockito.doReturn;
12 import static org.mockito.Mockito.mock;
13 import static org.mockito.Mockito.spy;
15 import java.util.ArrayList;
16 import java.util.List;
17 import org.junit.Test;
18 import org.opendaylight.mdsal.binding.javav2.generator.context.ModuleContext;
19 import org.opendaylight.mdsal.binding.javav2.generator.util.generated.type.builder.GeneratedTypeBuilderImpl;
20 import org.opendaylight.mdsal.binding.javav2.model.api.GeneratedType;
21 import org.opendaylight.mdsal.binding.javav2.model.api.MethodSignature;
22 import org.opendaylight.mdsal.binding.javav2.model.api.Type;
24 public class BuilderRendererTest {
25 private static final String TEST = "test";
28 public void builderTemplateGenerateToStringWithPropertyTest() throws Exception {
29 final GeneratedType genType = mockGenType("get" + TEST);
30 final String generateToString = genToString(genType);
31 assertTrue(generateToString.contains("java.lang.String toString() {"));
32 assertTrue(generateToString.contains("java.lang.String name = \"test [\";"));
33 assertTrue(generateToString.contains("java.lang.StringBuilder builder = new java.lang.StringBuilder(name);"));
34 assertTrue(generateToString.contains("if (_test != null) {"));
35 assertTrue(generateToString.contains("builder.append(\"_test=\");"));
36 assertTrue(generateToString.contains("builder.append(_test);"));
37 assertTrue(generateToString.contains("return builder.append(']').toString();"));
41 public void builderTemplateGenerateToStringWithoutAnyPropertyTest() throws Exception {
42 final GeneratedType genType = mockGenType(TEST);
43 final String generateToString = genToString(genType);
44 assertTrue(generateToString.contains("java.lang.String toString() {"));
45 assertTrue(generateToString.contains("java.lang.String name = \"test [\";"));
46 assertTrue(generateToString.contains("java.lang.StringBuilder builder = new java.lang.StringBuilder(name);"));
47 assertTrue(generateToString.contains("return builder.append(']').toString();"));
51 public void builderTemplateGenerateToStringWithMorePropertiesTest() throws Exception {
52 final GeneratedType genType = mockGenTypeMoreMeth("get" + TEST);
53 final String generateToString = genToString(genType);
54 assertTrue(generateToString.contains("java.lang.String toString() {"));
55 assertTrue(generateToString.contains("java.lang.String name = \"test [\";"));
56 assertTrue(generateToString.contains("java.lang.StringBuilder builder = new java.lang.StringBuilder(name);"));
57 assertTrue(generateToString.contains("if (_test1 != null) {"));
58 assertTrue(generateToString.contains("builder.append(\"_test1=\");"));
59 assertTrue(generateToString.contains("builder.append(_test1);"));
60 assertTrue(generateToString.contains("builder.append(\", \");"));
61 assertTrue(generateToString.contains("if (_test2 != null) {"));
62 assertTrue(generateToString.contains("builder.append(\"_test2=\");"));
63 assertTrue(generateToString.contains("builder.append(_test2);"));
64 assertTrue(generateToString.contains("return builder.append(']').toString();"));
68 public void builderTemplateGenerateToStringWithoutPropertyWithAugmentTest() throws Exception {
69 final GeneratedType genType = mockGenType(TEST);
71 final String generateToString = genToString(genType);
72 assertTrue(generateToString.contains("java.lang.String toString() {"));
73 assertTrue(generateToString.contains("java.lang.String name = \"test [\";"));
74 assertTrue(generateToString.contains("java.lang.StringBuilder builder = new java.lang.StringBuilder(name);"));
75 assertTrue(generateToString.contains("builder.append(\"augmentation=\");"));
76 assertTrue(generateToString.contains("builder.append(augmentation.values());"));
77 assertTrue(generateToString.contains("return builder.append(']').toString();"));
81 public void builderTemplateGenerateToStringWithPropertyWithAugmentTest() throws Exception {
82 final GeneratedType genType = mockGenType("get" + TEST);
84 final String generateToString = genToString(genType);
85 assertTrue(generateToString.contains("java.lang.String toString() {"));
86 assertTrue(generateToString.contains("java.lang.String name = \"test [\";"));
87 assertTrue(generateToString.contains("java.lang.StringBuilder builder = new java.lang.StringBuilder(name);"));
88 assertTrue(generateToString.contains("if (_test != null) {"));
89 assertTrue(generateToString.contains("builder.append(\"_test=\");"));
90 assertTrue(generateToString.contains("builder.append(_test);"));
91 assertTrue(generateToString.contains("builder.append(\", \");"));
92 assertTrue(generateToString.contains("builder.append(\"augmentation=\");"));
93 assertTrue(generateToString.contains("builder.append(augmentation.values());"));
94 assertTrue(generateToString.contains("return builder.append(']').toString();"));
98 public void builderTemplateGenerateToStringWithMorePropertiesWithAugmentTest() throws Exception {
99 final GeneratedType genType = mockGenTypeMoreMeth("get" + TEST);
100 mockAugment(genType);
101 final String generateToString = genToString(genType);
102 assertTrue(generateToString.contains("if (_test1 != null) {"));
103 assertTrue(generateToString.contains("builder.append(\"_test1=\");"));
104 assertTrue(generateToString.contains("builder.append(_test1);"));
105 assertTrue(generateToString.contains("builder.append(\", \");"));
106 assertTrue(generateToString.contains("if (_test2 != null) {"));
107 assertTrue(generateToString.contains("builder.append(\"_test2=\");"));
108 assertTrue(generateToString.contains("builder.append(_test2);"));
109 assertTrue(generateToString.contains("builder.append(\", \");"));
110 assertTrue(generateToString.contains("builder.append(\"augmentation=\");"));
111 assertTrue(generateToString.contains("builder.append(augmentation.values());"));
112 assertTrue(generateToString.contains("return builder.append(']').toString();"));
115 private void mockAugment(final GeneratedType genType) {
116 final List<Type> impls = new ArrayList<>();
117 final Type impl = mock(Type.class);
118 doReturn("org.opendaylight.mdsal.binding.javav2.spec.structural.Augmentable").when(impl)
119 .getFullyQualifiedName();
121 doReturn(impls).when(genType).getImplements();
124 private GeneratedType mockGenTypeMoreMeth(final String methodeName) {
125 final GeneratedType genType = spy(GeneratedType.class);
126 doReturn(TEST).when(genType).getName();
127 doReturn(TEST).when(genType).getPackageName();
128 doReturn(new GeneratedTypeBuilderImpl(new StringBuilder(methodeName).append("test").toString(), methodeName,
130 .toInstance()).when(genType).getParentTypeForBuilder();
132 final List<MethodSignature> listMethodSign = new ArrayList<>();
133 for (int i = 0; i < 2; i++) {
134 final MethodSignature methSign = mockMethSign(methodeName + (i + 1));
135 listMethodSign.add(methSign);
137 doReturn(listMethodSign).when(genType).getMethodDefinitions();
139 final List<Type> impls = new ArrayList<>();
140 doReturn(impls).when(genType).getImplements();
144 private String genToString(final GeneratedType genType) {
145 final BuilderRenderer bt = new BuilderRenderer(genType);
149 private GeneratedType mockGenType(final String methodeName) {
150 final GeneratedType genType = spy(GeneratedType.class);
151 doReturn(TEST).when(genType).getName();
152 doReturn(TEST).when(genType).getPackageName();
153 doReturn(new GeneratedTypeBuilderImpl(new StringBuilder(methodeName).append("test").toString(), methodeName,
155 .toInstance()).when(genType).getParentTypeForBuilder();
157 final List<MethodSignature> listMethodSign = new ArrayList<>();
158 final MethodSignature methSign = mockMethSign(methodeName);
159 listMethodSign.add(methSign);
160 doReturn(listMethodSign).when(genType).getMethodDefinitions();
162 final List<Type> impls = new ArrayList<>();
163 doReturn(impls).when(genType).getImplements();
167 private MethodSignature mockMethSign(final String methodeName) {
168 final MethodSignature methSign = mock(MethodSignature.class);
169 doReturn(methodeName).when(methSign).getName();
170 final Type methType = mock(Type.class);
171 doReturn(TEST).when(methType).getName();
172 doReturn(TEST).when(methType).getPackageName();
173 doReturn(methType).when(methSign).getReturnType();