Example #1
0
 /**
  * @dataProvider recursionProvider
  */
 public function testRecursion(array $from, array $to, $expected)
 {
     $mapDiffer = new MapDiffer(true);
     $listDiffer = new ListDiffer();
     $diff = new Diff($mapDiffer->doDiff($from, $to));
     foreach ($expected as $key => &$value) {
         if ($value === 'list' || $value === 'map') {
             $differ = $value === 'list' ? $listDiffer : $mapDiffer;
             $value = new Diff($differ->doDiff(array_key_exists($key, $from) ? $from[$key] : array(), array_key_exists($key, $to) ? $to[$key] : array()), $value === 'map');
         }
     }
     $sorter = function ($a, $b) {
         $aa = serialize($a);
         $bb = serialize($b);
         if ($aa == $bb) {
             return 0;
         } else {
             return $aa > $bb ? -1 : 1;
         }
     };
     uasort($expected, $sorter);
     $diff->uasort($sorter);
     $actual = $diff->getArrayCopy();
     $this->assertEquals($expected, $actual);
 }