public function testWithersReturnANewModifiedInstance()
{
$parameters = new ParameterBag();
$fixtures = new FixtureBag();
$objects = new ObjectBag();
$set = new ResolvedFixtureSet($parameters, $fixtures, $objects);
$newParameters = new ParameterBag(['foo' => 'bar']);
$newSet = $set->withParameters($newParameters);
$this->assertEquals(new ResolvedFixtureSet($parameters, $fixtures, $objects), $set);
$this->assertEquals(new ResolvedFixtureSet($newParameters, $fixtures, $objects), $newSet);
$newFixtures = new FixtureBag(['foo' => new DummyFixture('foo')]);
$newSet = $set->withFixtures($newFixtures);
$this->assertEquals(new ResolvedFixtureSet($parameters, $fixtures, $objects), $set);
$this->assertEquals(new ResolvedFixtureSet($parameters, $newFixtures, $objects), $newSet);
$newObjects = new ObjectBag(['foo' => new \stdClass()]);
$newSet = $set->withObjects($newObjects);
$this->assertEquals(new ResolvedFixtureSet($parameters, $fixtures, $objects), $set);
$this->assertEquals(new ResolvedFixtureSet($parameters, $fixtures, $newObjects), $newSet);
}