package jalview.io; import static org.testng.AssertJUnit.assertEquals; import jalview.datamodel.SequenceFeature; import java.util.Hashtable; import java.util.Map; import org.testng.annotations.Test; public class SequenceAnnotationReportTest { @Test(groups = "Functional") public void testAppendFeature_disulfideBond() { SequenceAnnotationReport sar = new SequenceAnnotationReport(null); StringBuffer sb = new StringBuffer(); sb.append("123456"); SequenceFeature sf = new SequenceFeature("disulfide bond", "desc", 1, 3, 1.2f, "group"); // residuePos == 2 does not match start or end of feature, nothing done: sar.appendFeature(sb, 2, null, sf); assertEquals("123456", sb.toString()); // residuePos == 1 matches start of feature, text appended (but no
) // feature score is not included sar.appendFeature(sb, 1, null, sf); assertEquals("123456disulfide bond 1:3", sb.toString()); // residuePos == 3 matches end of feature, text appended //
is prefixed once sb.length() > 6 sar.appendFeature(sb, 3, null, sf); assertEquals("123456disulfide bond 1:3
disulfide bond 1:3", sb.toString()); } @Test(groups = "Functional") public void testAppendFeature_status() { SequenceAnnotationReport sar = new SequenceAnnotationReport(null); StringBuffer sb = new StringBuffer(); SequenceFeature sf = new SequenceFeature("METAL", "Fe2-S", 1, 3, Float.NaN, "group"); sf.setStatus("Confirmed"); sar.appendFeature(sb, 1, null, sf); assertEquals("METAL 1 3; Fe2-S; (Confirmed)", sb.toString()); } @Test(groups = "Functional") public void testAppendFeature_withScore() { SequenceAnnotationReport sar = new SequenceAnnotationReport(null); StringBuffer sb = new StringBuffer(); SequenceFeature sf = new SequenceFeature("METAL", "Fe2-S", 1, 3, 1.3f, "group"); Map minmax = new Hashtable(); sar.appendFeature(sb, 1, minmax, sf); /* * map has no entry for this feature type - score is not shown: */ assertEquals("METAL 1 3; Fe2-S", sb.toString()); /* * map has entry for this feature type - score is shown: */ minmax.put("METAL", new float[][] { { 0f, 1f }, null }); sar.appendFeature(sb, 1, minmax, sf); //
is appended to a buffer > 6 in length assertEquals("METAL 1 3; Fe2-S
METAL 1 3; Fe2-S Score=1.3", sb.toString()); /* * map has min == max for this feature type - score is not shown: */ minmax.put("METAL", new float[][] { { 2f, 2f }, null }); sb.setLength(0); sar.appendFeature(sb, 1, minmax, sf); assertEquals("METAL 1 3; Fe2-S", sb.toString()); } @Test(groups = "Functional") public void testAppendFeature_noScore() { SequenceAnnotationReport sar = new SequenceAnnotationReport(null); StringBuffer sb = new StringBuffer(); SequenceFeature sf = new SequenceFeature("METAL", "Fe2-S", 1, 3, Float.NaN, "group"); sar.appendFeature(sb, 1, null, sf); assertEquals("METAL 1 3; Fe2-S", sb.toString()); } @Test(groups = "Functional") public void testAppendFeature_clinicalSignificance() { SequenceAnnotationReport sar = new SequenceAnnotationReport(null); StringBuffer sb = new StringBuffer(); SequenceFeature sf = new SequenceFeature("METAL", "Fe2-S", 1, 3, Float.NaN, "group"); sf.setValue("clinical_significance", "Benign"); sar.appendFeature(sb, 1, null, sf); assertEquals("METAL 1 3; Fe2-S; Benign", sb.toString()); } @Test(groups = "Functional") public void testAppendFeature_withScoreStatusClinicalSignificance() { SequenceAnnotationReport sar = new SequenceAnnotationReport(null); StringBuffer sb = new StringBuffer(); SequenceFeature sf = new SequenceFeature("METAL", "Fe2-S", 1, 3, 1.3f, "group"); sf.setStatus("Confirmed"); sf.setValue("clinical_significance", "Benign"); Map minmax = new Hashtable(); minmax.put("METAL", new float[][] { { 0f, 1f }, null }); sar.appendFeature(sb, 1, minmax, sf); assertEquals("METAL 1 3; Fe2-S Score=1.3; (Confirmed); Benign", sb.toString()); } @Test(groups = "Functional") public void testAppendFeature_DescEqualsType() { SequenceAnnotationReport sar = new SequenceAnnotationReport(null); StringBuffer sb = new StringBuffer(); SequenceFeature sf = new SequenceFeature("METAL", "METAL", 1, 3, Float.NaN, "group"); // description is not included if it duplicates type: sar.appendFeature(sb, 1, null, sf); assertEquals("METAL 1 3", sb.toString()); sb.setLength(0); sf.setDescription("Metal"); // test is case-sensitive: sar.appendFeature(sb, 1, null, sf); assertEquals("METAL 1 3; Metal", sb.toString()); } @Test(groups = "Functional") public void testAppendFeature_stripHtml() { SequenceAnnotationReport sar = new SequenceAnnotationReport(null); StringBuffer sb = new StringBuffer(); SequenceFeature sf = new SequenceFeature("METAL", "helloworld", 1, 3, Float.NaN, "group"); sar.appendFeature(sb, 1, null, sf); // !! strips off but not ?? assertEquals("METAL 1 3; helloworld", sb.toString()); sb.setLength(0); sf.setDescription("
&kHD>6"); sar.appendFeature(sb, 1, null, sf); // if no tag, html-encodes > and < (only): assertEquals("METAL 1 3; <br>&kHD>6", sb.toString()); } }