package wordStat; import base.Named; import base.Selector; import java.util.Comparator; import java.util.function.Function; import java.util.stream.Stream; /** * Tests for Word Statistics homework * of Introduction to Programming course. * * @author Georgiy Korneev (kgeorgiy@kgeorgiy.info) */ public final class WordStatTest { // === Base private static final Named>> ID = Named.of("", Stream::of); private static final WordStatTester.Variant BASE = new WordStatTester.Variant("", false, Comparator.comparingInt(p -> 0)); // === 3637 public static final int SIZE = 3; private static final WordStatTester.Variant LENGTH = new WordStatTester.Variant("Length", false, Comparator.comparingInt(p -> p.first().length())); private static final Named>> MIDDLE = size("Middle", SIZE * 2 + 1, s -> Stream.of(s.substring(SIZE, s.length() - SIZE))); static Named>> size( final String name, final int length, final Function> f ) { return Named.of(name, s -> s.length() >= length ? f.apply(s) : Stream.empty()); } // === 3839 private static final Named>> AFFIX = size( "Affix", 2, s -> Stream.of(s.substring(0, s.length() / 2), s.substring(s.length() - s.length() / 2)) ); // === 3536 private static final Named>> SUFFIX = size("Suffix", 2, s -> Stream.of(s.substring(s.length() - s.length() / 2))); // === 4749 private static final Named>> PREFIX = size("Prefix", 2, s -> Stream.of(s.substring(0, s.length() / 2))); // === Common public static final Selector SELECTOR = new Selector(WordStatTester.class) .variant("Base", BASE.with(ID)) .variant("3637", LENGTH.with(MIDDLE)) .variant("3839", LENGTH.with(AFFIX)) .variant("3435", LENGTH.with(SUFFIX)) .variant("3233", LENGTH.with(ID)) .variant("4142", LENGTH.with(MIDDLE)) .variant("4749", LENGTH.with(PREFIX)) ; private WordStatTest() { // Utility class } public static void main(final String... args) { SELECTOR.main(args); } }