public function testSymmetricDifference(array $A, array $B, array $diff, Set $R)
{
$setA = new Set($A);
$setB = new Set($B);
$expected = new Set($diff);
$difference = $setA->symmetricDifference($setB);
$difference_array = $difference->asArray();
$this->assertEquals($R, $difference);
$this->assertEquals($expected, $difference);
$this->assertEquals(count($diff), count($difference));
foreach ($diff as $member) {
$this->assertArrayHasKey("{$member}", $difference_array);
}
foreach ($diff as $_ => $value) {
if ($value instanceof Set) {
$this->assertEquals($value, $difference_array["{$value}"]);
} else {
$this->assertContains("{$value}", $difference_array);
}
}
}