X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=test%2Fjalview%2Fdatamodel%2FSequenceTest.java;h=e3d3fc04ac76a57c6f4b62a488341c3d14628a81;hb=838e4f91d4a53dd315640dbc9ff6ef7a815ee576;hp=857ee8492dc1f47a53496bae1845467d4b459e89;hpb=be32c14cd8e48fe0a207cd7030cb9cd46f894678;p=jalview.git diff --git a/test/jalview/datamodel/SequenceTest.java b/test/jalview/datamodel/SequenceTest.java index 857ee84..e3d3fc0 100644 --- a/test/jalview/datamodel/SequenceTest.java +++ b/test/jalview/datamodel/SequenceTest.java @@ -1,26 +1,47 @@ +/* + * Jalview - A Sequence Alignment Editor and Viewer (Version 2.9.0b1) + * Copyright (C) 2015 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.datamodel; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNull; -import static org.junit.Assert.assertSame; -import static org.junit.Assert.assertTrue; +import static org.testng.AssertJUnit.assertEquals; +import static org.testng.AssertJUnit.assertNull; +import static org.testng.AssertJUnit.assertSame; +import static org.testng.AssertJUnit.assertTrue; import java.util.Arrays; import java.util.List; -import org.junit.Before; -import org.junit.Test; +import org.testng.annotations.BeforeMethod; +import org.testng.annotations.Test; public class SequenceTest { SequenceI seq; - @Before + @BeforeMethod(alwaysRun = true) public void setUp() { seq = new Sequence("FER1", "AKPNGVL"); } - @Test + + @Test(groups = { "Functional" }) public void testInsertGapsAndGapmaps() { SequenceI aseq = seq.deriveSequence(); @@ -35,7 +56,7 @@ public class SequenceTest assertEquals("Gap interval 2 end wrong", 8, gapInt.get(1)[1]); } - @Test + @Test(groups = { "Functional" }) public void testGetAnnotation() { // initial state returns null not an empty array @@ -51,12 +72,15 @@ public class SequenceTest assertNull(seq.getAnnotation()); } - @Test + @Test(groups = { "Functional" }) public void testGetAnnotation_forLabel() { - AlignmentAnnotation ann1 = addAnnotation("label1", "desc1", "calcId1", 1f); - AlignmentAnnotation ann2 = addAnnotation("label2", "desc2", "calcId2", 1f); - AlignmentAnnotation ann3 = addAnnotation("label1", "desc3", "calcId3", 1f); + AlignmentAnnotation ann1 = addAnnotation("label1", "desc1", "calcId1", + 1f); + AlignmentAnnotation ann2 = addAnnotation("label2", "desc2", "calcId2", + 1f); + AlignmentAnnotation ann3 = addAnnotation("label1", "desc3", "calcId3", + 1f); AlignmentAnnotation[] anns = seq.getAnnotation("label1"); assertEquals(2, anns.length); assertSame(ann1, anns[0]); @@ -64,17 +88,16 @@ public class SequenceTest } private AlignmentAnnotation addAnnotation(String label, - String description, String calcId, - float value) + String description, String calcId, float value) { - final AlignmentAnnotation annotation = new AlignmentAnnotation(label, description, - value); + final AlignmentAnnotation annotation = new AlignmentAnnotation(label, + description, value); annotation.setCalcId(calcId); seq.addAlignmentAnnotation(annotation); return annotation; } - @Test + @Test(groups = { "Functional" }) public void testGetAlignmentAnnotations_forCalcIdAndLabel() { AlignmentAnnotation ann1 = addAnnotation("label1", "desc1", "calcId1", @@ -85,16 +108,14 @@ public class SequenceTest 1f); AlignmentAnnotation ann4 = addAnnotation("label2", "desc3", "calcId2", 1f); - AlignmentAnnotation ann5 = addAnnotation("label5", "desc3", null, - 1f); - AlignmentAnnotation ann6 = addAnnotation(null, "desc3", "calcId3", - 1f); + AlignmentAnnotation ann5 = addAnnotation("label5", "desc3", null, 1f); + AlignmentAnnotation ann6 = addAnnotation(null, "desc3", "calcId3", 1f); List anns = seq.getAlignmentAnnotations("calcId2", "label2"); assertEquals(2, anns.size()); assertSame(ann2, anns.get(0)); assertSame(ann4, anns.get(1)); - + assertTrue(seq.getAlignmentAnnotations("calcId2", "label3").isEmpty()); assertTrue(seq.getAlignmentAnnotations("calcId3", "label5").isEmpty()); assertTrue(seq.getAlignmentAnnotations("calcId2", null).isEmpty()); @@ -107,7 +128,7 @@ public class SequenceTest * setting the sequenceRef on the annotation. Adding the same annotation twice * should be ignored. */ - @Test + @Test(groups = { "Functional" }) public void testAddAlignmentAnnotation() { assertNull(seq.getAnnotation()); @@ -137,7 +158,7 @@ public class SequenceTest } - @Test + @Test(groups = { "Functional" }) public void testGetStartGetEnd() { SequenceI seq = new Sequence("test", "ABCDEF"); @@ -157,7 +178,7 @@ public class SequenceTest * Tests for the method that returns an alignment column position (base 1) for * a given sequence position (base 1). */ - @Test + @Test(groups = { "Functional" }) public void testFindIndex() { SequenceI seq = new Sequence("test", "ABCDEF"); @@ -185,7 +206,7 @@ public class SequenceTest * Tests for the method that returns a dataset sequence position (base 1) for * an aligned column position (base 0). */ - @Test + @Test(groups = { "Functional" }) public void testFindPosition() { SequenceI seq = new Sequence("test", "ABCDEF"); @@ -220,7 +241,7 @@ public class SequenceTest assertEquals(7, seq.findPosition(11)); } - @Test + @Test(groups = { "Functional" }) public void testDeleteChars() { SequenceI seq = new Sequence("test", "ABCDEF"); @@ -238,7 +259,7 @@ public class SequenceTest assertEquals(6, seq.getEnd()); } - @Test + @Test(groups = { "Functional" }) public void testInsertCharAt() { // non-static methods: @@ -247,6 +268,7 @@ public class SequenceTest assertEquals("zABCDEF", seq.getSequenceAsString()); seq.insertCharAt(2, 2, 'x'); assertEquals("zAxxBCDEF", seq.getSequenceAsString()); + // for static method see StringUtilsTest } @@ -254,7 +276,7 @@ public class SequenceTest * Test the method that returns an array of aligned sequence positions where * the array index is the data sequence position (both base 0). */ - @Test + @Test(groups = { "Functional" }) public void testGapMap() { SequenceI seq = new Sequence("test", "-A--B-CD-E--F-"); @@ -266,7 +288,7 @@ public class SequenceTest * Test the method that gets sequence features, either from the sequence or * its dataset. */ - @Test + @Test(groups = { "Functional" }) public void testGetSequenceFeatures() { SequenceI seq = new Sequence("test", "GATCAT"); @@ -309,4 +331,90 @@ public class SequenceTest seq.getDatasetSequence().setDatasetSequence(seq); // loop! assertNull(seq.getSequenceFeatures()); } + + /** + * Test the method that returns an array, indexed by sequence position, whose + * entries are the residue positions at the sequence position (or to the right + * if a gap) + */ + @Test(groups = { "Functional" }) + public void testFindPositionMap() + { + /* + * Note: Javadoc for findPosition says it returns the residue position to + * the left of a gapped position; in fact it returns the position to the + * right. Also it returns a non-existent residue position for a gap beyond + * the sequence. + */ + Sequence seq = new Sequence("TestSeq", "AB.C-D E."); + int[] map = seq.findPositionMap(); + assertEquals(Arrays.toString(new int[] { 1, 2, 3, 3, 4, 4, 5, 5, 6 }), + Arrays.toString(map)); + } + + /** + * Test for getSubsequence + */ + @Test(groups = { "Functional" }) + public void testGetSubsequence() + { + SequenceI seq = new Sequence("TestSeq", "ABCDEFG"); + seq.createDatasetSequence(); + + // positions are base 0, end position is exclusive + SequenceI subseq = seq.getSubSequence(2, 4); + + assertEquals("CD", subseq.getSequenceAsString()); + // start/end are base 1 positions + assertEquals(3, subseq.getStart()); + assertEquals(4, subseq.getEnd()); + // subsequence shares the full dataset sequence + assertSame(seq.getDatasetSequence(), subseq.getDatasetSequence()); + } + + /** + * Test for deriveSequence applied to a sequence with a dataset + */ + @Test(groups = { "Functional" }) + public void testDeriveSequence_existingDataset() + { + SequenceI seq = new Sequence("Seq1", "CD"); + seq.setDatasetSequence(new Sequence("Seq1", "ABCDEF")); + seq.setStart(3); + seq.setEnd(4); + SequenceI derived = seq.deriveSequence(); + assertEquals("CD", derived.getSequenceAsString()); + assertSame(seq.getDatasetSequence(), derived.getDatasetSequence()); + } + + /** + * Test for deriveSequence applied to an ungapped sequence with no dataset + */ + @Test(groups = { "Functional" }) + public void testDeriveSequence_noDatasetUngapped() + { + SequenceI seq = new Sequence("Seq1", "ABCDEF"); + assertEquals(1, seq.getStart()); + assertEquals(6, seq.getEnd()); + SequenceI derived = seq.deriveSequence(); + assertEquals("ABCDEF", derived.getSequenceAsString()); + assertEquals("ABCDEF", derived.getDatasetSequence() + .getSequenceAsString()); + } + + /** + * Test for deriveSequence applied to a gapped sequence with no dataset + */ + @Test(groups = { "Functional" }) + public void testDeriveSequence_noDatasetGapped() + { + SequenceI seq = new Sequence("Seq1", "AB-C.D EF"); + assertEquals(1, seq.getStart()); + assertEquals(6, seq.getEnd()); + assertNull(seq.getDatasetSequence()); + SequenceI derived = seq.deriveSequence(); + assertEquals("AB-C.D EF", derived.getSequenceAsString()); + assertEquals("ABCDEF", derived.getDatasetSequence() + .getSequenceAsString()); + } }