Skip to content

Commit c34254e

Browse files
committed
normalize string, add tests
1 parent 927b0ba commit c34254e

1 file changed

Lines changed: 19 additions & 1 deletion

File tree

src/assemblies/mod.rs

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,8 @@ impl FromStr for Assembly {
3838
type Err = String;
3939

4040
fn from_str(s: &str) -> Result<Self, Self::Err> {
41-
match s.to_lowercase().replace(".p", "p").as_str() {
41+
let normalized = s.trim().to_lowercase().replace(".p", "p");
42+
match normalized.as_str() {
4243
"grch37" => Ok(Assembly::Grch37),
4344
"grch37p10" => Ok(Assembly::Grch37p10),
4445
"grch38" => Ok(Assembly::Grch38),
@@ -90,6 +91,7 @@ lazy_static::lazy_static! {
9091
#[cfg(test)]
9192
mod test {
9293
use pretty_assertions::assert_eq;
94+
use std::str::FromStr;
9395

9496
use crate::assemblies::{Assembly, ASSEMBLY_INFOS};
9597

@@ -99,6 +101,22 @@ mod test {
99101
assert_eq!(ASSEMBLY_INFOS[Assembly::Grch37p10].sequences.len(), 275);
100102
assert_eq!(ASSEMBLY_INFOS[Assembly::Grch38].sequences.len(), 455);
101103
}
104+
105+
#[test]
106+
fn parse_assembly_from_str() {
107+
assert_eq!(Assembly::from_str("GRCh37").unwrap(), Assembly::Grch37);
108+
assert_eq!(
109+
Assembly::from_str("grch37.p10").unwrap(),
110+
Assembly::Grch37p10
111+
);
112+
assert_eq!(Assembly::from_str("gRcH38").unwrap(), Assembly::Grch38);
113+
assert!(Assembly::from_str("hg19").is_err());
114+
}
115+
116+
#[test]
117+
fn parse_assembly_try_from_str() {
118+
assert_eq!(Assembly::try_from("GRCh38").unwrap(), Assembly::Grch38);
119+
}
102120
}
103121

104122
// <LICENSE>

0 commit comments

Comments
 (0)