package hex; import org.junit.BeforeClass; import org.junit.Test; import water.*; import water.fvec.Frame; import water.fvec.Vec; import static org.junit.Assert.assertEquals; public class Summary2Test extends TestUtil { @BeforeClass public static void stall() { stall_till_cloudsize(3); } @Test public void testConstColumn() { Key key = Key.make("testConst.hex"); Frame fr = parseFrame(key, "./smalldata/constantColumn.csv"); Futures fs = new Futures(); for( Vec vec : fr.vecs()) vec.rollupStats(fs); fs.blockForPending(); Vec vec = fr.vecs()[0]; Summary2.BasicStat basicStat = new Summary2.PrePass().doAll(fr).finishUp()._basicStats[0]; Summary2 s = new Summary2(vec, "",basicStat); s.add(vec.chunkForRow(0)); for (int i = 1; i < vec.nChunks(); i++) { Summary2 s1 = new Summary2(vec, "", basicStat); s1.add(vec.chunkForRow(i)); s.add(s1); } s.finishUp(vec); assertEquals(1, s.hcnt.length); assertEquals(528, s.hcnt[0]); for (double pv : s._pctile) assertEquals(0.1, pv, 0.00001); fr.delete(); } @Test public void testEnumColumn() { Key key = Key.make("cars.hex"); Frame fr = parseFrame(key, "./smalldata/cars.csv"); Futures fs = new Futures(); for( Vec vec : fr.vecs()) vec.rollupStats(fs); fs.blockForPending(); Vec vec = fr.vecs()[fr.find("name")]; Summary2.BasicStat basicStat = new Summary2.PrePass().doAll(fr).finishUp()._basicStats[fr.find("name")]; Summary2 s = new Summary2(vec, "", basicStat); s.add(vec.chunkForRow(0)); for( int i = 1; i < vec.nChunks(); i++ ) { Summary2 s1 = new Summary2(vec, "", basicStat); s1.add(vec.chunkForRow(i)); s.add(s1); } s.finishUp(vec); assertEquals(306, s.hcnt.length); fr.delete(); } @Test public void testIntColumn() { Key key = Key.make("cars.hex"); Frame fr = parseFrame(key, "./smalldata/cars.csv"); Futures fs = new Futures(); for( Vec vec : fr.vecs()) vec.rollupStats(fs); fs.blockForPending(); Vec vec = fr.vecs()[fr.find("cylinders")]; Summary2.BasicStat basicStat = new Summary2.PrePass().doAll(fr).finishUp()._basicStats[fr.find("cylinders")]; Summary2 s = new Summary2(vec, "", basicStat); s.add(vec.chunkForRow(0)); for( int i = 1; i < vec.nChunks(); i++ ) { Summary2 s1 = new Summary2(vec, "", basicStat); s1.add(vec.chunkForRow(i)); s.add(s1); } s.finishUp(vec); assertEquals(0, s.hcnt[4]); // no 7 cylinder cars // kbn 2/28. 1% quantile for 0 should expect 4 // I changed Summary2 to be .1%, 1% ...99%, 99.9% quantiles. So answer is 3 for [0] assertEquals(3, (int)s._pctile[0]); assertEquals(8, (int)s._pctile[s._pctile.length - 1]); fr.delete(); } public static void main(String[] args) throws Exception { water.Boot.main(Summary2Test.class, args); } public static void userMain(String[] args) throws Exception { H2O.main(args); Summary2Test test = new Summary2Test(); test.testConstColumn(); test.testEnumColumn(); test.testIntColumn(); System.exit(0); } }