Skip to content

Commit a273e7c

Browse files
committed
test that breaks encapsulation of collections
1 parent 73a56e8 commit a273e7c

File tree

2 files changed

+24
-10
lines changed

2 files changed

+24
-10
lines changed

biojava-core/src/main/java/org/biojava/nbio/core/sequence/GeneSequence.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -169,8 +169,6 @@ public LinkedHashMap<String, TranscriptSequence> getTranscripts() {
169169
* @return transcriptsequence
170170
*/
171171
public TranscriptSequence removeTranscript(String accession) {
172-
173-
174172
return transcriptSequenceHashMap.remove(accession);
175173
}
176174

biojava-core/src/test/java/org/biojava/nbio/core/sequence/GeneSequenceTest.java

Lines changed: 24 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66
import org.junit.jupiter.api.Nested;
77
import org.junit.jupiter.api.Test;
88

9+
import java.util.List;
10+
911
import static org.junit.jupiter.api.Assertions.*;
1012

1113
class 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

Comments
 (0)