add autogenerated comment blocks to tests dir
[civicrm-core.git] / tests / phpunit / CRM / Utils / ArrayTest.php
index 23ccaf1daef0de0f7907ddd30ba2d7277ec32b21..9f636714e33e388f72cacd348dfe0bafd1bfca49 100644 (file)
@@ -1,10 +1,6 @@
 <?php
 require_once 'CiviTest/CiviUnitTestCase.php';
 class CRM_Utils_ArrayTest extends CiviUnitTestCase {
-  //@todo make BAO enotice compliant  & remove the line below
-  // WARNING - NEVER COPY & PASTE $_eNoticeCompliant = FALSE
-  // new test classes should be compliant.
-  public $_eNoticeCompliant = FALSE;
   function testBreakReference() {
     // Get a reference and make a change
     $fooRef1 = self::returnByReference();
@@ -24,6 +20,9 @@ class CRM_Utils_ArrayTest extends CiviUnitTestCase {
     $this->assertEquals('privately-modified', $fooNonReference['foo']);
   }
 
+  /**
+   * @return null
+   */
   private function &returnByReference() {
     static $foo;
     if ($foo === NULL) {
@@ -37,7 +36,7 @@ class CRM_Utils_ArrayTest extends CiviUnitTestCase {
     $inputs[] = array(
       'lang' => 'en',
       'msgid' => 'greeting',
-      'familiar' => false,
+      'familiar' => FALSE,
       'value' => 'Hello'
     );
     $inputs[] = array(
@@ -58,15 +57,21 @@ class CRM_Utils_ArrayTest extends CiviUnitTestCase {
     $inputs[] = array(
       'lang' => 'en',
       'msgid' => 'greeting',
-      'familiar' => true,
+      'familiar' => TRUE,
       'value' => 'Hey'
     );
+    $inputs[] = array(
+      'msgid' => 'greeting',
+      'familiar' => TRUE,
+      'value' => 'Universal greeting'
+    );
 
     $byLangMsgid = CRM_Utils_Array::index(array('lang', 'msgid'), $inputs);
     $this->assertEquals($inputs[4], $byLangMsgid['en']['greeting']);
     $this->assertEquals($inputs[1], $byLangMsgid['en']['parting']);
     $this->assertEquals($inputs[2], $byLangMsgid['fr']['greeting']);
     $this->assertEquals($inputs[3], $byLangMsgid['fr']['parting']);
+    $this->assertEquals($inputs[5], $byLangMsgid[NULL]['greeting']);
   }
 
   function testCollect() {
@@ -86,4 +91,51 @@ class CRM_Utils_ArrayTest extends CiviUnitTestCase {
     $this->assertEquals($expected, CRM_Utils_Array::collect('catWord', $arr));
   }
 
+  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')));
+  }
 }