public function testFirstClassMarshaller()
{
$user = new User();
$user->setFirstNameNickname('Malcolm');
$user->setLastName('Reynolds');
$user->setAddress(new Address('123 Waverly Way', 'New Haven', 'Insanity'));
$user->addContact(new CustomerContact('*****@*****.**'));
$user->addContact(new CustomerContact('*****@*****.**'));
$xml = $this->marshaller->marshalToString($user);
$dom = new \DOMDocument('1.0');
$dom->preserveWhiteSpace = false;
$dom->formatOutput = true;
$dom->loadXML($xml);
// print_r($dom->saveXML());
$otherUser = $this->marshaller->unmarshalFromString($xml);
// print_r($otherUser);
$this->assertInstanceOf('Doctrine\\Tests\\OXM\\Entities\\User', $otherUser);
$this->assertEquals('Malcolm', $otherUser->getFirstNameNickname());
$this->assertEquals('Reynolds', $otherUser->getLastName());
$this->assertEquals('123 Waverly Way', $otherUser->getAddress()->getStreet());
$this->assertEquals('New Haven', $otherUser->getAddress()->getCity());
$this->assertEquals('Insanity', $otherUser->getAddress()->getState());
$this->assertEquals(2, count($otherUser->getContacts()));
}