buup/transformers/
text_reverse.rs1use crate::{Transform, TransformError, TransformerCategory};
2
3#[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}