@Test
    public void testConcatReduce8() throws ParseException {
        Tensor x = evaluate("tensor(d0[2]):[3, 4]");
        Tensor y = evaluate("tensor(d0[2]):[1, 2]");
        Tensor z = evaluate("tensor(d0[2]):[5, 6]");
        assertEval("max", x, y, z, evaluate("tensor(d0[2]):[5, 6]"));
        assertEval("min", x, y, z, evaluate("tensor(d0[2]):[1, 2]"));
        assertEval("mean", x, y, z, evaluate("tensor(d0[2]):[3, 4]"));

        x = evaluate("random(d0[2],d1[3],d2[4])");
        y = evaluate("random(d0[2],d1[3],d2[4])");
        z = evaluate("random(d0[2],d1[3],d2[4])");
        assertEval("max", x, y, z, evaluate("reduce(concat(concat(x, y, tmp), z, tmp), max, tmp)", x, y, z));
        assertEval("min", x, y, z, evaluate("reduce(concat(concat(x, y, tmp), z, tmp), min, tmp)", x, y, z));
        assertEval("mean", x, y, z, evaluate("reduce(concat(concat(x, y, tmp), z, tmp), avg, tmp)", x, y, z));

        // broadcasting
        x = evaluate("random(d0[2],d1[3],d2[4])");
        y = evaluate("random(d0[3],d1[4])");
        z = evaluate("random(d0[4])");
        assertEval("max", x, y, z, evaluate("reduce(concat(concat(x, rename(y, (d0,d1), (d1,d2)), tmp), rename(z, d0, d2), tmp), max, tmp)", x, y, z));
        assertEval("min", x, y, z, evaluate("reduce(concat(concat(x, rename(y, (d0,d1), (d1,d2)), tmp), rename(z, d0, d2), tmp), min, tmp)", x, y, z));
        assertEval("mean", x, y, z, evaluate("reduce(concat(concat(x, rename(y, (d0,d1), (d1,d2)), tmp), rename(z, d0, d2), tmp), avg, tmp)", x, y, z));
    }
Unit tests for ONNX operators. The number on the test reflects the minimum
opset number for the operations tested.

@author lesters
model-integration/src/test/java/ai/vespa/rankingexpression/importer/onnx/OnnxOperationsTestCase.java