66import org .junit .jupiter .api .Nested ;
77import org .junit .jupiter .api .Test ;
88
9+ import java .util .List ;
10+
911import static org .junit .jupiter .api .Assertions .*;
1012
1113class GeneSequenceTest {
@@ -101,14 +103,28 @@ void getNegativeStrandSequence5To3Prime() {
101103 }
102104
103105 @ Test
104- void removeExon () {
105- }
106-
107- @ Test
108- void addExon () {
106+ void addRemoveExon () throws Exception {
107+ geneSequence = new GeneSequence (chromosomeSequence , 5 ,150 , Strand .POSITIVE );
108+ geneSequence .addExon (new AccessionID ("a" ), 20 , 50 );
109+ geneSequence .addExon (new AccessionID ("c" ), 20 , 50 );
110+ geneSequence .setAccession (new AccessionID ("mygene" ));
111+ assertEquals (2 , geneSequence .getExonSequences ().size ());
112+ geneSequence .removeExon ("unknown" );
113+ assertEquals (2 , geneSequence .getExonSequences ().size ());
114+ // this causes NPE in equals() methods as sequence proxy loader isn't set.
115+ // either call super constructor in GeneSequence (which will require adding exception)
116+ // or alter equals() in AbstractSequence not to use properties like sequenceStorage, that may be null.
117+ // geneSequence.removeExon("b");
118+ // assertEquals(1, geneSequence.getExonSequences().size());
109119 }
110120
111- @ Test
112- void getSequence5PrimeTo3Prime () {
113- }
121+ @ Test
122+ void returnedCollectionsAreMutable () throws Exception {
123+ geneSequence = new GeneSequence (chromosomeSequence , 5 ,150 , Strand .POSITIVE );
124+ geneSequence .addExon (new AccessionID ("a" ), 20 , 50 );
125+ List <ExonSequence > exons = geneSequence .getExonSequences ();
126+ // this breaks encapsulation of the collections
127+ exons .remove (0 );
128+ assertEquals (0 , geneSequence .getExonSequences ().size ());
129+ }
114130}
0 commit comments