package de.is24.deadcode4j;
import de.is24.deadcode4j.junit.LoggingRule;
import org.junit.Rule;
import org.junit.Test;
import java.util.Set;
import static com.google.common.collect.Sets.newHashSet;
import static de.is24.deadcode4j.IntermediateResults.IntermediateResultSet;
import static de.is24.deadcode4j.IntermediateResults.resultSetFor;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.hasItem;
import static org.hamcrest.Matchers.hasItems;
public final class An_IntermediateResultSet {
@Rule
public final LoggingRule enableLogging = new LoggingRule();
@SuppressWarnings("unchecked")
private static <E> IntermediateResultSet<E> mergeSibling(IntermediateResultSet<E> objectUnderTest, IntermediateResultSet<E> IntermediateResultSet) {
return (IntermediateResultSet<E>) objectUnderTest.mergeSibling(IntermediateResultSet);
}
@SuppressWarnings("unchecked")
private static <E> IntermediateResultSet<E> mergeParent(IntermediateResultSet<E> objectUnderTest, IntermediateResultSet<E> IntermediateResultSet) {
return (IntermediateResultSet<E>) objectUnderTest.mergeParent(IntermediateResultSet);
}
@Test
public void createsCopyOfProvidedSet() {
Set<String> results = newHashSet("foo");
IntermediateResultSet<String> objectUnderTest = resultSetFor(results);
results.clear();
assertThat(objectUnderTest.getResults(), hasItem("foo"));
}
@Test
public void addsSiblingEntries() {
IntermediateResultSet<String> objectUnderTest = givenIntermediateResultSet("foo");
IntermediateResultSet<String> mergedResult =
mergeSibling(objectUnderTest, givenIntermediateResultSet("bar"));
assertThat(mergedResult.getResults(), hasItems("foo", "bar"));
}
@Test
public void addsParentEntries() {
IntermediateResultSet<String> objectUnderTest = givenIntermediateResultSet("foo");
IntermediateResultSet<String> mergedResult =
mergeParent(objectUnderTest, givenIntermediateResultSet("bar"));
assertThat(mergedResult.getResults(), hasItems("foo", "bar"));
}
private IntermediateResultSet<String> givenIntermediateResultSet(String element) {
return resultSetFor(newHashSet(element));
}
}