diff vendor/dflydev/dot-access-data/tests/Dflydev/DotAccessData/UtilTest.php @ 0:c75dbcec494b

Initial commit from drush-created site
author Chris Cannam
date Thu, 05 Jul 2018 14:24:15 +0000
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vendor/dflydev/dot-access-data/tests/Dflydev/DotAccessData/UtilTest.php	Thu Jul 05 14:24:15 2018 +0000
@@ -0,0 +1,121 @@
+<?php
+
+/*
+ * This file is a part of dflydev/dot-access-data.
+ * 
+ * (c) Dragonfly Development Inc.
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Dflydev\DotAccessData;
+
+class UtilTest extends \PHPUnit_Framework_TestCase
+{
+    public function testIsAssoc()
+    {
+        $this->assertTrue(Util::isAssoc(array('a' => 'A',)));
+        $this->assertTrue(Util::isAssoc(array()));
+        $this->assertFalse(Util::isAssoc(array(1 => 'One',)));
+    }
+
+    /**
+     * @dataProvider mergeAssocArrayProvider
+     */
+    public function testMergeAssocArray($message, $to, $from, $clobber, $expectedResult)
+    {
+        $result = Util::mergeAssocArray($to, $from, $clobber);
+        $this->assertEquals($expectedResult, $result, $message);
+    }
+
+    public function mergeAssocArrayProvider()
+    {
+        return array(
+
+            array(
+                'Clobber should replace to value with from value for strings (shallow)',
+                // to
+                array('a' => 'A'),
+                // from
+                array('a' => 'B'),
+                // clobber
+                true,
+                // expected result
+                array('a' => 'B'),
+            ),
+
+            array(
+                'Clobber should replace to value with from value for strings (deep)',
+                // to
+                array('a' => array('b' => 'B',),),
+                // from
+                array('a' => array('b' => 'C',),),
+                // clobber
+                true,
+                // expected result
+                array('a' => array('b' => 'C',),),
+            ),
+
+            array(
+                'Clobber should  NOTreplace to value with from value for strings (shallow)',
+                // to
+                array('a' => 'A'),
+                // from
+                array('a' => 'B'),
+                // clobber
+                false,
+                // expected result
+                array('a' => 'A'),
+            ),
+
+            array(
+                'Clobber should NOT replace to value with from value for strings (deep)',
+                // to
+                array('a' => array('b' => 'B',),),
+                // from
+                array('a' => array('b' => 'C',),),
+                // clobber
+                false,
+                // expected result
+                array('a' => array('b' => 'B',),),
+            ),
+
+            array(
+                'Associative arrays should be combined',
+                // to
+                array('a' => array('b' => 'B',),),
+                // from
+                array('a' => array('c' => 'C',),),
+                // clobber
+                null,
+                // expected result
+                array('a' => array('b' => 'B', 'c' => 'C',),),
+            ),
+
+            array(
+                'Arrays should be replaced (with clobber enabled)',
+                // to
+                array('a' => array('b', 'c',)),
+                // from
+                array('a' => array('B', 'C',),),
+                // clobber
+                true,
+                // expected result
+                array('a' => array('B', 'C',),),
+            ),
+
+            array(
+                'Arrays should be NOT replaced (with clobber disabled)',
+                // to
+                array('a' => array('b', 'c',)),
+                // from
+                array('a' => array('B', 'C',),),
+                // clobber
+                false,
+                // expected result
+                array('a' => array('b', 'c',),),
+            ),
+        );
+    }
+}