aboutsummaryrefslogtreecommitdiff
path: root/src/framework
diff options
context:
space:
mode:
authorLakelezz <[email protected]>2018-09-11 20:18:50 +0200
committerGitHub <[email protected]>2018-09-11 20:18:50 +0200
commit79d8843e3640bcc6ffffc0101f3ef458f6770684 (patch)
treeddb85147c332dcd452e0997a47154075e794374c /src/framework
parentAdd missing usage on plain help (#386) (diff)
downloadserenity-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.rs81
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)];
+ }
+}