| /** |
| * Copyright (c) 2016 itemis AG (http://www.itemis.eu) and others. |
| * This program and the accompanying materials are made available under the |
| * terms of the Eclipse Public License 2.0 which is available at |
| * http://www.eclipse.org/legal/epl-2.0. |
| * |
| * SPDX-License-Identifier: EPL-2.0 |
| */ |
| package org.eclipse.xtext.xbase.tests.lib.internal; |
| |
| import java.lang.annotation.RetentionPolicy; |
| import java.util.ArrayList; |
| import org.eclipse.xtend.lib.annotations.Accessors; |
| import org.eclipse.xtend.lib.annotations.ToString; |
| import org.eclipse.xtend2.lib.StringConcatenation; |
| import org.eclipse.xtext.xbase.lib.CollectionLiterals; |
| import org.eclipse.xtext.xbase.lib.Pure; |
| import org.eclipse.xtext.xbase.lib.util.ToStringBuilder; |
| import org.junit.Assert; |
| import org.junit.Test; |
| |
| /** |
| * @author Karsten Thoms - Initial contribution and API |
| */ |
| @SuppressWarnings("all") |
| public class ToStringBuilderTest { |
| public static class OtherClass { |
| public ToStringBuilderTest.OtherClass other; |
| |
| public String name; |
| } |
| |
| @Accessors |
| @ToString |
| public static class DataClass { |
| public ToStringBuilderTest.DataClass other; |
| |
| public String name; |
| |
| @Pure |
| public ToStringBuilderTest.DataClass getOther() { |
| return this.other; |
| } |
| |
| public void setOther(final ToStringBuilderTest.DataClass other) { |
| this.other = other; |
| } |
| |
| @Pure |
| public String getName() { |
| return this.name; |
| } |
| |
| public void setName(final String name) { |
| this.name = name; |
| } |
| |
| @Override |
| @Pure |
| public String toString() { |
| ToStringBuilder b = new ToStringBuilder(this); |
| b.add("other", this.other); |
| b.add("name", this.name); |
| return b.toString(); |
| } |
| } |
| |
| public static class MyEntity { |
| private final boolean boolProp = true; |
| |
| private final int intProp = 42; |
| |
| private final ArrayList<String> myList = CollectionLiterals.<String>newArrayList("foo", "bar", "baz"); |
| |
| private final ToStringBuilderTest.MyEntity friend; |
| |
| private final RetentionPolicy policy = RetentionPolicy.CLASS; |
| |
| public MyEntity() { |
| this.friend = null; |
| } |
| |
| public MyEntity(final ToStringBuilderTest.MyEntity friend) { |
| this.friend = friend; |
| } |
| |
| @Override |
| public String toString() { |
| String _plus = (Boolean.valueOf(this.boolProp) + "\n"); |
| String _plus_1 = (_plus + Integer.valueOf(this.intProp)); |
| String _plus_2 = (_plus_1 + "\n"); |
| String _plus_3 = (_plus_2 + this.myList); |
| String _plus_4 = (_plus_3 + "\n"); |
| String _plus_5 = (_plus_4 + this.friend); |
| String _plus_6 = (_plus_5 + "\n"); |
| return (_plus_6 + this.policy); |
| } |
| } |
| |
| @Test |
| public void testToString() { |
| ToStringBuilderTest.MyEntity _myEntity = new ToStringBuilderTest.MyEntity(); |
| ToStringBuilderTest.MyEntity _myEntity_1 = new ToStringBuilderTest.MyEntity(_myEntity); |
| final ToStringBuilder builder = new ToStringBuilder(_myEntity_1).addAllFields(); |
| StringConcatenation _builder = new StringConcatenation(); |
| _builder.append("MyEntity ["); |
| _builder.newLine(); |
| _builder.append(" "); |
| _builder.append("boolProp = true"); |
| _builder.newLine(); |
| _builder.append(" "); |
| _builder.append("intProp = 42"); |
| _builder.newLine(); |
| _builder.append(" "); |
| _builder.append("myList = ArrayList ("); |
| _builder.newLine(); |
| _builder.append(" "); |
| _builder.append("\"foo\","); |
| _builder.newLine(); |
| _builder.append(" "); |
| _builder.append("\"bar\","); |
| _builder.newLine(); |
| _builder.append(" "); |
| _builder.append("\"baz\""); |
| _builder.newLine(); |
| _builder.append(" "); |
| _builder.append(")"); |
| _builder.newLine(); |
| _builder.append(" "); |
| _builder.append("friend = true"); |
| _builder.newLine(); |
| _builder.append(" "); |
| _builder.append("42"); |
| _builder.newLine(); |
| _builder.append(" "); |
| _builder.append("[foo, bar, baz]"); |
| _builder.newLine(); |
| _builder.append(" "); |
| _builder.append("null"); |
| _builder.newLine(); |
| _builder.append(" "); |
| _builder.append("CLASS"); |
| _builder.newLine(); |
| _builder.append(" "); |
| _builder.append("policy = CLASS"); |
| _builder.newLine(); |
| _builder.append("]"); |
| Assert.assertEquals( |
| ToStringBuilderTest.toUnix(_builder.toString()), builder.toString()); |
| } |
| |
| @Test |
| public void testSingleLine() { |
| ToStringBuilderTest.MyEntity _myEntity = new ToStringBuilderTest.MyEntity(); |
| final ToStringBuilder builder = new ToStringBuilder(_myEntity).singleLine().addAllFields(); |
| Assert.assertEquals( |
| "MyEntity [boolProp = true, intProp = 42, myList = ArrayList (\"foo\",\"bar\",\"baz\"), friend = null, policy = CLASS]", |
| builder.toString()); |
| } |
| |
| @Test |
| public void testHideFieldNames() { |
| ToStringBuilderTest.MyEntity _myEntity = new ToStringBuilderTest.MyEntity(); |
| final ToStringBuilder builder = new ToStringBuilder(_myEntity).singleLine().hideFieldNames().addAllFields(); |
| Assert.assertEquals("MyEntity [true, 42, ArrayList (\"foo\",\"bar\",\"baz\"), null, CLASS]", builder.toString()); |
| } |
| |
| @Test |
| public void testSkipNulls() { |
| ToStringBuilderTest.MyEntity _myEntity = new ToStringBuilderTest.MyEntity(); |
| final ToStringBuilder builder = new ToStringBuilder(_myEntity).skipNulls().addAllFields(); |
| StringConcatenation _builder = new StringConcatenation(); |
| _builder.append("MyEntity ["); |
| _builder.newLine(); |
| _builder.append(" "); |
| _builder.append("boolProp = true"); |
| _builder.newLine(); |
| _builder.append(" "); |
| _builder.append("intProp = 42"); |
| _builder.newLine(); |
| _builder.append(" "); |
| _builder.append("myList = ArrayList ("); |
| _builder.newLine(); |
| _builder.append(" "); |
| _builder.append("\"foo\","); |
| _builder.newLine(); |
| _builder.append(" "); |
| _builder.append("\"bar\","); |
| _builder.newLine(); |
| _builder.append(" "); |
| _builder.append("\"baz\""); |
| _builder.newLine(); |
| _builder.append(" "); |
| _builder.append(")"); |
| _builder.newLine(); |
| _builder.append(" "); |
| _builder.append("policy = CLASS"); |
| _builder.newLine(); |
| _builder.append("]"); |
| Assert.assertEquals( |
| ToStringBuilderTest.toUnix(_builder.toString()), builder.toString()); |
| } |
| |
| @Test |
| public void testExplicitFieldListing() { |
| ToStringBuilderTest.MyEntity _myEntity = new ToStringBuilderTest.MyEntity(); |
| final ToStringBuilder builder = new ToStringBuilder(_myEntity).add("boolProp", Boolean.valueOf(false)).addField("intProp"); |
| StringConcatenation _builder = new StringConcatenation(); |
| _builder.append("MyEntity ["); |
| _builder.newLine(); |
| _builder.append(" "); |
| _builder.append("boolProp = false"); |
| _builder.newLine(); |
| _builder.append(" "); |
| _builder.append("intProp = 42"); |
| _builder.newLine(); |
| _builder.append("]"); |
| Assert.assertEquals( |
| ToStringBuilderTest.toUnix(_builder.toString()), builder.toString()); |
| } |
| |
| @Test |
| public void recursionHandling() { |
| final ToStringBuilderTest.OtherClass obj = new ToStringBuilderTest.OtherClass(); |
| obj.name = "foo"; |
| obj.other = obj; |
| final ToStringBuilder builder = new ToStringBuilder(obj).addDeclaredFields(); |
| StringConcatenation _builder = new StringConcatenation(); |
| _builder.append("OtherClass ["); |
| _builder.newLine(); |
| _builder.append(" "); |
| _builder.append("other = "); |
| String _string = obj.toString(); |
| _builder.append(_string, " "); |
| _builder.newLineIfNotEmpty(); |
| _builder.append(" "); |
| _builder.append("name = \"foo\""); |
| _builder.newLine(); |
| _builder.append("]"); |
| Assert.assertEquals( |
| ToStringBuilderTest.toUnix(_builder.toString()), builder.toString()); |
| } |
| |
| @Test |
| public void recursionHandling_02() { |
| final ToStringBuilderTest.DataClass obj = new ToStringBuilderTest.DataClass(); |
| obj.other = obj; |
| obj.name = "test"; |
| final ToStringBuilder builder = new ToStringBuilder(obj).addDeclaredFields(); |
| StringConcatenation _builder = new StringConcatenation(); |
| _builder.append("DataClass ["); |
| _builder.newLine(); |
| _builder.append(" "); |
| _builder.append("other = DataClass@"); |
| int _identityHashCode = System.identityHashCode(obj); |
| _builder.append(_identityHashCode, " "); |
| _builder.newLineIfNotEmpty(); |
| _builder.append(" "); |
| _builder.append("name = \"test\""); |
| _builder.newLine(); |
| _builder.append("]"); |
| Assert.assertEquals( |
| ToStringBuilderTest.toUnix(_builder.toString()), builder.toString()); |
| } |
| |
| public static String toUnix(final String s) { |
| StringConcatenation result = new StringConcatenation("\n"); |
| result.append(s); |
| return result.toString(); |
| } |
| } |