45 lines
1.1 KiB
Rust
45 lines
1.1 KiB
Rust
|
// TODO: Implement `TryFrom<String>` and `TryFrom<&str>` for the `Status` enum.
|
||
|
// The parsing should be case-insensitive.
|
||
|
|
||
|
pub enum Status {
|
||
|
ToDo,
|
||
|
InProgress,
|
||
|
Done,
|
||
|
}
|
||
|
|
||
|
#[cfg(test)]
|
||
|
mod tests {
|
||
|
use super::*;
|
||
|
use std::convert::TryFrom;
|
||
|
|
||
|
#[test]
|
||
|
fn test_try_from_string() {
|
||
|
let status = Status::try_from("ToDO".to_string()).unwrap();
|
||
|
assert_eq!(status, Status::ToDo);
|
||
|
|
||
|
let status = Status::try_from("inproGress".to_string()).unwrap();
|
||
|
assert_eq!(status, Status::InProgress);
|
||
|
|
||
|
let status = Status::try_from("Done".to_string()).unwrap();
|
||
|
assert_eq!(status, Status::Done);
|
||
|
}
|
||
|
|
||
|
#[test]
|
||
|
fn test_try_from_str() {
|
||
|
let status = Status::try_from("ToDO").unwrap();
|
||
|
assert_eq!(status, Status::ToDo);
|
||
|
|
||
|
let status = Status::try_from("inproGress").unwrap();
|
||
|
assert_eq!(status, Status::InProgress);
|
||
|
|
||
|
let status = Status::try_from("Done").unwrap();
|
||
|
assert_eq!(status, Status::Done);
|
||
|
}
|
||
|
|
||
|
#[test]
|
||
|
fn test_try_from_invalid() {
|
||
|
let status = Status::try_from("Invalid");
|
||
|
assert!(status.is_err());
|
||
|
}
|
||
|
}
|