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;
14 import java.util.ArrayList;
15 import java.util.List;
16 import org.junit.Test;
17 import org.opendaylight.mdsal.binding.javav2.generator.util.generated.type.builder.GeneratedTypeBuilderImpl;
18 import org.opendaylight.mdsal.binding.javav2.model.api.GeneratedType;
19 import org.opendaylight.mdsal.binding.javav2.model.api.MethodSignature;
20 import org.opendaylight.mdsal.binding.javav2.model.api.Type;
22 public class BuilderRendererTest {
23 private static final String TEST = "test";
26 public void builderTemplateGenerateToStringWithPropertyTest() throws Exception {
27 final GeneratedType genType = mockGenType("get" + TEST);
28 final String generateToString = genToString(genType);
29 assertTrue(generateToString.contains("java.lang.String toString() {"));
30 assertTrue(generateToString.contains("java.lang.String name = \"test [\";"));
31 assertTrue(generateToString.contains("java.lang.StringBuilder builder = new java.lang.StringBuilder(name);"));
32 assertTrue(generateToString.contains("if (_test != null) {"));
33 assertTrue(generateToString.contains("builder.append(\"_test=\");"));
34 assertTrue(generateToString.contains("builder.append(_test);"));
35 assertTrue(generateToString.contains("return builder.append(']').toString();"));
39 public void builderTemplateGenerateToStringWithoutAnyPropertyTest() throws Exception {
40 final GeneratedType genType = mockGenType(TEST);
41 final String generateToString = genToString(genType);
42 assertTrue(generateToString.contains("java.lang.String toString() {"));
43 assertTrue(generateToString.contains("java.lang.String name = \"test [\";"));
44 assertTrue(generateToString.contains("java.lang.StringBuilder builder = new java.lang.StringBuilder(name);"));
45 assertTrue(generateToString.contains("return builder.append(']').toString();"));
49 public void builderTemplateGenerateToStringWithMorePropertiesTest() throws Exception {
50 final GeneratedType genType = mockGenTypeMoreMeth("get" + TEST);
51 final String generateToString = genToString(genType);
52 assertTrue(generateToString.contains("java.lang.String toString() {"));
53 assertTrue(generateToString.contains("java.lang.String name = \"test [\";"));
54 assertTrue(generateToString.contains("java.lang.StringBuilder builder = new java.lang.StringBuilder(name);"));
55 assertTrue(generateToString.contains("if (_test1 != null) {"));
56 assertTrue(generateToString.contains("builder.append(\"_test1=\");"));
57 assertTrue(generateToString.contains("builder.append(_test1);"));
58 assertTrue(generateToString.contains("builder.append(\", \");"));
59 assertTrue(generateToString.contains("if (_test2 != null) {"));
60 assertTrue(generateToString.contains("builder.append(\"_test2=\");"));
61 assertTrue(generateToString.contains("builder.append(_test2);"));
62 assertTrue(generateToString.contains("return builder.append(']').toString();"));
66 public void builderTemplateGenerateToStringWithoutPropertyWithAugmentTest() throws Exception {
67 final GeneratedType genType = mockGenType(TEST);
69 final String generateToString = genToString(genType);
70 assertTrue(generateToString.contains("java.lang.String toString() {"));
71 assertTrue(generateToString.contains("java.lang.String name = \"test [\";"));
72 assertTrue(generateToString.contains("java.lang.StringBuilder builder = new java.lang.StringBuilder(name);"));
73 assertTrue(generateToString.contains("builder.append(\"augmentation=\");"));
74 assertTrue(generateToString.contains("builder.append(augmentation.values());"));
75 assertTrue(generateToString.contains("return builder.append(']').toString();"));
79 public void builderTemplateGenerateToStringWithPropertyWithAugmentTest() throws Exception {
80 final GeneratedType genType = mockGenType("get" + TEST);
82 final String generateToString = genToString(genType);
83 assertTrue(generateToString.contains("java.lang.String toString() {"));
84 assertTrue(generateToString.contains("java.lang.String name = \"test [\";"));
85 assertTrue(generateToString.contains("java.lang.StringBuilder builder = new java.lang.StringBuilder(name);"));
86 assertTrue(generateToString.contains("if (_test != null) {"));
87 assertTrue(generateToString.contains("builder.append(\"_test=\");"));
88 assertTrue(generateToString.contains("builder.append(_test);"));
89 assertTrue(generateToString.contains("builder.append(\", \");"));
90 assertTrue(generateToString.contains("builder.append(\"augmentation=\");"));
91 assertTrue(generateToString.contains("builder.append(augmentation.values());"));
92 assertTrue(generateToString.contains("return builder.append(']').toString();"));
96 public void builderTemplateGenerateToStringWithMorePropertiesWithAugmentTest() throws Exception {
97 final GeneratedType genType = mockGenTypeMoreMeth("get" + TEST);
99 final String generateToString = genToString(genType).toString();
100 assertTrue(generateToString.contains("if (_test1 != null) {"));
101 assertTrue(generateToString.contains("builder.append(\"_test1=\");"));
102 assertTrue(generateToString.contains("builder.append(_test1);"));
103 assertTrue(generateToString.contains("builder.append(\", \");"));
104 assertTrue(generateToString.contains("if (_test2 != null) {"));
105 assertTrue(generateToString.contains("builder.append(\"_test2=\");"));
106 assertTrue(generateToString.contains("builder.append(_test2);"));
107 assertTrue(generateToString.contains("builder.append(\", \");"));
108 assertTrue(generateToString.contains("builder.append(\"augmentation=\");"));
109 assertTrue(generateToString.contains("builder.append(augmentation.values());"));
110 assertTrue(generateToString.contains("return builder.append(']').toString();"));
113 private void mockAugment(final GeneratedType genType) {
114 final List<Type> impls = new ArrayList<>();
115 final Type impl = mock(Type.class);
116 doReturn("org.opendaylight.mdsal.binding.javav2.spec.structural.Augmentable").when(impl)
117 .getFullyQualifiedName();
119 doReturn(impls).when(genType).getImplements();
122 private GeneratedType mockGenTypeMoreMeth(final String methodeName) {
123 final GeneratedType genType = spy(GeneratedType.class);
124 doReturn(TEST).when(genType).getName();
125 doReturn(TEST).when(genType).getPackageName();
126 doReturn(new GeneratedTypeBuilderImpl(new StringBuilder(methodeName).append("test").toString(), methodeName)
127 .toInstance()).when(genType).getParentTypeForBuilder();
129 final List<MethodSignature> listMethodSign = new ArrayList<>();
130 for (int i = 0; i < 2; i++) {
131 final MethodSignature methSign = mockMethSign(methodeName + (i + 1));
132 listMethodSign.add(methSign);
134 doReturn(listMethodSign).when(genType).getMethodDefinitions();
136 final List<Type> impls = new ArrayList<>();
137 doReturn(impls).when(genType).getImplements();
141 private String genToString(final GeneratedType genType) {
142 final BuilderRenderer bt = new BuilderRenderer(genType);
146 private GeneratedType mockGenType(final String methodeName) {
147 final GeneratedType genType = spy(GeneratedType.class);
148 doReturn(TEST).when(genType).getName();
149 doReturn(TEST).when(genType).getPackageName();
150 doReturn(new GeneratedTypeBuilderImpl(new StringBuilder(methodeName).append("test").toString(), methodeName)
151 .toInstance()).when(genType).getParentTypeForBuilder();
153 final List<MethodSignature> listMethodSign = new ArrayList<>();
154 final MethodSignature methSign = mockMethSign(methodeName);
155 listMethodSign.add(methSign);
156 doReturn(listMethodSign).when(genType).getMethodDefinitions();
158 final List<Type> impls = new ArrayList<>();
159 doReturn(impls).when(genType).getImplements();
163 private MethodSignature mockMethSign(final String methodeName) {
164 final MethodSignature methSign = mock(MethodSignature.class);
165 doReturn(methodeName).when(methSign).getName();
166 final Type methType = mock(Type.class);
167 doReturn(TEST).when(methType).getName();
168 doReturn(TEST).when(methType).getPackageName();
169 doReturn(methType).when(methSign).getReturnType();