/*
* Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
* Copyright (C) $$Year-Rel$$ The Jalview Authors
*
* This file is part of Jalview.
*
* Jalview is free software: you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation, either version 3
* of the License, or (at your option) any later version.
*
* Jalview is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty
* of MERCHANTABILITY or FITNESS FOR A PARTICULAR
* PURPOSE. See the GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Jalview. If not, see .
* The Jalview Authors are detailed in the 'AUTHORS' file.
*/
package jalview.gui;
import static org.testng.Assert.assertEquals;
import static org.testng.Assert.assertNull;
import jalview.datamodel.AlignmentAnnotation;
import jalview.datamodel.Sequence;
import org.testng.annotations.Test;
public class AnnotationLabelsTest
{
@Test(groups = "Functional")
public void testGetTooltip()
{
assertNull(AnnotationLabels.getTooltip(null));
/*
* simple description only
*/
AlignmentAnnotation ann = new AlignmentAnnotation("thelabel", "thedesc",
null);
String expected = "thedesc";
assertEquals(AnnotationLabels.getTooltip(ann), expected);
/*
* description needing html encoding
* (no idea why '<' is encoded but '>' is not)
*/
ann.description = "TCoffee scores < 56 and > 28";
expected = "TCoffee scores < 56 and > 28";
assertEquals(AnnotationLabels.getTooltip(ann), expected);
/*
* description already html formatted
*/
ann.description = "hello world";
assertEquals(AnnotationLabels.getTooltip(ann), ann.description);
/*
* simple description and score
*/
ann.description = "hello world";
ann.setScore(2.34d);
expected = "hello world
Score: 2.34";
assertEquals(AnnotationLabels.getTooltip(ann), expected);
/*
* html description and score
*/
ann.description = "hello world";
ann.setScore(2.34d);
expected = "hello world
Score: 2.34";
assertEquals(AnnotationLabels.getTooltip(ann), expected);
/*
* score, no description
*/
ann.description = " ";
assertEquals(AnnotationLabels.getTooltip(ann),
" Score: 2.34");
ann.description = null;
assertEquals(AnnotationLabels.getTooltip(ann),
" Score: 2.34");
/*
* sequenceref, simple description
*/
ann.description = "Count < 12";
ann.sequenceRef = new Sequence("Seq1", "MLRIQST");
ann.hasScore = false;
ann.score = Double.NaN;
expected = "Seq1 : Count < 12";
assertEquals(AnnotationLabels.getTooltip(ann), expected);
/*
* sequenceref, html description, score
*/
ann.description = "Score < 4.8";
ann.sequenceRef = new Sequence("Seq1", "MLRIQST");
ann.setScore(-2.1D);
expected = "Seq1 : Score < 4.8
Score: -2.1";
assertEquals(AnnotationLabels.getTooltip(ann), expected);
/*
* no score, null description
*/
ann.description = null;
ann.hasScore = false;
ann.score = Double.NaN;
assertNull(AnnotationLabels.getTooltip(ann));
/*
* no score, empty description, sequenceRef
*/
ann.description = "";
assertEquals(AnnotationLabels.getTooltip(ann), "Seq1 :");
/*
* no score, empty description, no sequenceRef
*/
ann.sequenceRef = null;
assertNull(AnnotationLabels.getTooltip(ann));
}
@Test(groups = "Functional")
public void testGetStatusMessage()
{
assertNull(AnnotationLabels.getStatusMessage(null, null));
/*
* simple label
*/
AlignmentAnnotation aa = new AlignmentAnnotation("IUPredWS Short",
"Protein disorder", null);
assertEquals(AnnotationLabels.getStatusMessage(aa, null),
"IUPredWS Short");
/*
* with sequence ref
*/
aa.setSequenceRef(new Sequence("FER_CAPAA", "MIGRKQL"));
assertEquals(AnnotationLabels.getStatusMessage(aa, null),
"FER_CAPAA : IUPredWS Short");
/*
* with graph group (degenerate, one annotation only)
*/
aa.graphGroup = 1;
AlignmentAnnotation aa2 = new AlignmentAnnotation("IUPredWS Long",
"Protein disorder", null);
assertEquals(
AnnotationLabels.getStatusMessage(aa, new AlignmentAnnotation[]
{ aa, aa2 }), "FER_CAPAA : IUPredWS Short");
/*
* graph group with two members; note labels are appended in
* reverse order (matching rendering order on screen)
*/
aa2.graphGroup = 1;
assertEquals(
AnnotationLabels.getStatusMessage(aa, new AlignmentAnnotation[]
{ aa, aa2 }), "FER_CAPAA : IUPredWS Long, IUPredWS Short");
/*
* graph group with no sequence ref
*/
aa.sequenceRef = null;
assertEquals(
AnnotationLabels.getStatusMessage(aa, new AlignmentAnnotation[]
{ aa, aa2 }), "IUPredWS Long, IUPredWS Short");
}
}