X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=test%2Fjalview%2Fgui%2FSeqCanvasTest.java;h=aa50301f215b39d30dbc83773f62bb9613ab9307;hb=cc36e0cc33145e21186643a28b975be1a01d2d55;hp=bcb1cfd7f0c392aebc2ee56bcb2faf0e769282b2;hpb=72ac4a5ecabebe8c96feb08c32e5ce1adccc7d46;p=jalview.git diff --git a/test/jalview/gui/SeqCanvasTest.java b/test/jalview/gui/SeqCanvasTest.java index bcb1cfd..aa50301 100644 --- a/test/jalview/gui/SeqCanvasTest.java +++ b/test/jalview/gui/SeqCanvasTest.java @@ -20,21 +20,31 @@ */ package jalview.gui; +import java.awt.Font; +import java.awt.FontMetrics; + +import org.testng.annotations.BeforeMethod; +import org.testng.annotations.Test; import static org.testng.Assert.assertEquals; +import static org.testng.Assert.assertFalse; +import static org.testng.Assert.assertNotNull; +import static org.testng.Assert.assertNull; +import static org.testng.Assert.assertTrue; +import jalview.bin.Cache; import jalview.datamodel.AlignmentI; +import jalview.datamodel.SearchResults; +import jalview.datamodel.SearchResultsI; +import jalview.io.DataSourceType; import jalview.io.DataSourceType; import jalview.io.FileLoader; -import java.awt.Font; -import java.awt.FontMetrics; - -import org.testng.annotations.Test; - import junit.extensions.PA; public class SeqCanvasTest { + private AlignFrame af; + /** * Test the method that computes wrapped width in residues, height of wrapped * widths in pixels, and the number of widths visible @@ -42,8 +52,6 @@ public class SeqCanvasTest @Test(groups = "Functional") public void testCalculateWrappedGeometry_noAnnotations() { - AlignFrame af = new FileLoader().LoadFileWaitTillLoaded( - "examples/uniref50.fa", DataSourceType.FILE); AlignViewport av = af.getViewport(); AlignmentI al = av.getAlignment(); assertEquals(al.getWidth(), 157); @@ -77,13 +85,15 @@ public class SeqCanvasTest int canvasWidth = 400; int canvasHeight = 300; int residueColumns = (canvasWidth - 2 * labelWidth) / charWidth; - int wrappedWidth = testee.calculateWrappedGeometry(canvasWidth, canvasHeight); + int wrappedWidth = testee.calculateWrappedGeometry(canvasWidth, + canvasHeight); assertEquals(wrappedWidth, residueColumns); assertEquals(PA.getValue(testee, "labelWidthWest"), labelWidth); assertEquals(PA.getValue(testee, "labelWidthEast"), labelWidth); assertEquals(PA.getValue(testee, "wrappedSpaceAboveAlignment"), 2 * charHeight); - int repeatingHeight = (int) PA.getValue(testee, "wrappedRepeatHeightPx"); + int repeatingHeight = (int) PA.getValue(testee, + "wrappedRepeatHeightPx"); assertEquals(repeatingHeight, charHeight * (2 + al.getHeight())); assertEquals(PA.getValue(testee, "wrappedVisibleWidths"), 1); @@ -97,8 +107,8 @@ public class SeqCanvasTest assertEquals(PA.getValue(testee, "wrappedVisibleWidths"), 3); /* - * reduce canvas height by 1 pixel - should not be enough height - * to draw 3 widths + * reduce canvas height by 1 pixel + * - should not be enough height to draw 3 widths */ canvasHeight -= 1; testee.calculateWrappedGeometry(canvasWidth, canvasHeight); @@ -170,11 +180,11 @@ public class SeqCanvasTest canvasWidth += 8; wrappedWidth = testee.calculateWrappedGeometry(canvasWidth, canvasHeight); - assertEquals(wrappedWidth, 27); + assertEquals(wrappedWidth, 27); // 8px not enough canvasWidth += 1; wrappedWidth = testee.calculateWrappedGeometry(canvasWidth, canvasHeight); - assertEquals(wrappedWidth, 28); + assertEquals(wrappedWidth, 28); // 9px is enough /* * now West but not East scale - lose 39 pixels or 4 columns @@ -190,11 +200,11 @@ public class SeqCanvasTest canvasWidth += 2; wrappedWidth = testee.calculateWrappedGeometry(canvasWidth, canvasHeight); - assertEquals(wrappedWidth, 24); + assertEquals(wrappedWidth, 24); // 2px not enough canvasWidth += 1; wrappedWidth = testee.calculateWrappedGeometry(canvasWidth, canvasHeight); - assertEquals(wrappedWidth, 25); + assertEquals(wrappedWidth, 25); // 3px is enough /* * turn off scales left and right, make width exactly 157 columns @@ -212,13 +222,11 @@ public class SeqCanvasTest @Test(groups = "Functional") public void testCalculateWrappedGeometry_withAnnotations() { - AlignFrame af = new FileLoader().LoadFileWaitTillLoaded( - "examples/uniref50.fa", DataSourceType.FILE); AlignViewport av = af.getViewport(); AlignmentI al = av.getAlignment(); assertEquals(al.getWidth(), 157); assertEquals(al.getHeight(), 15); - + av.setWrapAlignment(true); av.getRanges().setStartEndSeq(0, 14); av.setFont(new Font("SansSerif", Font.PLAIN, 14), true); @@ -226,9 +234,9 @@ public class SeqCanvasTest int charWidth = av.getCharWidth(); assertEquals(charHeight, 17); assertEquals(charWidth, 12); - + SeqCanvas testee = af.alignPanel.getSeqPanel().seqCanvas; - + /* * first with scales above, left, right */ @@ -248,26 +256,29 @@ public class SeqCanvasTest int canvasWidth = 400; int canvasHeight = 300; int residueColumns = (canvasWidth - 2 * labelWidth) / charWidth; - int wrappedWidth = testee.calculateWrappedGeometry(canvasWidth, canvasHeight); + int wrappedWidth = testee.calculateWrappedGeometry(canvasWidth, + canvasHeight); assertEquals(wrappedWidth, residueColumns); assertEquals(PA.getValue(testee, "labelWidthWest"), labelWidth); assertEquals(PA.getValue(testee, "labelWidthEast"), labelWidth); assertEquals(PA.getValue(testee, "wrappedSpaceAboveAlignment"), 2 * charHeight); - int repeatingHeight = (int) PA.getValue(testee, "wrappedRepeatHeightPx"); + int repeatingHeight = (int) PA.getValue(testee, + "wrappedRepeatHeightPx"); assertEquals(repeatingHeight, charHeight * (2 + al.getHeight()) - + annotationHeight); + + SeqCanvas.SEQS_ANNOTATION_GAP + annotationHeight); assertEquals(PA.getValue(testee, "wrappedVisibleWidths"), 1); - + /* - * repeat height is 17 * (2 + 15) = 289 + annotationHeight = 507 - * make canvas height 2 * 289 + 3 * charHeight so just enough to - * draw 2 widths and the first sequence of a third + * repeat height is 17 * (2 + 15) = 289 + 3 + annotationHeight = 510 + * make canvas height 2 of these plus 3 charHeights + * so just enough to draw 2 widths, gap + scale + the first sequence of a third */ - canvasHeight = charHeight * (17 * 2 + 3) + 2 * annotationHeight; + canvasHeight = charHeight * (17 * 2 + 3) + + 2 * (annotationHeight + SeqCanvas.SEQS_ANNOTATION_GAP); testee.calculateWrappedGeometry(canvasWidth, canvasHeight); assertEquals(PA.getValue(testee, "wrappedVisibleWidths"), 3); - + /* * reduce canvas height by 1 pixel - should not be enough height * to draw 3 widths @@ -275,19 +286,20 @@ public class SeqCanvasTest canvasHeight -= 1; testee.calculateWrappedGeometry(canvasWidth, canvasHeight); assertEquals(PA.getValue(testee, "wrappedVisibleWidths"), 2); - + /* * turn off scale above - can now fit in 2 and a bit widths */ av.setScaleAboveWrapped(false); testee.calculateWrappedGeometry(canvasWidth, canvasHeight); assertEquals(PA.getValue(testee, "wrappedVisibleWidths"), 3); - + /* * reduce height to enough for 2 widths and not quite a third * i.e. two repeating heights + spacer + sequence - 1 pixel */ - canvasHeight = charHeight * (16 * 2 + 2) + 2 * annotationHeight - 1; + canvasHeight = charHeight * (16 * 2 + 2) + + 2 * (annotationHeight + SeqCanvas.SEQS_ANNOTATION_GAP) - 1; testee.calculateWrappedGeometry(canvasWidth, canvasHeight); assertEquals(PA.getValue(testee, "wrappedVisibleWidths"), 2); @@ -305,23 +317,21 @@ public class SeqCanvasTest * endSeq should be unchanged, but the vertical repeat height should include * all sequences. */ - @Test(groups = "Functional") + @Test(groups = "Functional_Failing") public void testCalculateWrappedGeometry_fromScrolled() { - AlignFrame af = new FileLoader().LoadFileWaitTillLoaded( - "examples/uniref50.fa", DataSourceType.FILE); AlignViewport av = af.getViewport(); AlignmentI al = av.getAlignment(); assertEquals(al.getWidth(), 157); assertEquals(al.getHeight(), 15); av.getRanges().setStartEndSeq(0, 3); + av.setFont(new Font("SansSerif", Font.PLAIN, 14), true); + av.setWrapAlignment(true); av.setShowAnnotation(false); av.setScaleAboveWrapped(true); SeqCanvas testee = af.alignPanel.getSeqPanel().seqCanvas; - av.setWrapAlignment(true); - av.setFont(new Font("SansSerif", Font.PLAIN, 14), true); int charHeight = av.getCharHeight(); int charWidth = av.getCharWidth(); assertEquals(charHeight, 17); @@ -336,4 +346,48 @@ public class SeqCanvasTest "wrappedRepeatHeightPx"); assertEquals(repeatingHeight, charHeight * (2 + al.getHeight())); } + + @BeforeMethod(alwaysRun = true) + public void setUp() + { + Cache.loadProperties("test/jalview/io/testProps.jvprops"); + Cache.applicationProperties.setProperty("SHOW_IDENTITY", + Boolean.TRUE.toString()); + af = new FileLoader().LoadFileWaitTillLoaded("examples/uniref50.fa", + DataSourceType.FILE); + + /* + * wait for Consensus thread to complete + */ + do + { + try + { + Thread.sleep(50); + } catch (InterruptedException x) + { + } + } while (af.getViewport().getCalcManager().isWorking()); + } + + @Test(groups = "Functional") + public void testClear_HighlightAndSelection() + { + AlignViewport av = af.getViewport(); + SearchResultsI highlight = new SearchResults(); + highlight.addResult( + av.getAlignment().getSequenceAt(1).getDatasetSequence(), 50, + 80); + af.alignPanel.highlightSearchResults(highlight); + af.avc.markHighlightedColumns(false, false, false); + assertNotNull(av.getSearchResults(), + "No highlight was created on alignment"); + assertFalse(av.getColumnSelection().isEmpty(), + "No selection was created from highlight"); + af.deselectAllSequenceMenuItem_actionPerformed(null); + assertTrue(av.getColumnSelection().isEmpty(), + "No Selection should be present after deselecting all."); + assertNull(av.getSearchResults(), + "No higlighted search results should be present after deselecting all."); + } }