From 79d8843e3640bcc6ffffc0101f3ef458f6770684 Mon Sep 17 00:00:00 2001 From: Lakelezz <12222135+Lakelezz@users.noreply.github.com> Date: Tue, 11 Sep 2018 20:18:50 +0200 Subject: Add tests for help (#387) * Add tests for `levenshtein_distance`-function. * Add tests for `Matrix`-struct. --- src/framework/standard/help_commands.rs | 81 +++++++++++++++++++++++++++++++++ 1 file changed, 81 insertions(+) (limited to 'src/framework') diff --git a/src/framework/standard/help_commands.rs b/src/framework/standard/help_commands.rs index 7104525..ccd1e51 100644 --- a/src/framework/standard/help_commands.rs +++ b/src/framework/standard/help_commands.rs @@ -844,3 +844,84 @@ pub fn plain( Ok(()) } + + +#[cfg(test)] +mod levenshtein_tests { + use super::levenshtein_distance; + + #[test] + fn reflexive() { + let word_a = "rusty ferris"; + let word_b = "rusty ferris"; + assert_eq!(0, levenshtein_distance(&word_a, &word_b)); + + let word_a = ""; + let word_b = ""; + assert_eq!(0, levenshtein_distance(&word_a, &word_b)); + + let word_a = "rusty ferris"; + let word_b = "RuSty FerriS"; + assert_eq!(4, levenshtein_distance(&word_a, &word_b)); + } + + #[test] + fn symmetric() { + let word_a = "ferris"; + let word_b = "rusty ferris"; + assert_eq!(6, levenshtein_distance(&word_a, &word_b)); + + let word_a = "rusty ferris"; + let word_b = "ferris"; + assert_eq!(6, levenshtein_distance(&word_a, &word_b)); + + let word_a = ""; + let word_b = "ferris"; + assert_eq!(6, levenshtein_distance(&word_a, &word_b)); + + let word_a = "ferris"; + let word_b = ""; + assert_eq!(6, levenshtein_distance(&word_a, &word_b)); + } + + #[test] + fn transitive() { + let word_a = "ferris"; + let word_b = "turbo fish"; + let word_c = "unsafe"; + + let distance_of_a_c = levenshtein_distance(&word_a, &word_c); + let distance_of_a_b = levenshtein_distance(&word_a, &word_b); + let distance_of_b_c = levenshtein_distance(&word_b, &word_c); + + assert!(distance_of_a_c <= (distance_of_a_b + distance_of_b_c)); + } +} + +#[cfg(test)] +mod matrix_tests { + use super::Matrix; + + #[test] + fn index_mut() { + let mut matrix = Matrix::new(5, 5); + assert_eq!(matrix[(1, 1)], 0); + + matrix[(1, 1)] = 10; + assert_eq!(matrix[(1, 1)], 10); + } + + #[test] + #[should_panic(expected = "the len is 4 but the index is 9")] + fn panic_index_too_high() { + let matrix = Matrix::new(2, 2); + matrix[(3, 3)]; + } + + #[test] + #[should_panic(expected = "the len is 0 but the index is 0")] + fn panic_indexing_when_empty() { + let matrix = Matrix::new(0, 0); + matrix[(0, 0)]; + } +} -- cgit v1.2.3