Skip to content

Commit b9895b8

Browse files
committed
Add unit tests for autocycler gfa2fasta
1 parent b0d2994 commit b9895b8

File tree

1 file changed

+68
-0
lines changed

1 file changed

+68
-0
lines changed

src/gfa2fasta.rs

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@ fn save_graph_to_fasta(graph: &UnitigGraph, out_fasta: &Path) {
6161
for unitig in &graph.unitigs {
6262
let unitig = unitig.borrow();
6363
let seq = String::from_utf8_lossy(&unitig.forward_seq);
64+
if seq.is_empty() { continue; }
6465
let circ = if unitig.is_isolated_and_circular() {
6566
circ_count += 1;
6667
" circular=true".to_string()
@@ -76,3 +77,70 @@ fn save_graph_to_fasta(graph: &UnitigGraph, out_fasta: &Path) {
7677
if non_circ_count == 1 { "" } else { "s" });
7778
eprintln!();
7879
}
80+
81+
82+
#[cfg(test)]
83+
mod tests {
84+
use tempfile::tempdir;
85+
use crate::test_gfa::*;
86+
use super::*;
87+
88+
#[test]
89+
fn test_gfa2fasta_1() {
90+
let temp_dir = tempdir().unwrap();
91+
let fasta_file = temp_dir.path().join("temp.fasta");
92+
let (graph, _) = UnitigGraph::from_gfa_lines(&get_test_gfa_1());
93+
save_graph_to_fasta(&graph, &fasta_file);
94+
let contents = std::fs::read_to_string(&fasta_file).unwrap();
95+
assert_eq!(contents, ">1 length=22\nTTCGCTGCGCTCGCTTCGCTTT\n\
96+
>2 length=18\nTGCCGTCGTCGCTGTGCA\n\
97+
>3 length=15\nTGCCTGAATCGCCTA\n\
98+
>4 length=10\nGCTCGGCTCG\n\
99+
>5 length=8\nCGAACCAT\n\
100+
>6 length=7\nTACTTGT\n\
101+
>7 length=5\nGCCTT\n\
102+
>8 length=4\nATCT\n\
103+
>9 length=2\nGC\n\
104+
>10 length=1\nT\n");
105+
}
106+
107+
108+
#[test]
109+
fn test_gfa2fasta_2() {
110+
let temp_dir = tempdir().unwrap();
111+
let fasta_file = temp_dir.path().join("temp.fasta");
112+
let (graph, _) = UnitigGraph::from_gfa_lines(&get_test_gfa_2());
113+
save_graph_to_fasta(&graph, &fasta_file);
114+
let contents = std::fs::read_to_string(&fasta_file).unwrap();
115+
assert_eq!(contents, ">1 length=22\nACCGCTGCGCTCGCTTCGCTCT\n\
116+
>2 length=5\nATGAT\n\
117+
>3 length=4\nGCGC\n");
118+
}
119+
120+
121+
#[test]
122+
fn test_gfa2fasta_5() {
123+
let temp_dir = tempdir().unwrap();
124+
let fasta_file = temp_dir.path().join("temp.fasta");
125+
let (graph, _) = UnitigGraph::from_gfa_lines(&get_test_gfa_5());
126+
save_graph_to_fasta(&graph, &fasta_file);
127+
let contents = std::fs::read_to_string(&fasta_file).unwrap();
128+
assert_eq!(contents, ">1 length=19\nAGCATCGACATCGACTACG\n\
129+
>2 length=15\nAGCATCAGCATCAGC\n\
130+
>3 length=9\nGTCGCATTT\n\
131+
>4 length=7 circular=true\nTCGCGAA\n\
132+
>5 length=6\nTTAAAC\n\
133+
>6 length=4\nCACA\n");
134+
}
135+
136+
137+
#[test]
138+
fn test_gfa2fasta_8() {
139+
let temp_dir = tempdir().unwrap();
140+
let fasta_file = temp_dir.path().join("temp.fasta");
141+
let (graph, _) = UnitigGraph::from_gfa_lines(&get_test_gfa_8());
142+
save_graph_to_fasta(&graph, &fasta_file);
143+
let contents = std::fs::read_to_string(&fasta_file).unwrap();
144+
assert_eq!(contents, ">1 length=19 circular=true\nAGCATCGACATCGACTACG\n");
145+
}
146+
}

0 commit comments

Comments
 (0)