dstat 0.0.2

[●◀] Query systemd units quickly from the command line.
Documentation
use colored::*;

pub fn colorize(arguments: Vec<String>, state_provider: fn(&str) -> bool) -> Vec<ColoredString> {
    let mut result: Vec<ColoredString> = vec![];
    if arguments.len() == 1 {
        println!(
            "Usage: {} <list of units to inspect>",
            env!("CARGO_PKG_NAME")
        );
    }

    for service in arguments.iter().skip(1) {
        let bullet = ColoredString::from("");
        let bullet = match state_provider(service) {
            true => bullet.green(),
            false => bullet.red(),
        };

        let intermediate: &str = &format!("{} {}", bullet, service)[..];
        result.push(ColoredString::from(intermediate));
    }
    return result;
}

#[cfg(test)]
mod tests {
    use super::*;

    fn systemctl_is_inactive(_service: &str) -> bool {
        false
    }

    fn systemctl_is_active(_service: &str) -> bool {
        true
    }

    #[test]
    fn test_colorize_works_is_red_when_typical() {
        let input = vec!["program_name".to_string(), "docker".to_string()];
        let expected_string = format!("{} {}", ColoredString::from("").red(), "docker");
        let expected = vec![ColoredString::from(&expected_string[..])];

        let result: Vec<ColoredString> = colorize(input, systemctl_is_inactive);

        assert_eq!(result[0], *expected.get(0).unwrap());
    }

    #[test]
    fn test_colorize_works_is_green_when_typical() {
        let input = vec!["program_name".to_string(), "docker".to_string()];
        let expected_string = format!("{} {}", ColoredString::from("").green(), "docker");
        let expected = vec![ColoredString::from(&expected_string[..])];

        let result: Vec<ColoredString> = colorize(input, systemctl_is_active);

        assert_eq!(result[0], *expected.get(0).unwrap());
    }
}