diff options
| author | Lakelezz <[email protected]> | 2018-09-11 20:18:50 +0200 |
|---|---|---|
| committer | GitHub <[email protected]> | 2018-09-11 20:18:50 +0200 |
| commit | 79d8843e3640bcc6ffffc0101f3ef458f6770684 (patch) | |
| tree | ddb85147c332dcd452e0997a47154075e794374c /src/framework | |
| parent | Add missing usage on plain help (#386) (diff) | |
| download | serenity-79d8843e3640bcc6ffffc0101f3ef458f6770684.tar.xz serenity-79d8843e3640bcc6ffffc0101f3ef458f6770684.zip | |
Add tests for help (#387)
* Add tests for `levenshtein_distance`-function.
* Add tests for `Matrix`-struct.
Diffstat (limited to 'src/framework')
| -rw-r--r-- | src/framework/standard/help_commands.rs | 81 |
1 files changed, 81 insertions, 0 deletions
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<H: BuildHasher>( 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)]; + } +} |