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()); }