package org.radargun.config;
import org.radargun.utils.Fuzzy;
import org.testng.annotations.Test;
import java.math.BigDecimal;
import java.util.HashMap;
import java.util.Map;
import static org.testng.Assert.assertEquals;
/**
* @author mgencur
*/
@Test
public class FuzzyConverterTest {
public void testCorrectPercentage() {
final String valueDistribution = "11%: 10, 20%: 100, 40.5%: 1000, 20%: 10000, 8.5%: 100000";
Fuzzy<Integer> fuzzy = new Fuzzy.IntegerConverter().convert(valueDistribution, Integer.class);
Map<Integer, BigDecimal> expected = new HashMap<>();
expected.put(10, BigDecimal.valueOf(0.11));
expected.put(100, BigDecimal.valueOf(0.31));
expected.put(1000, BigDecimal.valueOf(0.715));
expected.put(10000, BigDecimal.valueOf(0.915));
expected.put(100000, BigDecimal.valueOf(1));
assertEquals(fuzzy.getProbabilityMap(), expected);
}
@Test(expectedExceptions = IllegalStateException.class)
public void testPercentageBiggerThanOne() {
final String valueDistribution = "11%: 10, 20%: 100, 40.5%: 1000, 20%: 10000, 10%: 100000";
new Fuzzy.IntegerConverter().convert(valueDistribution, Integer.class);
}
public void testWeights() {
final String valueDistribution = "2: 10, 3: 100"; //2 to 3 ratio (= 40 to 60 %)
Fuzzy<Integer> fuzzy = new Fuzzy.IntegerConverter().convert(valueDistribution, Integer.class);
Map<Integer, BigDecimal> expected = new HashMap<>();
expected.put(10, BigDecimal.valueOf(0.4));
expected.put(100, BigDecimal.valueOf(1));
assertEquals(fuzzy.getProbabilityMap(), expected);
}
public void testCombinedPercentageAndWeights() {
//50% taken by percentages and the rest is split 2/3
final String valueDistribution = "10%: 10, 20%: 100, 20%: 1000, 2: 10000, 3: 100000";
Fuzzy<Integer> fuzzy = new Fuzzy.IntegerConverter().convert(valueDistribution, Integer.class);
Map<Integer, BigDecimal> expected = new HashMap<>();
expected.put(10, BigDecimal.valueOf(0.1));
expected.put(100, BigDecimal.valueOf(0.3));
expected.put(1000, BigDecimal.valueOf(0.5));
expected.put(10000, BigDecimal.valueOf(0.7));
expected.put(100000, BigDecimal.valueOf(1));
assertEquals(fuzzy.getProbabilityMap(), expected);
}
}