+ function testProduct0() {
+ $actual = CRM_Utils_Array::product(
+ array(),
+ array('base data' => 1)
+ );
+ $this->assertEquals(array(
+ array('base data' => 1),
+ ), $actual);
+ }
+
+ function testProduct1() {
+ $actual = CRM_Utils_Array::product(
+ array('dim1' => array('a', 'b')),
+ array('base data' => 1)
+ );
+ $this->assertEquals(array(
+ array('base data' => 1, 'dim1' => 'a'),
+ array('base data' => 1, 'dim1' => 'b'),
+ ), $actual);
+ }
+
+ 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);
+ }
+
+ function testIsSubset() {
+ $this->assertTrue(CRM_Utils_Array::isSubset(array(), array()));
+ $this->assertTrue(CRM_Utils_Array::isSubset(array('a'), array('a')));
+ $this->assertTrue(CRM_Utils_Array::isSubset(array('a'), array('b','a','c')));
+ $this->assertTrue(CRM_Utils_Array::isSubset(array('b','d'), array('a','b','c','d')));
+ $this->assertFalse(CRM_Utils_Array::isSubset(array('a'), array()));
+ $this->assertFalse(CRM_Utils_Array::isSubset(array('a'), array('b')));
+ $this->assertFalse(CRM_Utils_Array::isSubset(array('a'), array('b','c','d')));
+ }