package edu.washington.escience.myria.operator; import static org.junit.Assert.assertEquals; import org.junit.Test; import edu.washington.escience.myria.DbException; import edu.washington.escience.myria.Schema; import edu.washington.escience.myria.storage.TupleBatch; import edu.washington.escience.myria.util.JoinTestUtils; import edu.washington.escience.myria.util.TestEnvVars; public class RightHashJoinTest { @Test public void testRightHashJoin() throws DbException { BatchTupleSource left = new BatchTupleSource(JoinTestUtils.leftInput); BatchTupleSource right = new BatchTupleSource(JoinTestUtils.rightInput); Operator join = new RightHashJoin(left, right, new int[] {0, 1, 2}, new int[] {1, 2, 0}); join.open(TestEnvVars.get()); assertEquals( Schema.merge(JoinTestUtils.leftSchema, JoinTestUtils.rightSchema), join.getSchema()); long count = 0; while (!join.eos()) { TupleBatch tb = join.nextReady(); if (tb == null) { continue; } count += tb.numTuples(); } join.close(); assertEquals(7L, count); } @Test(expected = IllegalStateException.class) public void testIncompatibleJoinKeys() throws DbException { BatchTupleSource left = new BatchTupleSource(JoinTestUtils.leftInput); BatchTupleSource right = new BatchTupleSource(JoinTestUtils.rightInput); Operator join = new RightHashJoin(left, right, new int[] {0}, new int[] {0}); join.open(TestEnvVars.get()); } }