irc_bot/modules/
test.rs

1use core::BotCmdAuthLvl as Auth;
2use core::*;
3use yaml_rust::Yaml;
4
5pub fn mk() -> Module {
6    mk_module("test")
7        .command(
8            "test-line-wrap",
9            "",
10            "Request a long message from the bot, to test its line-wrapping function.",
11            Auth::Admin,
12            Box::new(test_line_wrap),
13            &[],
14        )
15        .command(
16            "test-error-handling",
17            "",
18            "This command's handler function returns an error, to test the bot framework's \
19             error-handling mechanism(s).",
20            Auth::Admin,
21            Box::new(test_error_handling),
22            &[],
23        )
24        .command(
25            "test-panic-catching",
26            "",
27            "This command's handler function panics, to test the bot framework's panic-catching \
28             mechanism.",
29            Auth::Admin,
30            Box::new(test_panic_catching),
31            &[],
32        )
33        .end()
34}
35
36const LOREM_IPSUM_TEXT: &'static str =
37    "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer et tincidunt nibh. Nullam \
38     aliquet imperdiet cursus. Duis at turpis mollis, iaculis quam sed, efficitur arcu. Sed vel \
39     massa sit amet magna efficitur hendrerit. Donec auctor auctor ligula nec semper. Nulla a \
40     odio suscipit, suscipit velit in, ullamcorper velit. In bibendum pulvinar ipsum. Fusce \
41     elementum maximus mattis. Donec sed mauris nec ante eleifend dapibus non faucibus massa. \
42     Vivamus a auctor ligula. Cras hendrerit, velit sit amet sagittis placerat, elit elit feugiat \
43     quam, vel aliquet ligula elit sit amet nibh. Fusce dignissim, orci vitae sodales ornare, \
44     lacus risus facilisis sem, a imperdiet lectus massa at velit. Etiam sed magna congue, \
45     pulvinar diam quis, facilisis risus. Sed semper, lectus vulputate luctus fermentum, quam \
46     lacus consectetur arcu, ac mollis ipsum metus vel nunc. Ut posuere arcu enim, id dictum arcu \
47     sagittis in. Mauris a lectus nec ligula eleifend rutrum. Class aptent taciti sociosqu ad \
48     litora torquent per conubia massa nunc.";
49
50fn test_line_wrap(_: &State, _: &MsgMetadata, _: &Yaml) -> BotCmdResult {
51    BotCmdResult::Ok(Reaction::Reply(LOREM_IPSUM_TEXT.into()))
52}
53
54fn test_error_handling(_: &State, _: &MsgMetadata, _: &Yaml) -> BotCmdResult {
55    BotCmdResult::BotErrMsg("An error for testing purposes.".into())
56}
57
58fn test_panic_catching(_: &State, _: &MsgMetadata, _: &Yaml) -> BotCmdResult {
59    panic!("Panicking for testing purposes....")
60}