cli-tables 0.2.1

A simple Rust library for generating ASCII tables in a CLI application.
Documentation
#[cfg(test)]
mod tests {
    use cli_tables::{Table, TableError};

    #[test]
    fn test_table_creation() {
        let table = Table::new();
        assert_eq!(table.num_records(), 0);
        assert_eq!(table.num_fields(), 0);
        assert_eq!(format!("{}", table), "([], 0, 0)".to_string());
    }

    #[test]
    fn test_push_valid_record() {
        let mut table = Table::new();
        let record = vec![
            "Dr. Gregory House", 
            "Diagnostician", 
            "Princeton-Plainsboro Teaching Hospital"
        ];
        assert_eq!(table.push_row(&record), Ok(()));
        assert_eq!(table.num_records(), 1);
        assert_eq!(table.num_fields(), 3);
        assert_eq!(
            format!("{}", table), 
            "([[\"Dr. Gregory House\", \"Diagnostician\", \"Princeton-Plainsboro Teaching Hospital\"]], 1, 3)"
        );
    }

    #[test]
    fn test_push_invalid_record() {
        let mut table = Table::new();
        let record = vec![
            "Dr. Gregory House", 
            "Diagnostician", 
            "Princeton-Plainsboro Teaching Hospital"
        ];
        assert_eq!(table.push_row(&record), Ok(()));
        let record = vec![
            "Dr. Lisa Cuddy",
            "Dean of Medicine"
        ];
        assert_eq!(
            table.push_row(&record), 
            Err(TableError {
                message: "Invalid number of fields in record. Found 2, but expected 3.".to_string() 
            })
        );
        assert_eq!(table.num_records(), 1);
        assert_eq!(table.num_fields(), 3);
        assert_eq!(
            format!("{}", table), 
            "([[\"Dr. Gregory House\", \"Diagnostician\", \"Princeton-Plainsboro Teaching Hospital\"]], 1, 3)"
        );
    }

    #[test]
    fn test_to_string_empty_table() {
        let table = Table::new();
        let expected = "+----------------+\n| Table is empty |\n+----------------+";
        assert_eq!(table.to_string(), expected);
    }

    #[test]
    fn test_push_100_records() {
        let mut table = Table::new();
        let record = vec!["a"; 100];
        for _ in 0..100 {
            assert_eq!(table.push_row(&record), Ok(()));
        }
        assert_eq!(table.num_records(), 100);
        assert_eq!(table.num_fields(), 100);
    }

    #[test]
    fn test_push_100_fields() {
        let mut table = Table::new();
        let mut record = Vec::new();
        for _ in 0..100 {
            record.push("a");
        }
        assert_eq!(table.push_row(&record), Ok(()));
        assert_eq!(table.num_records(), 1);
        assert_eq!(table.num_fields(), 100);
    }

    #[test]
    fn test_delete_record() {
        let mut table = Table::new();
        let record = vec!["value1", "value2"];
        assert_eq!(table.push_row(&record), Ok(()));
        let record = vec!["value3".to_string(), "value4".to_string()];
        assert_eq!(table.push_row_string(&record), Ok(()));
        assert_eq!(table.delete_record(0), Ok(()));
        assert_eq!(table.num_records(), 1);
        let row = table.get_row(0).unwrap();
        assert_eq!(row, record)
    }

    #[test]
    fn test_set_table() {
        let mut table = Table::new();
        let table_str = vec![
            vec!["value1", "value2"],
            vec!["value3", "value4"]
        ];
        let expected_num_records = 2;
        let expected_num_fields = 2;
        assert_eq!(table.set(&table_str), Ok(()));
        assert_eq!(table.num_records(), expected_num_records);
        assert_eq!(table.num_fields(), expected_num_fields);
    }

    #[test]
    fn test_push_rows() {
        let mut table = Table::new();
        let records = vec![
            vec!["0", "Pedro", "Pascal", "1996-07-28", "The Last of Us"],
            vec!["1", "Belle", "Ramsey", "1991-09-17", "The Last of Us"],
            vec!["2", "Scott", "Shepherd", "1990-04-20", "The Last of Us"],
            vec!["3", "Nick", "Offerman", "1970-06-26", "The Last of Us"]
        ];
        let expected_num_records = 4;
        let expected_num_fields = 5;
        assert_eq!(table.push_rows(&records), Ok(()));
        assert_eq!(table.num_records(), expected_num_records);
        assert_eq!(table.num_fields(), expected_num_fields);
        assert_eq!(
            format!("{}", table), 
            "([[\"0\", \"Pedro\", \"Pascal\", \"1996-07-28\", \"The Last of Us\"], [\"1\", \"Belle\", \"Ramsey\", \"1991-09-17\", \"The Last of Us\"], [\"2\", \"Scott\", \"Shepherd\", \"1990-04-20\", \"The Last of Us\"], [\"3\", \"Nick\", \"Offerman\", \"1970-06-26\", \"The Last of Us\"]], 4, 5)"
        );
    }
}