probability_to_friendly_string 0.3.0

Make probabilities more intuitive by converting them to odds. (i.e. 72.3% becomes "5 in 7")
Documentation
use probability_to_friendly_string::*;

#[test]
fn all_cases() {
    use std::fs;
    let contents = fs::read_to_string("../testCases.txt").expect("Failed to open testCases.txt");
    let lines = contents.lines();
    let mut test_cases = 0;
    for line in lines {
        if line.starts_with("#") || line.trim().len() == 0 {
            continue;
        }
        let parts : Vec<&str> = line.trim().split(",").collect();
        let numerator = parts[1].parse::<u8>().expect("parsing numerator");
        let denominator = parts[2].parse::<u8>().expect("parsing denominator");
        let expected : FriendlyProbability;
        if parts.len() == 3 {
            expected = FriendlyProbability::new(numerator, denominator, "", None);
        } else if parts.len() == 4 {
            expected = FriendlyProbability::new(numerator, denominator, "", parts[3].to_string());
        } else {
            panic!(format!("Got string with wrong number of parts: {}", line.trim()));
        }
        let probability = parts[0].parse::<f32>().expect("parsing probability");
        let friendly_probability = FriendlyProbability::from_probability(probability);
        assert_eq!(expected.numerator(), friendly_probability.numerator());
        assert_eq!(expected.denominator(), friendly_probability.denominator());
        assert_eq!(expected.friendly_string(), friendly_probability.friendly_string());
        test_cases += 1;
    }
    println!("Ran {} test cases", test_cases);
    assert!(test_cases > 0);
}

#[test]
fn all_cases_friendly_description() {
    use std::fs;
    let contents = fs::read_to_string("../testCases.friendlyDescription.txt").expect("Failed to open testCases.friendlyDescription.txt");
    let lines = contents.lines();
    let mut test_cases = 0;
    for line in lines {
        if line.starts_with("#") || line.trim().len() == 0 {
            continue;
        }
        let parts : Vec<&str> = line.trim().split(",").collect();
        let expected_friendly_description = parts[1];
        let probability = parts[0].parse::<f32>().expect("parsing probability");
        let friendly_probability = FriendlyProbability::from_probability(probability);
        assert_eq!(expected_friendly_description, friendly_probability.friendly_description());
        test_cases += 1;
    }
    println!("Ran {} test cases", test_cases);
    assert!(test_cases > 0);
}