@Test
public void testIsPredecessor() {

	// tests reflexivity
	String id = "[(0/1),(0/2),(0/4),(0/2)]";
	assertFalse(SplitHistory.parse(id)
			.isPredecessor(SplitHistory.parse(id)));
	assertFalse(SplitHistory.parse(id).isSuccessor(SplitHistory.parse(id)));
	id = "[(0/1),(1/2),(0/1234)]";
	assertFalse(SplitHistory.parse(id)
			.isPredecessor(SplitHistory.parse(id)));
	assertFalse(SplitHistory.parse(id).isSuccessor(SplitHistory.parse(id)));
	// tests also symmetry for the immediate parts
	String p1 = "[(0/1),(0/2),(1/3)]";
	String p2 = "[(0/1),(0/2),(2/3)]";
	assertTrue(SplitHistory.parse(p1).isPredecessor(SplitHistory.parse(p2)));
	assertFalse(SplitHistory.parse(p2)
			.isPredecessor(SplitHistory.parse(p1)));
	p1 = "[(0/1),(0/2),(2/3)]";
	p2 = "[(0/1),(1/2),(0/2),(0/4)]";
	assertTrue(SplitHistory.parse(p1).isPredecessor(SplitHistory.parse(p2)));
	assertFalse(SplitHistory.parse(p2)
			.isPredecessor(SplitHistory.parse(p1)));
	p1 = "[(0/1),(1/2),(0/2),(2/4)]";
	p2 = "[(0/1),(1/2),(0/2),(3/4),(0/3)]";
	assertTrue(SplitHistory.parse(p1).isPredecessor(SplitHistory.parse(p2)));
	assertFalse(SplitHistory.parse(p2)
			.isPredecessor(SplitHistory.parse(p1)));
	p1 = "[(0/1),(1/2),(0/2),(2/4)]";
	p2 = "[(0/1),(1/2),(0/2),(1/4),(0/3)]";
	assertFalse(SplitHistory.parse(p1)
			.isPredecessor(SplitHistory.parse(p2)));
	assertFalse(SplitHistory.parse(p2)
			.isPredecessor(SplitHistory.parse(p1)));
	p1 = "[(0/1),(1/2),(0/2),(2/4)]";
	p2 = "[(0/1),(1/2),(1/2),(0/4),(0/3)]";
	assertFalse(SplitHistory.parse(p1)
			.isPredecessor(SplitHistory.parse(p2)));
	assertFalse(SplitHistory.parse(p2)
			.isPredecessor(SplitHistory.parse(p1)));
	p1 = "[(0/1),(1/2),(0/2),(3/4),(2/3)]";
	p2 = "[(0/1),(1/2),(1/2)]";
	assertTrue(SplitHistory.parse(p1).isPredecessor(SplitHistory.parse(p2)));
	assertFalse(SplitHistory.parse(p2)
			.isPredecessor(SplitHistory.parse(p1)));
	p1 = "[(0/1)]";
	p2 = "[(0/1)]";
	assertFalse(SplitHistory.parse(p1)
			.isPredecessor(SplitHistory.parse(p2)));
	assertFalse(SplitHistory.parse(p2)
			.isPredecessor(SplitHistory.parse(p1)));
	p1 = "[(0/1),(0/2)]";
	p2 = "[(0/1),(0/2)]";
	assertFalse(SplitHistory.parse(p1)
			.isPredecessor(SplitHistory.parse(p2)));
	assertFalse(SplitHistory.parse(p2)
			.isPredecessor(SplitHistory.parse(p1)));
	p1 = "[(0/1),(0/2)]";
	p2 = "[(0/1),(0/2),(0/2)]";
	assertFalse(SplitHistory.parse(p1)
			.isPredecessor(SplitHistory.parse(p2)));
	assertFalse(SplitHistory.parse(p2)
			.isPredecessor(SplitHistory.parse(p1)));
}