*/
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
@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);
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);
@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);
int charWidth = av.getCharWidth();
assertEquals(charHeight, 17);
assertEquals(charWidth, 12);
-
+
SeqCanvas testee = af.alignPanel.getSeqPanel().seqCanvas;
-
+
/*
* first with scales above, left, right
*/
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())
+ SeqCanvas.SEQS_ANNOTATION_GAP + annotationHeight);
assertEquals(PA.getValue(testee, "wrappedVisibleWidths"), 1);
-
+
/*
* repeat height is 17 * (2 + 15) = 289 + 3 + annotationHeight = 510
* make canvas height 2 of these plus 3 charHeights
+ 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
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
* 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);
"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.");
+ }
}