Skip to content

Commit 347c73d

Browse files
committed
Can have test generate all files needed
1 parent e5a2fbe commit 347c73d

19 files changed

+65
-121053
lines changed

src/multisketch.rs

+3-9
Original file line numberDiff line numberDiff line change
@@ -160,6 +160,7 @@ impl MultiSketch {
160160

161161
pub fn merge_sketches(&mut self, sketch2: &Self) -> &mut Self {
162162
// First metadata
163+
let offset = self.sketch_metadata.len();
163164
for sketch in sketch2.sketch_metadata.iter() {
164165
if self.name_map.contains_key(sketch.name()) {
165166
panic!(
@@ -168,7 +169,7 @@ impl MultiSketch {
168169
);
169170
} else {
170171
let mut temp_sketch: Sketch = sketch.clone();
171-
let new_index = temp_sketch.get_index() + self.sketch_metadata.len();
172+
let new_index = temp_sketch.get_index() + offset;
172173
temp_sketch.set_index(new_index);
173174
self.name_map
174175
.insert(temp_sketch.name().to_string(), new_index);
@@ -208,6 +209,7 @@ impl fmt::Display for MultiSketch {
208209
}
209210

210211
// This is only used in the tests
212+
// Ignores name_map
211213
impl PartialEq for MultiSketch {
212214
fn eq(&self, other: &Self) -> bool {
213215
let mut metadata_match = true;
@@ -249,14 +251,6 @@ impl PartialEq for MultiSketch {
249251
);
250252
}
251253

252-
if self.name_map != other.name_map {
253-
metadata_match = false;
254-
eprintln!(
255-
"Name maps are mismatching. Self: {:?}, Other: {:?}",
256-
self.name_map, other.name_map
257-
);
258-
}
259-
260254
if self.sketch_bins != other.sketch_bins {
261255
metadata_match = false;
262256
eprintln!(

tests/merge.rs

+62-13
Original file line numberDiff line numberDiff line change
@@ -59,33 +59,82 @@ mod tests {
5959

6060
Command::new(cargo_bin("sketchlib"))
6161
.current_dir(sandbox.get_wd())
62-
.arg("merge")
63-
.arg(sandbox.file_string("test_merge_sketches1", TestDir::Input))
64-
.arg(sandbox.file_string("test_merge_sketches2", TestDir::Input))
62+
.arg("sketch")
63+
.args(&["--k-vals", "17"])
64+
.arg("--seq-files")
65+
.arg(sandbox.file_string("14412_3#82.contigs_velvet.fa.gz", TestDir::Input))
66+
.arg(sandbox.file_string("14412_3#84.contigs_velvet.fa.gz", TestDir::Input))
6567
.arg("-v")
66-
.args(&["-o", "merge_test"])
68+
.args(&["-o", "part1"])
6769
.assert()
6870
.success();
6971

70-
let merged_sketch: MultiSketch =
71-
MultiSketch::load(&sandbox.file_string("merge_test", TestDir::Output))
72-
.expect("Failed to load output merged sketch");
73-
let expected_sketch =
74-
MultiSketch::load(&sandbox.file_string("sketches_all", TestDir::Correct))
75-
.expect("Failed to load expected merged sketch");
72+
Command::new(cargo_bin("sketchlib"))
73+
.current_dir(sandbox.get_wd())
74+
.arg("sketch")
75+
.args(&["--k-vals", "17"])
76+
.arg("--seq-files")
77+
.arg(sandbox.file_string("R6.fa.gz", TestDir::Input))
78+
.arg(sandbox.file_string("TIGR4.fa.gz", TestDir::Input))
79+
.arg("-v")
80+
.args(&["-o", "part2"])
81+
.assert()
82+
.success();
83+
84+
Command::new(cargo_bin("sketchlib"))
85+
.current_dir(sandbox.get_wd())
86+
.arg("sketch")
87+
.args(&["--k-vals", "17"])
88+
.arg("--seq-files")
89+
.arg(sandbox.file_string("14412_3#82.contigs_velvet.fa.gz", TestDir::Input))
90+
.arg(sandbox.file_string("14412_3#84.contigs_velvet.fa.gz", TestDir::Input))
91+
.arg(sandbox.file_string("R6.fa.gz", TestDir::Input))
92+
.arg(sandbox.file_string("TIGR4.fa.gz", TestDir::Input))
93+
.arg("-v")
94+
.args(&["-o", "merged_ref"])
95+
.assert()
96+
.success();
7697

98+
// Overlapping labels fails
99+
Command::new(cargo_bin("sketchlib"))
100+
.current_dir(sandbox.get_wd())
101+
.arg("merge")
102+
.arg("part1")
103+
.arg("part1")
104+
.arg("-v")
105+
.args(&["-o", "merged_test"])
106+
.assert()
107+
.failure();
108+
109+
Command::new(cargo_bin("sketchlib"))
110+
.current_dir(sandbox.get_wd())
111+
.arg("merge")
112+
.arg("part1")
113+
.arg("part2")
114+
.arg("-v")
115+
.args(&["-o", "merged_test"])
116+
.assert()
117+
.success();
118+
119+
// Check .skd the same
77120
let predicate_file = predicate::path::eq_file(Path::new(
78-
&sandbox.file_string("merge_test.skd", TestDir::Output),
121+
&sandbox.file_string("merged_test.skd", TestDir::Output),
79122
));
80123
assert_eq!(
81124
true,
82125
predicate_file.eval(Path::new(
83-
&sandbox.file_string("sketches_all.skd", TestDir::Correct)
126+
&sandbox.file_string("merged_ref.skd", TestDir::Output)
84127
)),
85128
"Merged sketch data does not match"
86129
);
87130

88-
// assess if sketch metadata are the same
131+
// Check .skm the same
132+
let merged_sketch: MultiSketch =
133+
MultiSketch::load(&sandbox.file_string("merged_test", TestDir::Output))
134+
.expect("Failed to load output merged sketch");
135+
let expected_sketch =
136+
MultiSketch::load(&sandbox.file_string("merged_ref", TestDir::Output))
137+
.expect("Failed to load expected merged sketch");
89138
assert_eq!(
90139
merged_sketch, expected_sketch,
91140
"Merged sketch metadata does not match"

0 commit comments

Comments
 (0)