/**
  * Berechnet die Updates / Inserts / Deletes zwischen den beiden Collections
  *
  * wird keine $compareFunction angegeben, werden die Elemente der Collection als Objekte behandelt
  * wird keine $uniqueHashFunction angegeben werden diese mit spl_object_hash() gehashed
  * @return list($inserts, $updates, $deletes)
  */
 public function computeCUDSets(ArrayCollection $fromCollection, ArrayCollection $toCollection, $compareFunction = NULL, $uniqueHashFunction = NULL)
 {
     if (!isset($compareFunction)) {
         $compareFunction = ArrayCollection::COMPARE_OBJECTS;
     }
     return $fromCollection->computeCUDSets($toCollection, $compareFunction, $uniqueHashFunction);
 }
 /**
  * @group CUD
  */
 public function testComputeCUDSets()
 {
     $collection1 = new ArrayCollection();
     $collection1[] = $o10 = new CollectionObject(10);
     $collection1[] = $o20 = new CollectionObject(20);
     $collection1[] = $o30 = new CollectionObject(30);
     $collection1[] = $o40 = new CollectionObject(40);
     $collection1[] = $o50 = new CollectionObject(50);
     $collection1[] = $o2 = new CollectionObject(2);
     $collection1[] = $o1 = new CollectionObject(1);
     $collection1[] = $o3 = new CollectionObject(3);
     $collection2 = new ArrayCollection();
     $collection2[] = $o10;
     $collection2[] = $o40;
     $collection2[] = $o50;
     $collection2[] = $o2;
     $collection2[] = $o1;
     $collection2[] = $o3;
     $collection2[] = $o4 = new CollectionObject(4);
     $collection2[] = $o110 = new CollectionObject(110);
     $collection2[] = $o120 = new CollectionObject(120);
     $collection2[] = $o130 = new CollectionObject(130);
     $collection2[] = $o140 = new CollectionObject(140);
     $collection2[] = $o150 = new CollectionObject(150);
     $collection2[] = $o160 = new CollectionObject(160);
     $collection2[] = $o170 = new CollectionObject(170);
     $collection2[] = $o180 = new CollectionObject(180);
     $collection2[] = $o190 = new CollectionObject(190);
     $collection2[] = $o200 = new CollectionObject(200);
     list($inserts, $updates, $deletes) = $collection1->computeCUDSets($collection2, ArrayCollection::COMPARE_OBJECTS);
     $this->assertArrayEquals(array($o20, $o30), $deletes->toArray());
     $this->assertArrayEquals(array($o4, $o110, $o120, $o130, $o140, $o150, $o160, $o170, $o180, $o190, $o200), $inserts->toArray());
     $this->assertArrayEquals(array($o10, $o40, $o50, $o2, $o1, $o3), $updates->toArray());
 }