public function testMerge()
 {
     $messageWrite = new XliffMessage('foo');
     $messageWrite->setDesc('foo');
     $messageWrite->setMeaning('foo');
     $messageWrite->addSource($s1 = $this->getMock('JMS\\TranslationBundle\\Model\\SourceInterface'));
     $messageRead = new XliffMessage('foo');
     $messageRead->setDesc('bar');
     $messageRead->setApproved(true);
     $messageRead->setState(XliffMessage::STATE_TRANSLATED);
     $messageRead->addSource($s2 = $this->getMock('JMS\\TranslationBundle\\Model\\SourceInterface'));
     $messageRead2 = new Message('foo');
     $messageRead2->setDesc('bar');
     $messageRead2->addSource($s2);
     $message1 = clone $messageWrite;
     $message2 = clone $messageRead;
     $message1->merge($message2);
     $this->assertEquals('bar', $message1->getDesc());
     $this->assertEquals('foo', $message1->getMeaning());
     $this->assertSame(array($s1, $s2), $message1->getSources());
     $this->assertTrue($message1->isApproved());
     $this->assertEquals(XliffMessage::STATE_TRANSLATED, $message1->getState());
     $message3 = clone $messageWrite;
     $message3->setApproved(true);
     $message3->setState(XliffMessage::STATE_TRANSLATED);
     $message4 = clone $messageRead;
     $message4->setApproved(false);
     $message4->setState(XliffMessage::STATE_NONE);
     $message3->merge($message4);
     $this->assertEquals('foo', $message3->getDesc());
     $this->assertTrue($message3->isApproved());
     $this->assertEquals(XliffMessage::STATE_TRANSLATED, $message3->getState());
     $message5 = clone $messageWrite;
     $message6 = clone $messageRead2;
     $message5->merge($message6);
     $this->assertEquals('bar', $message5->getDesc());
     $this->assertEquals('foo', $message5->getMeaning());
     $this->assertSame(array($s1, $s2), $message5->getSources());
     $this->assertFalse($message5->isApproved());
     $this->assertEquals(XliffMessage::STATE_NEW, $message5->getState());
     $message7 = clone $messageWrite;
     $message7->setApproved(true);
     $message7->setState(XliffMessage::STATE_TRANSLATED);
     $message8 = clone $messageRead2;
     $message7->merge($message8);
     $this->assertEquals('foo', $message7->getDesc());
     $this->assertTrue($message7->isApproved());
     $this->assertEquals(XliffMessage::STATE_TRANSLATED, $message7->getState());
 }