Merge pull request #16491 from mfb/undefined-index
[civicrm-core.git] / tests / phpunit / CRM / Utils / ArrayTest.php
index 212b523ceb49d8b86bf5bf36bec942d785557805..7403576c5fb6aab2a96ecfba5be490f597b8526b 100644 (file)
@@ -7,41 +7,41 @@
 class CRM_Utils_ArrayTest extends CiviUnitTestCase {
 
   public function testIndexArray() {
-    $inputs = array();
-    $inputs[] = array(
+    $inputs = [];
+    $inputs[] = [
       'lang' => 'en',
       'msgid' => 'greeting',
       'familiar' => FALSE,
       'value' => 'Hello',
-    );
-    $inputs[] = array(
+    ];
+    $inputs[] = [
       'lang' => 'en',
       'msgid' => 'parting',
       'value' => 'Goodbye',
-    );
-    $inputs[] = array(
+    ];
+    $inputs[] = [
       'lang' => 'fr',
       'msgid' => 'greeting',
       'value' => 'Bon jour',
-    );
-    $inputs[] = array(
+    ];
+    $inputs[] = [
       'lang' => 'fr',
       'msgid' => 'parting',
       'value' => 'Au revoir',
-    );
-    $inputs[] = array(
+    ];
+    $inputs[] = [
       'lang' => 'en',
       'msgid' => 'greeting',
       'familiar' => TRUE,
       'value' => 'Hey',
-    );
-    $inputs[] = array(
+    ];
+    $inputs[] = [
       'msgid' => 'greeting',
       'familiar' => TRUE,
       'value' => 'Universal greeting',
-    );
+    ];
 
-    $byLangMsgid = CRM_Utils_Array::index(array('lang', 'msgid'), $inputs);
+    $byLangMsgid = CRM_Utils_Array::index(['lang', 'msgid'], $inputs);
     $this->assertEquals($inputs[4], $byLangMsgid['en']['greeting']);
     $this->assertEquals($inputs[1], $byLangMsgid['en']['parting']);
     $this->assertEquals($inputs[2], $byLangMsgid['fr']['greeting']);
@@ -50,157 +50,157 @@ class CRM_Utils_ArrayTest extends CiviUnitTestCase {
   }
 
   public function testCollect() {
-    $arr = array(
-      array('catWord' => 'cat', 'dogWord' => 'dog'),
-      array('catWord' => 'chat', 'dogWord' => 'chien'),
-      array('catWord' => 'gato'),
-    );
-    $expected = array('cat', 'chat', 'gato');
+    $arr = [
+      ['catWord' => 'cat', 'dogWord' => 'dog'],
+      ['catWord' => 'chat', 'dogWord' => 'chien'],
+      ['catWord' => 'gato'],
+    ];
+    $expected = ['cat', 'chat', 'gato'];
     $this->assertEquals($expected, CRM_Utils_Array::collect('catWord', $arr));
 
-    $arr = array();
-    $arr['en'] = (object) array('catWord' => 'cat', 'dogWord' => 'dog');
-    $arr['fr'] = (object) array('catWord' => 'chat', 'dogWord' => 'chien');
-    $arr['es'] = (object) array('catWord' => 'gato');
-    $expected = array('en' => 'cat', 'fr' => 'chat', 'es' => 'gato');
+    $arr = [];
+    $arr['en'] = (object) ['catWord' => 'cat', 'dogWord' => 'dog'];
+    $arr['fr'] = (object) ['catWord' => 'chat', 'dogWord' => 'chien'];
+    $arr['es'] = (object) ['catWord' => 'gato'];
+    $expected = ['en' => 'cat', 'fr' => 'chat', 'es' => 'gato'];
     $this->assertEquals($expected, CRM_Utils_Array::collect('catWord', $arr));
   }
 
   public function testProduct0() {
     $actual = CRM_Utils_Array::product(
-      array(),
-      array('base data' => 1)
+      [],
+      ['base data' => 1]
     );
-    $this->assertEquals(array(
-      array('base data' => 1),
-    ), $actual);
+    $this->assertEquals([
+      ['base data' => 1],
+    ], $actual);
   }
 
   public function testProduct1() {
     $actual = CRM_Utils_Array::product(
-      array('dim1' => array('a', 'b')),
-      array('base data' => 1)
+      ['dim1' => ['a', 'b']],
+      ['base data' => 1]
     );
-    $this->assertEquals(array(
-      array('base data' => 1, 'dim1' => 'a'),
-      array('base data' => 1, 'dim1' => 'b'),
-    ), $actual);
+    $this->assertEquals([
+      ['base data' => 1, 'dim1' => 'a'],
+      ['base data' => 1, 'dim1' => 'b'],
+    ], $actual);
   }
 
   public function testProduct3() {
     $actual = CRM_Utils_Array::product(
-      array('dim1' => array('a', 'b'), 'dim2' => array('alpha', 'beta'), 'dim3' => array('one', 'two')),
-      array('base data' => 1)
+      ['dim1' => ['a', 'b'], 'dim2' => ['alpha', 'beta'], 'dim3' => ['one', 'two']],
+      ['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);
+    $this->assertEquals([
+      ['base data' => 1, 'dim1' => 'a', 'dim2' => 'alpha', 'dim3' => 'one'],
+      ['base data' => 1, 'dim1' => 'a', 'dim2' => 'alpha', 'dim3' => 'two'],
+      ['base data' => 1, 'dim1' => 'a', 'dim2' => 'beta', 'dim3' => 'one'],
+      ['base data' => 1, 'dim1' => 'a', 'dim2' => 'beta', 'dim3' => 'two'],
+      ['base data' => 1, 'dim1' => 'b', 'dim2' => 'alpha', 'dim3' => 'one'],
+      ['base data' => 1, 'dim1' => 'b', 'dim2' => 'alpha', 'dim3' => 'two'],
+      ['base data' => 1, 'dim1' => 'b', 'dim2' => 'beta', 'dim3' => 'one'],
+      ['base data' => 1, 'dim1' => 'b', 'dim2' => 'beta', 'dim3' => 'two'],
+    ], $actual);
   }
 
   public 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')));
+    $this->assertTrue(CRM_Utils_Array::isSubset([], []));
+    $this->assertTrue(CRM_Utils_Array::isSubset(['a'], ['a']));
+    $this->assertTrue(CRM_Utils_Array::isSubset(['a'], ['b', 'a', 'c']));
+    $this->assertTrue(CRM_Utils_Array::isSubset(['b', 'd'], ['a', 'b', 'c', 'd']));
+    $this->assertFalse(CRM_Utils_Array::isSubset(['a'], []));
+    $this->assertFalse(CRM_Utils_Array::isSubset(['a'], ['b']));
+    $this->assertFalse(CRM_Utils_Array::isSubset(['a'], ['b', 'c', 'd']));
   }
 
   public function testRemove() {
-    $data = array(
+    $data = [
       'one' => 1,
       'two' => 2,
       'three' => 3,
       'four' => 4,
       'five' => 5,
       'six' => 6,
-    );
-    CRM_Utils_Array::remove($data, 'one', 'two', array('three', 'four'), 'five');
-    $this->assertEquals($data, array('six' => 6));
+    ];
+    CRM_Utils_Array::remove($data, 'one', 'two', ['three', 'four'], 'five');
+    $this->assertEquals($data, ['six' => 6]);
   }
 
   public function testGetSetPathParts() {
-    $arr = array(
+    $arr = [
       'one' => '1',
-      'two' => array(
+      'two' => [
         'half' => 2,
-      ),
-    );
-    $this->assertEquals('1', CRM_Utils_Array::pathGet($arr, array('one')));
-    $this->assertEquals('2', CRM_Utils_Array::pathGet($arr, array('two', 'half')));
-    $this->assertEquals(NULL, CRM_Utils_Array::pathGet($arr, array('zoo', 'half')));
-    CRM_Utils_Array::pathSet($arr, array('zoo', 'half'), '3');
-    $this->assertEquals(3, CRM_Utils_Array::pathGet($arr, array('zoo', 'half')));
+      ],
+    ];
+    $this->assertEquals('1', CRM_Utils_Array::pathGet($arr, ['one']));
+    $this->assertEquals('2', CRM_Utils_Array::pathGet($arr, ['two', 'half']));
+    $this->assertEquals(NULL, CRM_Utils_Array::pathGet($arr, ['zoo', 'half']));
+    CRM_Utils_Array::pathSet($arr, ['zoo', 'half'], '3');
+    $this->assertEquals(3, CRM_Utils_Array::pathGet($arr, ['zoo', 'half']));
     $this->assertEquals(3, $arr['zoo']['half']);
   }
 
   public function getSortExamples() {
-    $red = array('label' => 'Red', 'id' => 1, 'weight' => '90');
-    $orange = array('label' => 'Orange', 'id' => 2, 'weight' => '70');
-    $yellow = array('label' => 'Yellow', 'id' => 3, 'weight' => '10');
-    $green = array('label' => 'Green', 'id' => 4, 'weight' => '70');
-    $blue = array('label' => 'Blue', 'id' => 5, 'weight' => '70');
+    $red = ['label' => 'Red', 'id' => 1, 'weight' => '90'];
+    $orange = ['label' => 'Orange', 'id' => 2, 'weight' => '70'];
+    $yellow = ['label' => 'Yellow', 'id' => 3, 'weight' => '10'];
+    $green = ['label' => 'Green', 'id' => 4, 'weight' => '70'];
+    $blue = ['label' => 'Blue', 'id' => 5, 'weight' => '70'];
 
-    $examples = array();
-    $examples[] = array(
-      array(
+    $examples = [];
+    $examples[] = [
+      [
         'r' => $red,
         'y' => $yellow,
         'g' => $green,
         'o' => $orange,
         'b' => $blue,
-      ),
+      ],
       'id',
-      array(
+      [
         'r' => $red,
         'o' => $orange,
         'y' => $yellow,
         'g' => $green,
         'b' => $blue,
-      ),
-    );
-    $examples[] = array(
-      array(
+      ],
+    ];
+    $examples[] = [
+      [
         'r' => $red,
         'y' => $yellow,
         'g' => $green,
         'o' => $orange,
         'b' => $blue,
-      ),
+      ],
       'label',
-      array(
+      [
         'b' => $blue,
         'g' => $green,
         'o' => $orange,
         'r' => $red,
         'y' => $yellow,
-      ),
-    );
-    $examples[] = array(
-      array(
+      ],
+    ];
+    $examples[] = [
+      [
         'r' => $red,
         'g' => $green,
         'y' => $yellow,
         'o' => $orange,
         'b' => $blue,
-      ),
-      array('weight', 'id'),
-      array(
+      ],
+      ['weight', 'id'],
+      [
         'y' => $yellow,
         'o' => $orange,
         'g' => $green,
         'b' => $blue,
         'r' => $red,
-      ),
-    );
+      ],
+    ];
 
     return $examples;
   }
@@ -279,7 +279,7 @@ class CRM_Utils_ArrayTest extends CiviUnitTestCase {
         [NULL, ['wrong' => NULL, 'right' => ['foo' => 1, 'bar' => 2]]], [1, 'wrong'], 'nada', 'nada',
       ],
       [
-        [NULL, ['wrong' => NULL, 'right' => ['foo' => 1, 'bar' => 2]]], [1, 'right'], NULL, ['foo' => 1, 'bar' => 2]
+        [NULL, ['wrong' => NULL, 'right' => ['foo' => 1, 'bar' => 2]]], [1, 'right'], NULL, ['foo' => 1, 'bar' => 2],
       ],
       [
         [NULL, ['wrong' => NULL, 'right' => ['foo' => 1, 'bar' => 2]]], [1, 'right', 'foo'], NULL, 1,
@@ -290,6 +290,7 @@ class CRM_Utils_ArrayTest extends CiviUnitTestCase {
   /**
    * @param $array
    * @param $path
+   * @param $default
    * @param $expected
    * @dataProvider getRecursiveValueExamples
    */
@@ -318,6 +319,7 @@ class CRM_Utils_ArrayTest extends CiviUnitTestCase {
   /**
    * Test the build recursive function.
    *
+   * @param $source
    * @param $path
    * @param $expected
    *
@@ -339,13 +341,13 @@ class CRM_Utils_ArrayTest extends CiviUnitTestCase {
         '2' => 'boz',
       ],
       'my_complex' => [
-         'dog' => 'woof',
-         'asdf' => [
-           'my_zero' => 0,
-           'my_int' => 1,
-           'my_null' => NULL,
-           'my_empty' => '',
-         ],
+        'dog' => 'woof',
+        'asdf' => [
+          'my_zero' => 0,
+          'my_int' => 1,
+          'my_null' => NULL,
+          'my_empty' => '',
+        ],
       ],
       'my_simple' => 999,
     ];