+
+ /**
+ * Test the method that retains features except for 'transcript' (or
+ * subtypes), or features with parent other than the given id
+ */
+ @Test(groups = "Functional")
+ public void testRetainFeature()
+ {
+ String accId = "ABC123";
+ EnsemblCdna testee = new EnsemblCdna();
+
+ SequenceFeature sf = new SequenceFeature("transcript", "", 20000,
+ 20500, 0f, null);
+ assertFalse(testee.retainFeature(sf, accId));
+
+ sf.setType("aberrant_processed_transcript");
+ assertFalse(testee.retainFeature(sf, accId));
+
+ sf.setType("NMD_transcript_variant");
+ assertFalse(testee.retainFeature(sf, accId));
+
+ // other feature with no parent is retained
+ sf.setType("sequence_variant");
+ assertTrue(testee.retainFeature(sf, accId));
+
+ // other feature with desired parent is retained
+ sf.setValue("Parent", "transcript:" + accId);
+ assertTrue(testee.retainFeature(sf, accId));
+
+ // feature with wrong parent is not retained
+ sf.setValue("Parent", "transcript:XYZ");
+ assertFalse(testee.retainFeature(sf, accId));
+ }
+
+ /**
+ * Test the method that picks out 'exon' (or subtype) features with the
+ * accession id as parent
+ */
+ @Test(groups = "Functional")
+ public void testIdentifiesSequence()
+ {
+ String accId = "ABC123";
+ EnsemblCdna testee = new EnsemblCdna();
+
+ // exon with no parent not valid
+ SequenceFeature sf = new SequenceFeature("exon", "", 1, 2, 0f, null);
+ assertFalse(testee.identifiesSequence(sf, accId));
+
+ // exon with wrong parent not valid
+ sf.setValue("Parent", "transcript:XYZ");
+ assertFalse(testee.identifiesSequence(sf, accId));
+
+ // exon with right parent is valid
+ sf.setValue("Parent", "transcript:" + accId);
+ assertTrue(testee.identifiesSequence(sf, accId));
+
+ // exon sub-type with right parent is valid
+ sf.setType("coding_exon");
+ assertTrue(testee.identifiesSequence(sf, accId));
+
+ // transcript not valid:
+ sf.setType("transcript");
+ assertFalse(testee.identifiesSequence(sf, accId));
+
+ // CDS not valid:
+ sf.setType("CDS");
+ assertFalse(testee.identifiesSequence(sf, accId));
+ }
+
+ @Test(groups = "Functional")
+ public void testIsValidReference() throws Exception
+ {
+ EnsemblSequenceFetcher esq = new EnsemblCdna();
+ Assert.assertTrue(esq.isValidReference("CCDS5863.1"));
+ Assert.assertTrue(esq.isValidReference("ENST00000288602"));
+ Assert.assertTrue(esq.isValidReference("ENSG00000288602"));
+ Assert.assertFalse(esq.isValidReference("ENSP00000288602"));
+ Assert.assertFalse(esq.isValidReference("ENST0000288602"));
+ // non-human species having a 3 character identifier included:
+ Assert.assertTrue(esq.isValidReference("ENSMUSG00000099398"));
+ }