package com.ldbc.driver.generator;
import com.google.common.base.Predicate;
import com.google.common.collect.Lists;
import org.junit.Test;
import java.util.Arrays;
import java.util.Iterator;
import java.util.List;
import static org.junit.Assert.assertEquals;
public class FilteringGeneratorTest {
@Test
public void filterShouldIncludeOnly() {
// Given
GeneratorFactory gf = new GeneratorFactory(new RandomDataGeneratorFactory());
Iterator<Integer> counterGenerator = gf.incrementing(1, 1);
Iterator<Integer> cappedCounterGenerator = gf.limit(counterGenerator, 10);
Integer[] includeNumbers = new Integer[]{1, 2, 3};
Iterator<Integer> filteredCappedCounterGenerator = gf.includeOnly(cappedCounterGenerator, includeNumbers);
// When
List<Integer> numbers = Lists.newArrayList(filteredCappedCounterGenerator);
// Then
assertEquals(Arrays.asList(new Integer[]{1, 2, 3}), numbers);
}
@Test
public void filterShouldExcludeAll() {
// Given
GeneratorFactory gf = new GeneratorFactory(new RandomDataGeneratorFactory());
Iterator<Integer> counterGenerator = gf.incrementing(1, 1);
Iterator<Integer> cappedCounterGenerator = gf.limit(counterGenerator, 10);
Integer[] excludeNumbers = new Integer[]{1, 2, 3};
Iterator<Integer> filteredCappedCounterGenerator = gf.excludeAll(cappedCounterGenerator, excludeNumbers);
// When
List<Integer> numbers = Lists.newArrayList(filteredCappedCounterGenerator);
// Then
assertEquals(Arrays.asList(new Integer[]{4, 5, 6, 7, 8, 9, 10}), numbers);
}
@Test
public void filterShouldReturn5() {
// Given
GeneratorFactory gf = new GeneratorFactory(new RandomDataGeneratorFactory());
Iterator<Integer> counterGenerator = gf.incrementing(1, 1);
Iterator<Integer> cappedCounterGenerator = gf.limit(counterGenerator, 10);
Iterator<Integer> filteredCappedCounterGenerator = gf.includeOnly(cappedCounterGenerator,
new Predicate<Integer>() {
@Override
public boolean apply(Integer input) {
return 5 == input;
}
});
// When
List<Integer> numbers = Lists.newArrayList(filteredCappedCounterGenerator);
// Then
assertEquals(Arrays.asList(new Integer[]{5}), numbers);
}
};