package com.insightfullogic.java8.examples.chapter5;
import com.insightfullogic.java8.examples.chapter1.Artist;
import com.insightfullogic.java8.examples.chapter1.SampleData;
import org.junit.Test;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.StringJoiner;
import java.util.function.Function;
import static org.junit.Assert.assertEquals;
public class StringExamplesTest {
@Test
public void beatlesExample() {
StringJoiner joiner = new StringJoiner(", ", "[", "]");
joiner.add("John");
joiner.add("Paul");
joiner.add("Ringo");
assertEquals("[John, Paul, Ringo]", joiner.toString());
}
@Test
public void allStringJoins() {
List<Function<List<Artist>, String>> formatters = Arrays.<Function<List<Artist>, String>>asList(
StringExamples::formatArtists,
StringExamples::formatArtistsForLoop,
StringExamples::formatArtistsRefactor1,
StringExamples::formatArtistsRefactor2,
StringExamples::formatArtistsRefactor3,
StringExamples::formatArtistsRefactor4,
StringExamples::formatArtistsRefactor5
);
formatters.forEach(formatter -> {
System.out.println("Testing: " + formatter.toString());
String result = formatter.apply(SampleData.getThreeArtists());
assertEquals("[John Coltrane, John Lennon, The Beatles]", result);
result = formatter.apply(Collections.emptyList());
assertEquals("[]", result);
});
}
@Test
public void explicitForLoop() {
String result = StringExamples.formatArtists(SampleData.getThreeArtists());
assertEquals("[John Coltrane, John Lennon, The Beatles]", result);
}
}