1+ package org .biojava .nbio .core .sequence ;
2+
3+ import org .biojava .nbio .core .exceptions .CompoundNotFoundException ;
4+ import org .junit .jupiter .api .BeforeEach ;
5+ import org .junit .jupiter .api .Nested ;
6+ import org .junit .jupiter .api .Test ;
7+ import org .junit .jupiter .params .ParameterizedTest ;
8+ import org .junit .jupiter .params .provider .EnumSource ;
9+ import org .junit .jupiter .params .provider .ValueSource ;
10+
11+ import static org .junit .jupiter .api .Assertions .*;
12+
13+ class ChromosomeSequenceTest {
14+
15+ private final String chromosome_seq = "ATATATATATATATATATATATATATATATATACGCGCGCGCGCGCGCGCGCGCGCGCGCGCGCATATATATATATATATATATATACGCGCGCGCGCGCGCGCATATATATATATATATATATATATATATATATACGCGCGCGCGCGCGCGCGCGCGCGCGCGCGCATATATATATATATATATATATACGCGCGCGCGCGCGCGC" ;
16+
17+ @ Nested
18+ class AfterValidConstruction {
19+ ChromosomeSequence seq = null ;
20+
21+ @ BeforeEach
22+ void before () throws CompoundNotFoundException {
23+ seq = new ChromosomeSequence (chromosome_seq );
24+ }
25+
26+ @ Test
27+ void beginAndEndAreLengthOfSequence () {
28+ assertEquals (1 , seq .getBioBegin ());
29+ assertEquals (208 , seq .getBioEnd ());
30+ assertEquals (208 , seq .getLength ());
31+ }
32+
33+ @ Test
34+ void noGenesAreDefined () {
35+ assertEquals (0 , seq .getGeneSequences ().size ());
36+ }
37+
38+ @ Test
39+ void chromosomeNumberIsZero () {
40+ assertEquals (0 , seq .getChromosomeNumber ());
41+ }
42+
43+ @ Test
44+ void sequenceTypeIsUnknown () {
45+ assertEquals (DNASequence .DNAType .UNKNOWN , seq .getDNAType ());
46+ }
47+ }
48+
49+ @ Nested
50+ class AfterConstructionWithEmptyString {
51+ ChromosomeSequence seq = null ;
52+
53+ @ BeforeEach
54+ void before () throws CompoundNotFoundException {
55+ seq = new ChromosomeSequence ("" );
56+ }
57+
58+ @ Test
59+ void lengthIsZero () {
60+ assertEquals (0 , seq .getLength ());
61+ }
62+
63+ @ Test
64+ void endIsBeforeBeginning () {
65+ assertEquals (0 , seq .getBioEnd ());
66+ assertEquals (1 , seq .getBioBegin ());
67+ }
68+
69+ }
70+
71+ @ Test
72+ void nullSequenceNotAllowed () throws CompoundNotFoundException {
73+ assertThrows (NullPointerException .class , () -> new ChromosomeSequence ((String ) null ));
74+ }
75+
76+ @ ParameterizedTest
77+ @ ValueSource (ints = {Integer .MAX_VALUE , Integer .MIN_VALUE , 100 , 0 , -1 , -100 })
78+ void anyIntegerIsValidChromosomeNumber (int value ) throws CompoundNotFoundException {
79+ ChromosomeSequence seq = new ChromosomeSequence (chromosome_seq );
80+ seq .setChromosomeNumber (value );
81+ assertEquals (value , seq .getChromosomeNumber ());
82+ }
83+
84+ @ ParameterizedTest
85+ @ EnumSource (DNASequence .DNAType .class )
86+ void anyDNATypeIsValid (DNASequence .DNAType dnaType ) throws CompoundNotFoundException {
87+ ChromosomeSequence seq = new ChromosomeSequence (chromosome_seq );
88+ seq .setDNAType (dnaType );
89+ assertEquals (dnaType , seq .getDNAType ());
90+ }
91+
92+ @ Nested
93+ class AddingAndRemovingGeneSequences {
94+ ChromosomeSequence seq = null ;
95+ @ BeforeEach
96+ void before () throws CompoundNotFoundException {
97+ seq = new ChromosomeSequence (chromosome_seq );
98+ }
99+ @ Test
100+ void canAddSameGeneTwice (){
101+ seq .addGene (new AccessionID ("ABCDE1" ), 1 , 20 , Strand .POSITIVE );
102+ assertEquals (1 , seq .getGeneSequences ().size ());
103+ seq .addGene (new AccessionID ("ABCDE1" ), 1 , 20 , Strand .POSITIVE );
104+ assertEquals (1 , seq .getGeneSequences ().size ());
105+ }
106+
107+ @ Test
108+ void isOKToRemoveNonExistentSequence (){
109+ seq .removeGeneSequence ("XXX" );
110+ }
111+
112+ @ Test
113+ void addAndRemove (){
114+ final String accessionId = "ABCDE1" ;
115+ GeneSequence geneSequence = seq .addGene (new AccessionID (accessionId ), 1 , 20 , Strand .POSITIVE );
116+ assertEquals (geneSequence .getAccession (), seq .getGene (accessionId ).getAccession ());
117+ assertEquals (1 , seq .getGeneSequences ().size ());
118+ seq .removeGeneSequence (accessionId );
119+ assertEquals (0 , seq .getGeneSequences ().size ());
120+
121+ }
122+
123+ @ Test
124+ void geneSequenceHasCorrectLength (){
125+ final String accessionId = "ABCDE1" ;
126+ GeneSequence geneSequence = seq .addGene (new AccessionID (accessionId ), 1 , 20 , Strand .POSITIVE );
127+ assertEquals (20 , geneSequence .getLength ());
128+ }
129+
130+ @ Test
131+ void geneSequenceCanHaveBeginAndEndOutsideOfChromosomeSeq (){
132+ final String accessionId = "ABCDE1" ;
133+ GeneSequence geneSequence = seq .addGene (new AccessionID (accessionId ), Integer .MAX_VALUE -10 , Integer .MAX_VALUE , Strand .POSITIVE );
134+ assertEquals (11 , geneSequence .getLength ());
135+
136+ }
137+ }
138+
139+ @ Test
140+ void addAndRemoveGeneSequence () throws CompoundNotFoundException {
141+ ChromosomeSequence seq = new ChromosomeSequence (chromosome_seq );
142+ seq .addGene (new AccessionID ("ABCDE1" ), 1 , 20 , Strand .POSITIVE );
143+ assertEquals (1 , seq .getGeneSequences ().size ());
144+
145+
146+ // still present
147+ assertEquals (1 , seq .getGeneSequences ().size ());
148+ // can be added again with sam
149+ seq .addGene (new AccessionID ("ABCDE1" ), 1 , 20 , Strand .POSITIVE );
150+ assertEquals (1 , seq .getGeneSequences ().size ());
151+
152+ }
153+
154+
155+
156+ @ Test
157+ void addGene () {
158+ }
159+
160+ @ Test
161+ void getGene () {
162+ }
163+ }
0 commit comments