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 static org.junit.Assert.assertEquals;
public class DiscreteGeneratorTest 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) {
Tuple2<Double, String> p1 = Tuple.tuple2(1.0, "1");
Tuple2<Double, String> p2 = Tuple.tuple2(2.0, "2");
Tuple2<Double, String> p3 = Tuple.tuple2(4.0, "3");
Tuple2<Double, String> p4 = Tuple.tuple2(8.0, "4");
ArrayList<Tuple2<Double, String>> items = new ArrayList<Tuple2<Double, String>>();
items.add(p1);
items.add(p2);
items.add(p3);
items.add(p4);
return generatorFactory.weightedDiscrete(items);
}
@Test(expected = GeneratorException.class)
public void emptyConstructorTest() {
// Given
GeneratorFactory generatorFactory = new GeneratorFactory(new RandomDataGeneratorFactory());
ArrayList<Tuple2<Double, String>> emptyItems = new ArrayList<Tuple2<Double, String>>();
Iterator<String> generator = generatorFactory.weightedDiscrete(emptyItems);
// When
generator.next();
// Then
assertEquals("Empty DiscreteGenerator should throw exception on next()", false, true);
}
}