You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
121 lines
3.6 KiB
121 lines
3.6 KiB
use crate::core::major::*; |
|
use crate::core::traits::SystemEncoder; |
|
|
|
#[cfg(test)] |
|
mod tests { |
|
use super::*; |
|
|
|
fn create_single_dict() -> Dict { |
|
vec![DictEntry { |
|
phoneme_in: "B".to_string(), |
|
phoneme_out: "2".to_string(), |
|
not_after: vec!["Y".to_string()], |
|
not_before: vec!["X".to_string()], |
|
only_after: vec!["A".to_string()], |
|
only_before: vec!["C".to_string()], |
|
}] |
|
} |
|
|
|
fn create_single_dict_min() -> Dict { |
|
vec![DictEntry { |
|
phoneme_in: "B".to_string(), |
|
phoneme_out: "2".to_string(), |
|
..Default::default() |
|
}] |
|
} |
|
|
|
fn create_double_dict() -> Dict { |
|
vec![DictEntry { |
|
phoneme_in: "CD".to_string(), |
|
phoneme_out: "2".to_string(), |
|
not_after: vec!["YZ".to_string()], |
|
not_before: vec!["WX".to_string()], |
|
only_after: vec!["AB".to_string()], |
|
only_before: vec!["EF".to_string()], |
|
}] |
|
} |
|
|
|
#[test] |
|
fn test_single_symbol_encoding_only_before_only_after_matched() { |
|
let encoder = Encoder::new(create_single_dict()); |
|
let output = encoder.encode("ABC"); |
|
assert_eq!(output, "2") |
|
} |
|
|
|
#[test] |
|
fn test_double_symbol_encoding_only_before_only_after_matched() { |
|
let encoder = Encoder::new(create_double_dict()); |
|
let output = encoder.encode("ABCDEF"); |
|
assert_eq!(output, "2") |
|
} |
|
|
|
#[test] |
|
fn test_single_symbol_encoding_only_before_not_matched_with_other() { |
|
let encoder = Encoder::new(create_single_dict()); |
|
let output = encoder.encode("DBC"); |
|
assert_eq!(output, "") |
|
} |
|
|
|
#[test] |
|
fn test_double_symbol_encoding_only_before_not_matched_with_other() { |
|
let encoder = Encoder::new(create_double_dict()); |
|
let output = encoder.encode("AACDEE"); |
|
assert_eq!(output, "") |
|
} |
|
|
|
#[test] |
|
fn test_case_insensitivity() { |
|
let encoder = Encoder::new(create_double_dict()); |
|
let output = encoder.encode("abcdef"); |
|
assert_eq!(output, "2") |
|
} |
|
|
|
#[test] |
|
fn test_single_symbol_encoding_only_before_not_matched_with_empty() { |
|
let encoder = Encoder::new(create_single_dict()); |
|
let output = encoder.encode("BC"); |
|
assert_eq!(output, "") |
|
} |
|
|
|
#[test] |
|
fn test_single_symbol_encoding_only_before_not_matched_with_not_before() { |
|
let encoder = Encoder::new(create_single_dict()); |
|
let output = encoder.encode("XBC"); |
|
assert_eq!(output, "") |
|
} |
|
|
|
#[test] |
|
fn test_single_symbol_encoding_only_after_not_matched_with_other() { |
|
let encoder = Encoder::new(create_single_dict()); |
|
let output = encoder.encode("ABD"); |
|
assert_eq!(output, "") |
|
} |
|
|
|
#[test] |
|
fn test_single_symbol_encoding_only_after_not_matched_with_empty() { |
|
let encoder = Encoder::new(create_single_dict()); |
|
let output = encoder.encode("AB"); |
|
assert_eq!(output, "") |
|
} |
|
|
|
#[test] |
|
fn test_single_symbol_encoding_only_after_not_matched_with_not_after() { |
|
let encoder = Encoder::new(create_single_dict()); |
|
let output = encoder.encode("ABY"); |
|
assert_eq!(output, "") |
|
} |
|
|
|
#[test] |
|
fn test_single_symbol_encoding_empty_before_after_matched_with_empty() { |
|
let encoder = Encoder::new(create_single_dict_min()); |
|
let output = encoder.encode("B"); |
|
assert_eq!(output, "2") |
|
} |
|
|
|
#[test] |
|
fn test_single_symbol_encoding_empty_before_after_matched_with_others() { |
|
let encoder = Encoder::new(create_single_dict_min()); |
|
let output = encoder.encode("AXBYC"); |
|
assert_eq!(output, "2") |
|
} |
|
}
|
|
|