function testProduct3() { $actual = CRM_Utils_Array::product(array('dim1' => array('a', 'b'), 'dim2' => array('alpha', 'beta'), 'dim3' => array('one', 'two')), array('base data' => 1)); $this->assertEquals(array(array('base data' => 1, 'dim1' => 'a', 'dim2' => 'alpha', 'dim3' => 'one'), array('base data' => 1, 'dim1' => 'a', 'dim2' => 'alpha', 'dim3' => 'two'), array('base data' => 1, 'dim1' => 'a', 'dim2' => 'beta', 'dim3' => 'one'), array('base data' => 1, 'dim1' => 'a', 'dim2' => 'beta', 'dim3' => 'two'), array('base data' => 1, 'dim1' => 'b', 'dim2' => 'alpha', 'dim3' => 'one'), array('base data' => 1, 'dim1' => 'b', 'dim2' => 'alpha', 'dim3' => 'two'), array('base data' => 1, 'dim1' => 'b', 'dim2' => 'beta', 'dim3' => 'one'), array('base data' => 1, 'dim1' => 'b', 'dim2' => 'beta', 'dim3' => 'two')), $actual); }