@Test public void () { Random rand = new Random(SEED); outputColumnVector = VectorizedRowGroupGenUtil.generate(, , BATCH_SIZE, rand); inputColumnVector1 = VectorizedRowGroupGenUtil.generate(, , BATCH_SIZE, rand); inputColumnVector2 = VectorizedRowGroupGenUtil.generate(, , BATCH_SIZE, rand); VectorizedRowBatch rowBatch = new VectorizedRowBatch(3, BATCH_SIZE); rowBatch.cols[0] = inputColumnVector1; rowBatch.cols[1] = inputColumnVector2; rowBatch.cols[2] = outputColumnVector; vectorExpression = new (0, 1, 2); vectorExpression.evaluate(rowBatch); assertEquals( "Output column vector repeating state does not match operand columns", (!inputColumnVector1.noNulls && inputColumnVector1.isRepeating) || (!inputColumnVector2.noNulls && inputColumnVector2.isRepeating) || inputColumnVector1.isRepeating && inputColumnVector2.isRepeating, outputColumnVector.isRepeating); assertEquals( "Output column vector no nulls state does not match operand columns", inputColumnVector1.noNulls && inputColumnVector2.noNulls, outputColumnVector.noNulls); //if repeating, only the first value matters if(!outputColumnVector.noNulls && !outputColumnVector.isRepeating) { for(int i = 0; i < BATCH_SIZE; i++) { //null vectors are safe to check, as they are always initialized to match the data vector assertEquals("Output vector doesn't match input vectors' is null state for index", inputColumnVector1.isNull[i] || inputColumnVector2.isNull[i], outputColumnVector.isNull[i]); } } }