package water.rapids.ast.prims.reducers; import org.junit.Assert; import org.junit.BeforeClass; import org.junit.Test; import water.Scope; import water.TestUtil; import water.fvec.Frame; import water.fvec.TestFrameBuilder; import water.rapids.Rapids; import water.rapids.Session; import water.rapids.Val; import water.rapids.vals.ValFrame; /** * Test for the {@link AstCumu} class and its subclasses. */ public class AstCumuTest extends TestUtil { @BeforeClass public static void setup() { stall_till_cloudsize(1); } @Test public void testCumuSimple() { Scope.enter(); try { Session sess = new Session(); new TestFrameBuilder() .withName("$fr", sess) .withColNames("c1", "c2", "c3", "c4") .withDataForCol(0, ard(1, 1)) .withDataForCol(1, ard(2, 2)) .withDataForCol(2, ard(3, 3)) .withDataForCol(3, ard(4, 4)) .build(); Val val = Rapids.exec("(cumsum $fr 1)", sess); Assert.assertTrue(val instanceof ValFrame); Frame res = Scope.track(val.getFrame()); Assert.assertEquals(res.vec(0).at8(0L), 1); Assert.assertEquals(res.vec(1).at8(0L), 3); Assert.assertEquals(res.vec(2).at8(0L), 6); Assert.assertEquals(res.vec(3).at8(0L), 10); val = Rapids.exec("(cumsum $fr 0)", sess); Assert.assertTrue(val instanceof ValFrame); res = Scope.track(val.getFrame()); Assert.assertEquals(res.vec(0).at8(1L), 2); Assert.assertEquals(res.vec(1).at8(1L), 4); Assert.assertEquals(res.vec(2).at8(1L), 6); Assert.assertEquals(res.vec(3).at8(1L), 8); val = Rapids.exec("(cummax $fr 1)", sess); Assert.assertTrue(val instanceof ValFrame); res = Scope.track(val.getFrame()); Assert.assertEquals(res.vec(0).at8(0L), 1); Assert.assertEquals(res.vec(1).at8(0L), 2); Assert.assertEquals(res.vec(2).at8(0L), 3); Assert.assertEquals(res.vec(3).at8(0L), 4); } finally { Scope.exit(); } } }