@Test
public void testTopologicalSort2() {

	try {
		JobVertex source1 = new JobVertex("source1");
		JobVertex source2 = new JobVertex("source2");
		JobVertex root = new JobVertex("root");
		JobVertex l11 = new JobVertex("layer 1 - 1");
		JobVertex l12 = new JobVertex("layer 1 - 2");
		JobVertex l13 = new JobVertex("layer 1 - 3");
		JobVertex l2 = new JobVertex("layer 2");
		
		root.connectNewDataSetAsInput(l13, DistributionPattern.POINTWISE);
		root.connectNewDataSetAsInput(source2, DistributionPattern.POINTWISE);
		root.connectNewDataSetAsInput(l2, DistributionPattern.POINTWISE);
		
		l2.connectNewDataSetAsInput(l11, DistributionPattern.POINTWISE);
		l2.connectNewDataSetAsInput(l12, DistributionPattern.POINTWISE);
		
		l11.connectNewDataSetAsInput(source1, DistributionPattern.POINTWISE);
		
		l12.connectNewDataSetAsInput(source1, DistributionPattern.POINTWISE);
		l12.connectNewDataSetAsInput(source2, DistributionPattern.POINTWISE);
		
		l13.connectNewDataSetAsInput(source2, DistributionPattern.POINTWISE);
		
		JobGraph graph = new JobGraph("TestGraph", source1, source2, root, l11, l13, l12, l2);
		List<JobVertex> sorted = graph.getVerticesSortedTopologicallyFromSources();
		
		assertEquals(7,  sorted.size());
		
		assertBefore(source1, root, sorted);
		assertBefore(source2, root, sorted);
		assertBefore(l11, root, sorted);
		assertBefore(l12, root, sorted);
		assertBefore(l13, root, sorted);
		assertBefore(l2, root, sorted);
		
		assertBefore(l11, l2, sorted);
		assertBefore(l12, l2, sorted);
		assertBefore(l2, root, sorted);
		
		assertBefore(source1, l2, sorted);
		assertBefore(source2, l2, sorted);
		
		assertBefore(source2, l13, sorted);
	}
	catch (Exception e) {
		e.printStackTrace();
		fail(e.getMessage());
	}
}