buup/transformers/
text_reverse.rs

1use crate::{Transform, TransformError, TransformerCategory};
2
3/// Text Reverse transformer
4#[derive(Debug, Clone, Copy, PartialEq, Eq)]
5pub struct TextReverse;
6
7impl Transform for TextReverse {
8    fn name(&self) -> &'static str {
9        "Text Reverse"
10    }
11
12    fn id(&self) -> &'static str {
13        "textreverse"
14    }
15
16    fn description(&self) -> &'static str {
17        "Reverses the input text"
18    }
19
20    fn category(&self) -> TransformerCategory {
21        TransformerCategory::Other
22    }
23
24    fn transform(&self, input: &str) -> Result<String, TransformError> {
25        Ok(input.chars().rev().collect())
26    }
27
28    fn default_test_input(&self) -> &'static str {
29        "Hello, World!"
30    }
31}
32
33#[cfg(test)]
34mod tests {
35    use super::*;
36
37    #[test]
38    fn test_text_reverse() {
39        let transformer = TextReverse;
40        assert_eq!(
41            transformer
42                .transform(transformer.default_test_input())
43                .unwrap(),
44            "!dlroW ,olleH"
45        );
46        assert_eq!(transformer.transform("").unwrap(), "");
47        assert_eq!(transformer.transform("a").unwrap(), "a");
48        assert_eq!(transformer.transform("ab").unwrap(), "ba");
49    }
50}