Bamboo test #13
[jalview.git] / test / jalview / gui / SeqCanvasTest.java
index 6f5fa2e..e73b805 100644 (file)
@@ -31,6 +31,10 @@ import jalview.viewmodel.ViewportRanges;
 
 import java.awt.Font;
 import java.awt.FontMetrics;
+import java.awt.Toolkit;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.io.PrintStream;
 
 import org.testng.Assert;
 import org.testng.annotations.BeforeClass;
@@ -46,6 +50,7 @@ public class SeqCanvasTest
   {
     Thread.currentThread().setName("SeqCanvasTest Setup " + ++nTest);
 
+    Cache.loadProperties("test/jalview/io/testProps.jvprops");
     Cache.initLogger();
     Jalview.setSynchronous(true);
   }
@@ -379,15 +384,37 @@ public class SeqCanvasTest
   @Test(groups = "Functional")
   public void testCalculateWrappedGeometry_fromScrolled()
   {
+    // debugOut("12]", new Runnable()
+    // {
+    //
+    // @Override
+    // public void run()
+    // {
+    //
+    // String s = Arrays
+    // .toString(new NullPointerException().getStackTrace())
+    // .replace(',', '\n') + "\n\n";
+    //
+    // System.err.println(s);
+    //
+    // }
+    //
+    // });
+    //
+    ViewportRanges.sTest = "";
     Thread.currentThread().setName("SeqCanvasTest fromScrolled " + ++nTest);
     AlignFrame af = new FileLoader().LoadFileWaitTillLoaded(
             "examples/uniref50.fa", DataSourceType.FILE);
+    // note that this frame is unpacked, with w = h = 0;
     AlignViewport av = af.getViewport();
     AlignmentI al = av.getAlignment();
     assertEquals(al.getWidth(), 157);
     assertEquals(al.getHeight(), 15);
-    av.getRanges().setStartEndSeq(0, 3);
     String s = "";
+    s += "flushing events";
+    flushEvents();
+    s += "events flushed";
+    av.getRanges().setStartEndSeq(0, 3);
     s += " SC1 " + av.getRanges() + " " + ViewportRanges.sTest;
     av.setShowAnnotation(false);
     av.setScaleAboveWrapped(true);
@@ -405,7 +432,58 @@ public class SeqCanvasTest
     testee.calculateWrappedGeometry(canvasWidth, canvasHeight);
     int repeatingHeight = (int) PA.getValue(testee,
             "wrappedRepeatHeightPx");
-    assertEquals(av.getRanges().getEndSeq(), 0, "endSeq should be 3 " + s); // unchanged
+    assertEquals(av.getRanges().getEndSeq(), 3, "endSeq should be 3 " + s); // unchanged
     assertEquals(repeatingHeight, charHeight * (2 + al.getHeight()));
   }
+
+  /**
+   * Let me know when the output indicates the specified message.
+   * 
+   * @param msg
+   * @param r
+   */
+  private void debugOut(String msg, Runnable r)
+  {
+    int len = msg.length();
+    int c0 = msg.charAt(0);
+    boolean[] recording = new boolean[1];
+    System.setOut(new PrintStream(new OutputStream()
+    {
+
+      StringBuffer out = new StringBuffer();
+
+      @Override
+      public void write(int b) throws IOException
+      {
+
+        if (recording[0])
+        {
+          out.append((char) b);
+          if (out.length() == len)
+          {
+            if (out.toString().equals(msg))
+            {
+              r.run();
+            }
+            recording[0] = false;
+            out.setLength(0);
+          }
+        }
+        else if (b == c0)
+        {
+          out.append((char) b);
+          recording[0] = true;
+        }
+      }
+
+    }));
+
+    // TODO Auto-generated method stub
+
+  }
+
+  private static void flushEvents()
+  {
+    ((sun.awt.SunToolkit) Toolkit.getDefaultToolkit()).flushPendingEvents();
+  }
 }