polish 0.9.9

Test-Driven Development done right
Documentation
use chrono::prelude::Local;
use ansi_term::Colour::{Green, Red, Cyan, Yellow, Purple};

pub enum LogType {
    PASS,
    FAIL,
    INFO,
    WARN,
}

pub struct Logger {
    _pass: i32,
    _fail: i32,
    _warn: i32,
    _info: i32,
}
impl Logger {
    pub fn new() -> Logger {
        Logger {
            _pass: 0,
            _fail: 0,
            _warn: 0,
            _info: 0,
        }
    }
    fn log(&mut self, log_type: LogType, message: String) {
        let mark = match log_type {
            LogType::PASS => {
                self._pass += 1;
                Green.paint("PASS")
            }
            LogType::FAIL => {
                self._fail += 1;
                Red.paint("FAIL")
            }
            LogType::INFO => {
                self._info += 1;
                Cyan.paint("INFO")
            }
            LogType::WARN => {
                self._warn += 1;
                Yellow.paint("WARN")
            }
        };
        println!("{} {}: {}",
                 Purple.paint(Local::now().format("%Y-%m-%d %H:%M:%S").to_string()),
                 mark,
                 message);
    }
    pub fn pass(&mut self, message: String) {
        self.log(LogType::PASS, message);
    }
    pub fn fail(&mut self, message: String) {
        self.log(LogType::FAIL, message);
    }
    pub fn info(&mut self, message: String) {
        self.log(LogType::INFO, message);
    }
    pub fn warn(&mut self, message: String) {
        self.log(LogType::WARN, message);
    }
    pub fn get_num_pass(&self) -> i32 {
        self._pass
    }
    pub fn get_num_fail(&self) -> i32 {
        self._fail
    }
    pub fn get_num_warn(&self) -> i32 {
        self._warn
    }
    pub fn get_num_info(&self) -> i32 {
        self._info
    }
    pub fn drop(&mut self) {
        let formatted_pass = format!("{} {}", self.get_num_pass(), Green.paint("PASS"));
        let formatted_fail = format!("{} {}", self.get_num_fail(), Red.paint("FAIL"));
        let formatted_warn = format!("{} {}", self.get_num_warn(), Yellow.paint("WARN"));
        let formatted_info = format!("{} {}", self.get_num_info(), Cyan.paint("INFO"));
        println!("{}  {}  {}  {}",
                 formatted_pass,
                 formatted_fail,
                 formatted_warn,
                 formatted_info);
    }
}