package org.talend.dataquality.statistics.cardinality;
import com.clearspring.analytics.stream.cardinality.CardinalityMergeException;
import org.apache.commons.lang.RandomStringUtils;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import com.clearspring.analytics.stream.cardinality.HyperLogLog;
/**
* Created by afournier on 31/03/17.
*/
public class CardinalityStatisticsTest {
private static CardinalityStatistics cardStats;
@Before
public void setUp() throws Exception {
cardStats = new CardinalityStatistics();
}
@Test(expected = ClassCastException.class)
public void testDifferentTypeMerge() throws CardinalityMergeException {
AbstractCardinalityStatistics stat1 = new CardinalityHLLStatistics();
stat1.merge(cardStats);
}
@Test
public void testPossibleMerge() {
CardinalityStatistics otherCardStat = new CardinalityStatistics();
for (int i = 0; i < 1000; i++) {
cardStats.incrementCount();
otherCardStat.incrementCount();
String str = RandomStringUtils.randomAscii(2);
cardStats.add(str);
otherCardStat.add(str);
}
cardStats.merge(otherCardStat);
Assert.assertEquals(cardStats.getDistinctCount(), otherCardStat.getDistinctCount());
}
}