package ml.shifu.shifu.udf;
import org.apache.pig.data.DataBag;
import org.apache.pig.data.DefaultDataBag;
import org.apache.pig.data.Tuple;
import org.apache.pig.data.TupleFactory;
import org.testng.Assert;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
import java.io.IOException;
/**
* Created by Mark on 5/30/2016.
*/
public class PopulationCounterUDFTest {
private PopulationCounterUDF inst;
private double[] array;
@BeforeClass
public void setup() throws IOException {
inst = new PopulationCounterUDF("LOCAL",
"src/test/resources/example/cancer-judgement/ModelStore/ModelSet1/ModelConfig.json",
"src/test/resources/example/cancer-judgement/ModelStore/ModelSet1/ColumnConfig.json",
"2");
array = new double[] {13D, 14D, 14D, 17D, 17D, 18D, 19D, 20D, 21D, 27D};
}
@Test
public void testCase1() throws IOException {
Tuple input = TupleFactory.getInstance().newTuple(2);
Tuple groupInfo = TupleFactory.getInstance().newTuple(2);
groupInfo.set(0, "column_3");
groupInfo.set(1, Integer.valueOf(1));
DataBag dataBag = new DefaultDataBag();
//{(PSIColumn: int, columnId: int, value: chararray, tag: boolean , rand: int)}
for (int i = 0 ; i < 10; i ++) {
Tuple t = TupleFactory.getInstance().newTuple(4);
t.set(0, Integer.valueOf(1));
t.set(1, Integer.valueOf(1));
t.set(2, array[i]);
dataBag.add(t);
}
input.set(0, groupInfo);
input.set(1, dataBag);
Tuple output = inst.exec(input);
Assert.assertEquals(output.get(0), 1);
String[] outputArray = output.get(1).toString().split(String.valueOf(CalculateStatsUDF.CATEGORY_VAL_SEPARATOR));
Assert.assertEquals(outputArray[0], "1");
Assert.assertEquals(outputArray[1], "2");
Assert.assertEquals(outputArray[2], "0");
}
}