@@ -9,43 +9,72 @@ class TestQ30Handler(HandlerTestBase):
9
9
10
10
def setUp (self ):
11
11
key = "percent_q30"
12
- qc_config = {' name' : ' Q30Handler' , ' error' : 70 , ' warning' : 80 }
12
+ qc_config = {" name" : " Q30Handler" , " error" : 70 , " warning" : 80 }
13
13
value_1 = {"lane" : 1 , "read" : 1 , "percent_q30" : 82 }
14
- value_2 = {"lane" : 1 , "read" : 2 , "percent_q30" : 90 }
15
- value_3 = {"lane" : 1 , "read" : 3 , "percent_q30" : 50 , "is_index_read" : True }
14
+ value_2 = {"lane" : 1 , "read" : 2 , "percent_q30" : 50 , "is_index_read" : True }
15
+ value_3 = {"lane" : 1 , "read" : 3 , "percent_q30" : 50 , "is_index_read" : True }
16
+ value_4 = {"lane" : 1 , "read" : 4 , "percent_q30" : 60 }
17
+ value_5 = {"lane" : 2 , "read" : 1 , "percent_q30" : 90 }
18
+ value_6 = {"lane" : 2 , "read" : 2 , "percent_q30" : 50 , "is_index_read" : True }
19
+ value_7 = {"lane" : 2 , "read" : 3 , "percent_q30" : 50 }
20
+ value_8 = {"lane" : 2 , "read" : 4 , "percent_q30" : 40 }
16
21
q30_handler = Q30Handler (qc_config )
17
22
q30_handler .collect ((key , value_1 ))
18
23
q30_handler .collect ((key , value_2 ))
19
24
q30_handler .collect ((key , value_3 ))
25
+ q30_handler .collect ((key , value_4 ))
26
+ q30_handler .collect ((key , value_5 ))
27
+ q30_handler .collect ((key , value_6 ))
28
+ q30_handler .collect ((key , value_7 ))
29
+ q30_handler .collect ((key , value_8 ))
20
30
self .q30_handler = q30_handler
21
31
22
32
def set_qc_config (self , qc_config ):
23
33
self .q30_handler .qc_config = qc_config
24
34
25
35
def test_all_is_fine (self ):
26
- qc_config = {' name' : ' Q30Handler' , ' error' : 70 , ' warning' : 80 }
36
+ qc_config = {" name" : " Q30Handler" , " error" : 20 , " warning" : 30 }
27
37
self .set_qc_config (qc_config )
28
38
errors_and_warnings = list (self .q30_handler .check_qc ())
29
- self .assertIn ("index read" , f"{ errors_and_warnings } " )
30
- self .assertEqual (f"{ errors_and_warnings } " , "[Fatal QC error: %Q30 50.00 was too low on lane: 1 for index read: 1]" )
39
+ self .assertEqual (errors_and_warnings , [])
31
40
32
41
def test_warning (self ):
33
- qc_config = {' name' : ' Q30Handler' , ' error' : 70 , ' warning' : 85 }
42
+ qc_config = {" name" : " Q30Handler" , " error" : 40 , " warning" : 60 }
34
43
self .set_qc_config (qc_config )
35
44
errors_and_warnings = list (self .q30_handler .check_qc ())
36
- self .assertEqual (len (errors_and_warnings ), 2 )
45
+ self .assertEqual (len (errors_and_warnings ), 5 )
37
46
38
47
class_names = self .map_errors_and_warnings_to_class_names (errors_and_warnings )
39
- self .assertListEqual (class_names , ['QCErrorWarning' , 'QCErrorFatal' ])
48
+ self .assertListEqual (
49
+ class_names ,
50
+ ["QCErrorWarning" , "QCErrorWarning" , "QCErrorWarning" , "QCErrorWarning" , "QCErrorWarning" ],
51
+ )
40
52
41
53
def test_error (self ):
42
- qc_config = {' name' : ' Q30Handler' , ' error' : 95 , ' warning' : 98 }
54
+ qc_config = {" name" : " Q30Handler" , " error" : 95 , " warning" : 98 }
43
55
self .set_qc_config (qc_config )
44
56
errors_and_warnings = list (self .q30_handler .check_qc ())
45
- self .assertEqual (len (errors_and_warnings ), 3 )
57
+ self .assertEqual (len (errors_and_warnings ), 8 )
58
+
59
+ self .assertEqual (
60
+ str (errors_and_warnings ),
61
+ str ("[Fatal QC error: %Q30 82.00 was too low on lane: 1 for read: 1, Fatal QC error: %Q30 50.00 was too low on lane: 1 for index read: 1, Fatal QC error: %Q30 50.00 was too low on lane: 1 for index read: 2, Fatal QC error: %Q30 60.00 was too low on lane: 1 for read: 2, Fatal QC error: %Q30 90.00 was too low on lane: 2 for read: 1, Fatal QC error: %Q30 50.00 was too low on lane: 2 for index read: 1, Fatal QC error: %Q30 50.00 was too low on lane: 2 for read: 2, Fatal QC error: %Q30 40.00 was too low on lane: 2 for read: 3]" )
62
+ )
63
+
64
+ def test_max_read (self ):
65
+ qc_config = {"name" : "Q30Handler" , "error" : 99 , "warning" : 99 }
66
+ self .set_qc_config (qc_config )
67
+ errors_and_warnings = list (self .q30_handler .check_qc ())
68
+ self .assertEqual (len (errors_and_warnings ), 8 )
69
+
70
+ [
71
+ self .assertLessEqual (
72
+ int (str (read ).split ("read: " )[1 ]), 4
73
+ )
74
+ for read in errors_and_warnings
75
+ ]
76
+
46
77
47
- class_names = self .map_errors_and_warnings_to_class_names (errors_and_warnings )
48
- self .assertListEqual (class_names , ['QCErrorFatal' , 'QCErrorFatal' , 'QCErrorFatal' ])
49
78
50
- if __name__ == ' __main__' :
79
+ if __name__ == " __main__" :
51
80
unittest .main ()
0 commit comments