package com.ldbc.driver.generator; import com.ldbc.driver.util.Bucket.DiscreteBucket; import com.ldbc.driver.util.Histogram; import com.ldbc.driver.util.Tuple; import com.ldbc.driver.util.Tuple2; import org.junit.Test; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import static org.junit.Assert.assertEquals; public class WeightedDiscreteDereferencingGeneratorTest extends GeneratorTest<String, Integer> { @Override public Histogram<String, Integer> getExpectedDistribution() { Histogram<String, Integer> expectedDistribution = new Histogram<String, Integer>(0); expectedDistribution.addBucket(DiscreteBucket.create("1"), 1); expectedDistribution.addBucket(DiscreteBucket.create("2"), 2); expectedDistribution.addBucket(DiscreteBucket.create("3"), 4); expectedDistribution.addBucket(DiscreteBucket.create("4"), 8); return expectedDistribution; } @Override public double getDistributionTolerance() { return 0.01; } @Override public Iterator<String> getGeneratorImpl(GeneratorFactory generatorFactory) { List<Tuple2<Double, Iterator<String>>> items = new ArrayList<Tuple2<Double, Iterator<String>>>(); items.add(Tuple.tuple2(1.0, generatorFactory.constant("1"))); items.add(Tuple.tuple2(2.0, generatorFactory.constant("2"))); items.add(Tuple.tuple2(4.0, generatorFactory.constant("3"))); items.add(Tuple.tuple2(8.0, generatorFactory.constant("4"))); return generatorFactory.weightedDiscreteDereferencing(items); } @Test(expected = GeneratorException.class) public void emptyConstructorTest() { // Given GeneratorFactory generatorFactory = new GeneratorFactory(new RandomDataGeneratorFactory()); List<Tuple2<Double, Iterator<String>>> emptyItems = new ArrayList<Tuple2<Double, Iterator<String>>>(); Iterator<String> generator = generatorFactory.weightedDiscreteDereferencing(emptyItems); // When generator.next(); // Then assertEquals("Empty DiscreteGenerator should throw exception on next()", false, true); } }