@Test public void testMergeableMethod() { Tweet obj1 = dod.getSpecificTweet(1); Tweet obj2 = dod.getSpecificTweet(2); // Ensure we've got no merge at start. Assert.assertNull(obj1.getMergeResult()); Assert.assertNull(obj2.getMergeResult()); // Prepare values. obj1.setAuthor("lbroudoux"); obj2.setAuthor("someone"); obj1.setContent(null); obj2.setContent("Someone else content"); obj1.merge(); obj2.merge(); // Merge and check references tracking. Tweet merge = obj1.merge(obj2); Assert.assertNotNull(merge.getMergeMainReference()); Assert.assertEquals(obj1, merge.getMergeMainReference()); Assert.assertNotNull(merge.getMergeSecondReference()); Assert.assertEquals(obj2, merge.getMergeSecondReference()); Assert.assertNotNull(obj1.getMergeResult()); Assert.assertEquals(merge, obj1.getMergeResult()); Assert.assertNotNull(obj2.getMergeResult()); Assert.assertEquals(merge, obj2.getMergeResult()); // Check verification methods. Assert.assertTrue(merge.isMergeResult()); Assert.assertFalse(obj1.isMergeResult()); Assert.assertFalse(obj2.isMergeResult()); Assert.assertFalse(merge.wasMerged()); Assert.assertTrue(obj1.wasMerged()); Assert.assertTrue(obj2.wasMerged()); // Check value merging. Assert.assertEquals("lbroudoux", merge.getAuthor()); Assert.assertEquals("Someone else content", merge.getContent()); }