git-anger-library 0.8.1

Count your naughty words in git commit messages
Documentation
use git2::Repository;
use git_anger_library::repo::Repo;
use std::path::Path;

#[test]
fn test_commit_count() {
    let repo = Repository::open(Path::new("./tests/repo").to_path_buf()).unwrap();
    let commits = Repo::commits(&repo).unwrap();
    assert_eq!(commits.len(), 5);
}

#[test]
fn test_example_repo() {
    let repo = Repo::new(Path::new("./tests/repo")).unwrap();

    assert_eq!(repo.authors.len(), 3);
    assert_eq!(repo.total_commits, 5);
    assert_eq!(repo.total_curses, 7);

    let john = repo.authors.get("John Doe").unwrap();
    assert_eq!(john.total_curses, 2);
    assert_eq!(john.total_commits, 1);
    assert_eq!(john.curses.get("bloody").unwrap(), &1);
    assert_eq!(john.curses.get("damn").unwrap(), &1);

    let me = repo.authors.get("Sondre Nilsen").unwrap();
    assert_eq!(me.total_curses, 3);
    assert_eq!(me.total_commits, 3);
    assert_eq!(me.curses.get("fuck").unwrap(), &1);
    assert_eq!(me.curses.get("fucking").unwrap(), &1);
    assert_eq!(me.curses.get("shitty").unwrap(), &1);

    let ola = repo.authors.get("Ola Nordmann").unwrap();
    assert_eq!(ola.total_curses, 2);
    assert_eq!(ola.total_commits, 1);
    assert_eq!(ola.curses.get("fucking").unwrap(), &1);
    assert_eq!(ola.curses.get("bitch").unwrap(), &1);
}

#[test]
fn test_curse_total() {
    let repo = Repo::new(Path::new("./tests/repo")).unwrap();
    let total: usize = repo
        .authors
        .values()
        .map(|a| a.curses.values().sum::<usize>())
        .sum();

    assert_eq!(total, repo.total_curses);
}