import static org.testng.AssertJUnit.assertNull;
import static org.testng.AssertJUnit.assertSame;
import static org.testng.AssertJUnit.assertTrue;
+import static org.testng.internal.junit.ArrayAsserts.assertArrayEquals;
import jalview.datamodel.PDBEntry.Type;
public class SequenceTest
{
- SequenceI seq;
+ Sequence seq;
@BeforeMethod(alwaysRun = true)
public void setUp()
assertEquals(1, sfs.length);
assertSame(sf, sfs[0]);
+
/*
* SequenceFeature on sequence and dataset sequence; returns that on
* sequence
+ *
+ * Note JAL-2046: spurious: we have no use case for this at the moment.
+ * This test also buggy - as sf2.equals(sf), no new feature is added
*/
SequenceFeature sf2 = new SequenceFeature();
sq.getDatasetSequence().addSequenceFeature(sf2);
/*
* SequenceFeature on dataset sequence only
+ * Note JAL-2046: spurious: we have no use case for setting a non-dataset sequence's feature array to null at the moment.
*/
sq.setSequenceFeatures(null);
- sfs = sq.getSequenceFeatures();
- assertEquals(1, sfs.length);
- assertSame(sf2, sfs[0]);
+ assertNull(sq.getDatasetSequence().getSequenceFeatures());
/*
* Corrupt case - no SequenceFeature, dataset's dataset is the original
@Test(groups = { "Functional" })
public void testDeriveSequence_existingDataset()
{
- SequenceI sq = new Sequence("Seq1", "CD");
+ Sequence sq = new Sequence("Seq1", "CD");
sq.setDatasetSequence(new Sequence("Seq1", "ABCDEF"));
+ sq.getDatasetSequence().addSequenceFeature(
+ new SequenceFeature("", "", 1, 2, 0f, null));
sq.setStart(3);
sq.setEnd(4);
- SequenceI derived = sq.deriveSequence();
+
+ Sequence derived = (Sequence) sq.deriveSequence();
assertEquals("CD", derived.getSequenceAsString());
assertSame(sq.getDatasetSequence(), derived.getDatasetSequence());
+
+ assertNull(sq.sequenceFeatures);
+ assertNull(derived.sequenceFeatures);
+ // derived sequence should access dataset sequence features
+ assertNotNull(sq.getSequenceFeatures());
+ assertArrayEquals(sq.getSequenceFeatures(),
+ derived.getSequenceFeatures());
}
/**
// but that doesn't distinguish it from an aligned sequence
// which has not yet generated a dataset sequence
// NB getDBRef looks inside dataset sequence if not null
- DBRefEntry[] dbrefs = copy.getDBRef();
+ DBRefEntry[] dbrefs = copy.getDBRefs();
assertEquals(1, dbrefs.length);
- assertFalse(dbrefs[0] == seq1.getDBRef()[0]);
- assertTrue(dbrefs[0].equals(seq1.getDBRef()[0]));
+ assertFalse(dbrefs[0] == seq1.getDBRefs()[0]);
+ assertTrue(dbrefs[0].equals(seq1.getDBRefs()[0]));
}
@Test(groups = { "Functional" })
seq1.setDescription("description");
seq1.addAlignmentAnnotation(new AlignmentAnnotation("label", "desc",
1.3d));
+ // JAL-2046 - what is the contract for using a derived sequence's
+ // addSequenceFeature ?
seq1.addSequenceFeature(new SequenceFeature("type", "desc", 22, 33,
12.4f, "group"));
seq1.addPDBId(new PDBEntry("1A70", "B", Type.PDB, "File"));
// getDBRef looks inside dataset sequence and this is shared,
// so holds the same dbref objects
- DBRefEntry[] dbrefs = copy.getDBRef();
+ DBRefEntry[] dbrefs = copy.getDBRefs();
assertEquals(1, dbrefs.length);
- assertSame(dbrefs[0], seq1.getDBRef()[0]);
+ assertSame(dbrefs[0], seq1.getDBRefs()[0]);
}
/**
// copy has a copy of the sequence feature:
SequenceFeature[] sfs = copy.getSequenceFeatures();
assertEquals(1, sfs.length);
- assertFalse(sfs[0] == seq1.getSequenceFeatures()[0]);
+ if (seq1.getDatasetSequence()!=null && copy.getDatasetSequence()==seq1.getDatasetSequence()) {
+ assertTrue(sfs[0] == seq1.getSequenceFeatures()[0]);
+ } else {
+ assertFalse(sfs[0] == seq1.getSequenceFeatures()[0]);
+ }
assertTrue(sfs[0].equals(seq1.getSequenceFeatures()[0]));
// copy has a copy of the PDB entry
assertFalse(pdbs.get(0) == seq1.getAllPDBEntries().get(0));
assertTrue(pdbs.get(0).equals(seq1.getAllPDBEntries().get(0)));
}
+
+ @Test(groups = "Functional")
+ public void testGetCharAt()
+ {
+ SequenceI sq = new Sequence("", "abcde");
+ assertEquals('a', sq.getCharAt(0));
+ assertEquals('e', sq.getCharAt(4));
+ assertEquals(' ', sq.getCharAt(5));
+ assertEquals(' ', sq.getCharAt(-1));
+ }
}