package de.invesdwin.util.lang;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.annotation.concurrent.ThreadSafe;
import org.junit.Test;
import de.invesdwin.util.assertions.Assertions;
import de.invesdwin.util.time.fdate.FDate;
@ThreadSafe
public class StringsTest {
@Test
public void testRemoveEnd() {
Assertions.assertThat(Strings.removeEnd(new StringBuilder("asdasd"), "asd").toString()).isEqualTo("asd");
Assertions.assertThat(Strings.removeEnd(new StringBuilder("asdasd"), "d").toString()).isEqualTo("asdas");
Assertions.assertThat(Strings.removeEnd(new StringBuilder("asdasd"), "").toString()).isEqualTo("asdasd");
Assertions.assertThat(Strings.removeEnd(new StringBuilder("asdasd"), "f").toString()).isEqualTo("asdasd");
Assertions.assertThat(Strings.removeEnd(new StringBuilder("asdasd"), "asdasda").toString()).isEqualTo("asdasd");
Assertions.assertThat(Strings.removeEnd(new StringBuilder("asdasd"), "asd".length()).toString()).isEqualTo(
"asd");
Assertions.assertThat(Strings.removeEnd("asdasd", "asd").toString()).isEqualTo("asd");
Assertions.assertThat(Strings.removeEnd("asdasd", "asd".length()).toString()).isEqualTo("asd");
Assertions.assertThat(Strings.removeEnd("asdasd", 1).toString()).isEqualTo("asdas");
}
@Test
public void testStripBlankLines() {
final String sWithEmptyLines = "\nasd\n\n\n \n\t\nasd\n";
final String sWithoutEmptyLines = Strings.stripBlankLines(sWithEmptyLines);
Assertions.assertThat("asd\nasd").isEqualTo(sWithoutEmptyLines);
}
@Test
public void testCountLines() {
String sMultipleLines = "asd\nasd" + "\nsadasd" + "\nasd";
Assertions.assertThat(Strings.countLines(sMultipleLines)).isEqualTo(4);
sMultipleLines = "asd\nasd" + "\nsadasd" + "\n";
Assertions.assertThat(Strings.countLines(sMultipleLines)).isEqualTo(4);
}
@Test
public void testAsStringReflectiveMultiline() {
System.out.println(String.format(Objects.toStringMultiline(new PrettyToStringVO()))); //SUPPRESS CHECKSTYLE single line
System.out.println(String.format(Strings.asStringReflectiveMultiline(new ArrayList<Integer>(Arrays.asList(1, 2, //SUPPRESS CHECKSTYLE single line
3, 4, 5)))));
}
@Test
public void testAsStringReflective() {
System.out.println(String.format(new PrettyToStringVO().toString())); //SUPPRESS CHECKSTYLE single line
System.out.println(String.format(Strings.asStringReflective(new ArrayList<Integer>(Arrays.asList(1, 2, 3, 4, 5))))); //SUPPRESS CHECKSTYLE single line
}
@Test
public void testToStringHelperMultiline() {
System.out.println(String.format(new PrettyToStringVO().toStringHelperMultiline())); //SUPPRESS CHECKSTYLE single line
}
@Test
public void testToStringHelper() {
System.out.println(String.format(new PrettyToStringVO().toStringHelper())); //SUPPRESS CHECKSTYLE single line
}
@Test
public void testAsStringIdentity() {
System.out.println(String.format(new Object().toString())); //SUPPRESS CHECKSTYLE single line
System.out.println(String.format(Strings.asStringIdentity(new PrettyToStringVO()))); //SUPPRESS CHECKSTYLE single line
System.out.println(String.format(Strings.asStringIdentity(new ArrayList<Integer>(Arrays.asList(1, 2, 3, 4, 5))))); //SUPPRESS CHECKSTYLE single line
}
@SuppressWarnings("unused")
public static class PrettyToStringVO {
private static final long serialVersionUID = 1L;
private final int number = 1;
private final String string = "bla";
private final String[] array = { "1", "2", "3" };
private PrettyToStringVO object;
private List<PrettyToStringVO> collection;
private Map<Object, PrettyToStringVO> map;
private Object nulll;
private final FDate date = new FDate();
private final transient boolean someInvisibleState = true;
public PrettyToStringVO() {
this(1);
}
public PrettyToStringVO(final int level) {
final int maxEbene = 3;
if (level < maxEbene) {
object = new PrettyToStringVO(maxEbene);
collection = Arrays.asList(new PrettyToStringVO(level + 2), new PrettyToStringVO(level + 1),
new PrettyToStringVO(level + 1));
map = new HashMap<Object, PrettyToStringVO>();
map.put("1", new PrettyToStringVO(level + 2));
map.put("2", new PrettyToStringVO(level + 2));
map.put(new PrettyToStringVO(level + 2), new PrettyToStringVO(level + 2));
} else {
object = this;
collection = new ArrayList<PrettyToStringVO>();
map = new HashMap<Object, PrettyToStringVO>();
}
}
public String toStringHelperMultiline() {
return internalToStringHelper(Objects.toStringHelperMultiline(this)).with(
internalToStringHelper(Objects.toStringHelperMultiline(object)))
.with(internalToStringHelper(Objects.toStringHelperMultiline(object)))
.toString();
}
public String toStringHelper() {
return internalToStringHelper(Objects.toStringHelper(this)).with(
internalToStringHelper(Objects.toStringHelper(object)))
.with(internalToStringHelper(Objects.toStringHelper(object)))
.toString();
}
private ToStringHelper internalToStringHelper(final ToStringHelper helper) {
// private final int number = 1;
return helper.add("number", number)
// private final String string = "bla";
.add("string", string)
// private final String[] array = { "1", "2", "3" };
.add("array", array)
// private PrettyToStringVO object;
.add("object", object)
// private List<PrettyToStringVO> collection;
.add("collection", collection)
// private Map<Object, PrettyToStringVO> map;
.add("map", map)
// private Object nulll;
.add("nulll", nulll)
// private final FDate date = new FDate();
.add("date", date)
// private final transient boolean someInvisibleState = true;
.add("someInvisibleState", someInvisibleState);
}
}
}