@@ -2,36 +2,68 @@ import { describe, expect, test, xtest } from '@jest/globals';
2
2
import { translate } from './protein-translation' ;
3
3
4
4
describe ( 'ProteinTranslation' , ( ) => {
5
- test ( 'Empty RNA has no proteins' , ( ) => {
5
+ test ( 'Empty RNA sequence results in no proteins' , ( ) => {
6
6
expect ( translate ( ) ) . toEqual ( [ ] ) ;
7
7
} ) ;
8
8
9
9
describe ( 'Single codons' , ( ) => {
10
- const mapping = [
11
- [ 'Methionine' , [ 'AUG' ] ] ,
12
- [ 'Phenylalanine' , [ 'UUU' , 'UUC' ] ] ,
13
- [ 'Leucine' , [ 'UUA' , 'UUG' ] ] ,
14
- [ 'Serine' , [ 'UCU' , 'UCC' , 'UCA' , 'UCG' ] ] ,
15
- [ 'Tyrosine' , [ 'UAU' , 'UAC' ] ] ,
16
- [ 'Cysteine' , [ 'UGU' , 'UGC' ] ] ,
17
- [ 'Tryptophan' , [ 'UGG' ] ] ,
18
- ] ;
19
-
20
- mapping . forEach ( ( [ protein , codons ] ) => {
21
- codons . forEach ( ( codon , index ) => {
22
- const seq = index + 1 ;
23
- xtest ( `${ protein } RNA sequence ${ seq } translates into ${ protein } ` , ( ) => {
24
- expect ( translate ( codon ) ) . toEqual ( [ protein ] ) ;
25
- } ) ;
26
- } ) ;
27
- } ) ;
28
-
29
- const stopCodons = [ 'UAA' , 'UAG' , 'UGA' ] ;
30
-
31
- stopCodons . forEach ( ( codon , index ) => {
32
- xtest ( `STOP codon RNA sequence ${ index + 1 } ` , ( ) => {
33
- expect ( translate ( codon ) ) . toEqual ( [ ] ) ;
34
- } ) ;
10
+ xtest ( 'Methionine RNA sequence' , ( ) => {
11
+ expect ( translate ( 'AUG' ) ) . toEqual ( [ 'Methionine' ] ) ;
12
+ } ) ;
13
+
14
+ xtest ( 'Phenylalanine RNA sequence 1' , ( ) => {
15
+ expect ( translate ( 'UUU' ) ) . toEqual ( [ 'Phenylalanine' ] ) ;
16
+ } ) ;
17
+ xtest ( 'Phenylalanine RNA sequence 2' , ( ) => {
18
+ expect ( translate ( 'UUC' ) ) . toEqual ( [ 'Phenylalanine' ] ) ;
19
+ } ) ;
20
+
21
+ xtest ( 'Leucine RNA sequence 1' , ( ) => {
22
+ expect ( translate ( 'UUA' ) ) . toEqual ( [ 'Leucine' ] ) ;
23
+ } ) ;
24
+ xtest ( 'Leucine RNA sequence 2' , ( ) => {
25
+ expect ( translate ( 'UUG' ) ) . toEqual ( [ 'Leucine' ] ) ;
26
+ } ) ;
27
+
28
+ xtest ( 'Serine RNA sequence 1' , ( ) => {
29
+ expect ( translate ( 'UCU' ) ) . toEqual ( [ 'Serine' ] ) ;
30
+ } ) ;
31
+ xtest ( 'Serine RNA sequence 2' , ( ) => {
32
+ expect ( translate ( 'UCC' ) ) . toEqual ( [ 'Serine' ] ) ;
33
+ } ) ;
34
+ xtest ( 'Serine RNA sequence 3' , ( ) => {
35
+ expect ( translate ( 'UCA' ) ) . toEqual ( [ 'Serine' ] ) ;
36
+ } ) ;
37
+ xtest ( 'Serine RNA sequence 4' , ( ) => {
38
+ expect ( translate ( 'UCG' ) ) . toEqual ( [ 'Serine' ] ) ;
39
+ } ) ;
40
+
41
+ xtest ( 'Tyrosine RNA sequence 1' , ( ) => {
42
+ expect ( translate ( 'UAU' ) ) . toEqual ( [ 'Tyrosine' ] ) ;
43
+ } ) ;
44
+ xtest ( 'Tyrosine RNA sequence 2' , ( ) => {
45
+ expect ( translate ( 'UAC' ) ) . toEqual ( [ 'Tyrosine' ] ) ;
46
+ } ) ;
47
+
48
+ xtest ( 'Cysteine RNA sequence 1' , ( ) => {
49
+ expect ( translate ( 'UGU' ) ) . toEqual ( [ 'Cysteine' ] ) ;
50
+ } ) ;
51
+ xtest ( 'Cysteine RNA sequence 2' , ( ) => {
52
+ expect ( translate ( 'UGC' ) ) . toEqual ( [ 'Cysteine' ] ) ;
53
+ } ) ;
54
+
55
+ xtest ( 'Tryptophan RNA sequence' , ( ) => {
56
+ expect ( translate ( 'UGG' ) ) . toEqual ( [ 'Tryptophan' ] ) ;
57
+ } ) ;
58
+
59
+ xtest ( 'STOP codon RNA sequence 1' , ( ) => {
60
+ expect ( translate ( 'UAA' ) ) . toEqual ( [ ] ) ;
61
+ } ) ;
62
+ xtest ( 'STOP codon RNA sequence 2' , ( ) => {
63
+ expect ( translate ( 'UAG' ) ) . toEqual ( [ ] ) ;
64
+ } ) ;
65
+ xtest ( 'STOP codon RNA sequence 3' , ( ) => {
66
+ expect ( translate ( 'UGA' ) ) . toEqual ( [ ] ) ;
35
67
} ) ;
36
68
} ) ;
37
69
@@ -71,13 +103,13 @@ describe('ProteinTranslation', () => {
71
103
'Tyrosine' ,
72
104
] ) ;
73
105
} ) ;
74
- } ) ;
75
106
76
- describe ( 'Unexpected strands' , ( ) => {
77
- xtest ( "Non-existing codon can't translate" , ( ) => {
78
- expect ( ( ) => translate ( 'AAA' ) ) . toThrow ( new Error ( 'Invalid codon' ) ) ;
107
+ xtest ( 'Sequence of two non-STOP codons does not translate to a STOP codon' , ( ) => {
108
+ expect ( translate ( 'AUGAUG' ) ) . toEqual ( [ 'Methionine' , 'Methionine' ] ) ;
79
109
} ) ;
110
+ } ) ;
80
111
112
+ describe ( 'Unexpected strands' , ( ) => {
81
113
xtest ( "Unknown amino acids, not part of a codon, can't translate" , ( ) => {
82
114
expect ( ( ) => translate ( 'XYZ' ) ) . toThrow ( new Error ( 'Invalid codon' ) ) ;
83
115
} ) ;
0 commit comments