import jalview.datamodel.AlignmentI;
import jalview.io.DataSourceType;
import jalview.io.FileLoader;
+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;
import junit.extensions.PA;
+@Test(singleThreaded = true)
public class SeqCanvasTest
{
@BeforeClass(alwaysRun = true)
public void setUp()
{
+ Thread.currentThread().setName("SeqCanvasTest Setup " + ++nTest);
+
+ Cache.loadProperties("test/jalview/io/testProps.jvprops");
Cache.initLogger();
Jalview.setSynchronous(true);
}
@Test(groups = "Functional")
public void testCalculateWrappedGeometry_noAnnotations()
{
+ Thread.currentThread().setName("SeqCanvasTest noAnn " + ++nTest);
AlignFrame af = new FileLoader().LoadFileWaitTillLoaded(
"examples/uniref50.fa", DataSourceType.FILE);
AlignViewport av = af.getViewport();
@Test(groups = "Functional")
public void testCalculateWrappedGeometry_withAnnotations()
{
+ Thread.currentThread().setName("SeqCanvasTest wAnn " + ++nTest);
AlignFrame af = new FileLoader().LoadFileWaitTillLoaded(
"examples/uniref50.fa", DataSourceType.FILE);
AlignViewport av = af.getViewport();
assertEquals(PA.getValue(testee, "wrappedVisibleWidths"), 3);
}
+ private static int nTest = 0;
/**
* Test simulates loading an unwrapped alignment, shrinking it vertically so
* not all sequences are visible, then changing to wrapped mode. The ranges
@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);
- String ss = "";
+ 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);
SeqCanvas testee = af.alignPanel.getSeqPanel().seqCanvas;
testee.calculateWrappedGeometry(canvasWidth, canvasHeight);
int repeatingHeight = (int) PA.getValue(testee,
"wrappedRepeatHeightPx");
- assertEquals(av.getRanges().getEndSeq(), 3,
- "endSeq should be 3"); // 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();
+ }
}