all_methods/
all_methods.rs

1use std::io::Write;
2
3use std::{thread, time};
4
5use charlcd::Screen;
6
7macro_rules! test_method {
8    ($screen: ident, $method:ident) => {
9        $screen.clear()?;
10        $screen.flush()?;
11        $screen.write(stringify!($method).as_bytes())?;
12        $screen.write(b"..")?;
13        $screen.flush()?;
14
15        thread::sleep(time::Duration::from_secs(2));
16
17        $screen.$method()?;
18        $screen.write(b"ok")?;
19        $screen.flush()?;
20
21        thread::sleep(time::Duration::from_secs(2));
22    };
23}
24
25fn main() -> std::io::Result<()> {
26    let mut screen = Screen::default()?;
27
28    test_method!(screen, reinit);
29    test_method!(screen, display_off);
30    test_method!(screen, display_on);
31    test_method!(screen, backlight_on);
32    test_method!(screen, backlight_off);
33    test_method!(screen, cursor_off);
34    test_method!(screen, cursor_on);
35    test_method!(screen, blink_on);
36    test_method!(screen, blink_off);
37    test_method!(screen, shift_cursor_left);
38    test_method!(screen, shift_cursor_right);
39    test_method!(screen, shift_display_left);
40    test_method!(screen, kill_eol);
41    test_method!(screen, shift_display_right);
42    test_method!(screen, one_line);
43    test_method!(screen, two_lines);
44
45    // reinit everything back after the test
46    test_method!(screen, reinit);
47
48    Ok(())
49}