package org.genedb.web.gui; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; import org.apache.log4j.PropertyConfigurator; import org.junit.Before; import org.junit.Test; import java.net.URL; public class DiagramLayoutTest { @Before public void setUpLogging() { String log4jprops = "/log4j.test.properties"; URL url = this.getClass().getResource(log4jprops); System.out.printf("Configuring Log4J from '%s'\n", url); PropertyConfigurator.configure(url); } @Test public void simpleFindFirstFit() { DiagramLayout layout = new DiagramLayout(); assertEquals(1, layout.chooseTrack(0, 10, 1)); } @Test public void tracksAreFilled() { DiagramLayout layout = new DiagramLayout(); layout.addBlock(0, 10, 1); assertTrue(layout.filledTracksAtPosition(5).get(1)); assertTrue(layout.filledTracksAtPosition(0).get(1)); assertTrue(layout.filledTracksAtPosition(10).get(1)); } @Test public void oneTrackLayout() { DiagramLayout layout = new DiagramLayout(); assertEquals(1, layout.addBlock(0, 10, 1)); assertEquals(2, layout.addBlock(10, 20, 1)); assertEquals(1, layout.addBlock(20, 30, 1)); assertEquals(2, layout.addBlock(30, 40, 1)); assertEquals(2, layout.addBlock(2, 3, 1)); assertEquals(3, layout.addBlock(25, 35, 1)); } @Test public void anotherOneTrackLayout() { /* ---- ---- * ---- ---- ---- */ DiagramLayout layout = new DiagramLayout(); assertEquals(1, layout.addBlock(1, 5, 1)); assertEquals(1, layout.addBlock(10, 14, 1)); assertEquals(2, layout.addBlock(4, 8, 1)); assertEquals(3, layout.addBlock(7, 11, 1)); assertEquals(2, layout.addBlock(13, 17, 1)); assertEquals(1, layout.addBlock(100, 120, 1)); assertEquals(2, layout.addBlock(100, 110, 1)); assertEquals(3, layout.addBlock(100, 120, 1)); assertEquals(2, layout.addBlock(115, 125, 1)); } /** * This test is based on the IPR001680 domains of PFI0290c. */ @Test public void complexOneTrackLayout() { DiagramLayout layout = new DiagramLayout(); assertEquals(1, layout.addBlock(3, 43, 1)); assertEquals(2, layout.addBlock(10, 271, 1)); assertEquals(1, layout.addBlock(45, 85, 1)); assertEquals(3, layout.addBlock(58, 85, 1)); assertEquals(1, layout.addBlock(87, 127, 1)); assertEquals(3, layout.addBlock(88, 127, 1)); assertEquals(4, layout.addBlock(94, 130, 1)); assertEquals(5, layout.addBlock(94, 128, 1)); assertEquals(1, layout.addBlock(130, 171, 1)); assertEquals(3, layout.addBlock(131, 171, 1)); assertEquals(4, layout.addBlock(137, 180, 1)); assertEquals(5, layout.addBlock(137, 172, 1)); assertEquals(6, layout.addBlock(157, 172, 1)); assertEquals(1, layout.addBlock(178, 220, 1)); assertEquals(3, layout.addBlock(179, 220, 1)); assertEquals(4, layout.addBlock(184, 221, 1)); assertEquals(5, layout.addBlock(185, 229, 1)); assertEquals(6, layout.addBlock(206, 221, 1)); assertEquals(1, layout.addBlock(222, 262, 1)); assertEquals(3, layout.addBlock(223, 262, 1)); assertEquals(4, layout.addBlock(229, 262, 1)); assertEquals(6, layout.addBlock(229, 261, 1)); assertEquals(5, layout.addBlock(248, 263, 1)); assertEquals(7, layout.addBlock(248, 263, 1)); } @Test public void edgeCases() { DiagramLayout layout = new DiagramLayout(); assertEquals(1, layout.addBlock(10, 20, 1)); assertEquals(2, layout.addBlock(20, 30, 1)); assertEquals(2, layout.addBlock(0, 10, 1)); } @Test public void multiTrackLayout() { DiagramLayout layout = new DiagramLayout(); assertEquals(1, layout.addBlock(1, 14, 2)); assertEquals(3, layout.addBlock(10, 20, 2)); assertEquals(5, layout.addBlock(14, 16, 20)); } }