Merge branch 'develop' into update_212_Dec_merge_with_21125_chamges
[jalview.git] / test / jalview / gui / SeqCanvasTest.java
index aa50301..0efd4c9 100644 (file)
  */
 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 java.awt.Font;
+import java.awt.FontMetrics;
+
+import org.testng.annotations.BeforeClass;
+import org.testng.annotations.Test;
+
 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 jalview.util.Platform;
+import jalview.viewmodel.ViewportRanges;
 import junit.extensions.PA;
 
 public class SeqCanvasTest
 {
+  @BeforeClass(alwaysRun = true)
+  public void setUp()
+  {
+      // 2.11.2 - beforeMethod 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());
+
+    Cache.loadProperties(null);
+    Desktop.getInstance().setVisible(false);
+  }
+
   private AlignFrame af;
 
   /**
@@ -64,8 +92,8 @@ public class SeqCanvasTest
     av.setFont(new Font("SansSerif", Font.PLAIN, 14), true);
     int charHeight = av.getCharHeight();
     int charWidth = av.getCharWidth();
-    assertEquals(charHeight, 17);
-    assertEquals(charWidth, 12);
+    assertEquals(charHeight, !Platform.isWin() ? 17 : 19);
+    assertEquals(charWidth, !Platform.isWin() ? 12 : 11);
 
     /*
      * first with scales above, left, right
@@ -76,7 +104,8 @@ public class SeqCanvasTest
     av.setScaleRightWrapped(true);
     FontMetrics fm = testee.getFontMetrics(av.getFont());
     int labelWidth = fm.stringWidth("000") + charWidth;
-    assertEquals(labelWidth, 39); // 3 x 9 + charWidth
+    assertEquals(labelWidth,
+            !Platform.isWin() ? 3 * 9 + charWidth : 3 * 8 + charWidth);
 
     /*
      * width 400 pixels leaves (400 - 2*labelWidth) for residue columns
@@ -85,15 +114,13 @@ 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);
 
@@ -200,7 +227,7 @@ public class SeqCanvasTest
     canvasWidth += 2;
     wrappedWidth = testee.calculateWrappedGeometry(canvasWidth,
             canvasHeight);
-    assertEquals(wrappedWidth, 24); // 2px not enough
+    assertEquals(wrappedWidth, !Platform.isWin() ? 24 : 25); // 2px not enough
     canvasWidth += 1;
     wrappedWidth = testee.calculateWrappedGeometry(canvasWidth,
             canvasHeight);
@@ -226,17 +253,16 @@ public class SeqCanvasTest
     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 charHeight = av.getCharHeight();
     int charWidth = av.getCharWidth();
-    assertEquals(charHeight, 17);
-    assertEquals(charWidth, 12);
-
+    assertEquals(charHeight, !Platform.isWin() ? 17 : 19);
+    assertEquals(charWidth, !Platform.isWin() ? 12 : 11);
     SeqCanvas testee = af.alignPanel.getSeqPanel().seqCanvas;
-
+  
     /*
      * first with scales above, left, right
      */
@@ -246,7 +272,8 @@ public class SeqCanvasTest
     av.setScaleRightWrapped(true);
     FontMetrics fm = testee.getFontMetrics(av.getFont());
     int labelWidth = fm.stringWidth("000") + charWidth;
-    assertEquals(labelWidth, 39); // 3 x 9 + charWidth
+    assertEquals(labelWidth,
+            !Platform.isWin() ? 3 * 9 + charWidth : 3 * 8 + charWidth);
     int annotationHeight = testee.getAnnotationHeight();
 
     /*
@@ -256,19 +283,17 @@ 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())
             + 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 
@@ -278,7 +303,7 @@ public class SeqCanvasTest
             + 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
@@ -286,14 +311,14 @@ 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
@@ -347,32 +372,11 @@ public class SeqCanvasTest
     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()
   {
+    AlignFrame af = new FileLoader().LoadFileWaitTillLoaded(
+            "examples/uniref50.fa", DataSourceType.FILE);
     AlignViewport av = af.getViewport();
     SearchResultsI highlight = new SearchResults();
     highlight.addResult(