Sha256: 35dede30973e994640e459e325b735e435c872fd79484d6ead96d732a34ec4b9

Contents?: true

Size: 1.8 KB

Versions: 330

Compression:

Stored size: 1.8 KB

Contents

use std::collections::HashMap;

extern crate word_count;

fn check_word_count(s: &str, pairs: Vec<(&str, u32)>) {
    // The reason for the awkward code in here is to ensure that the failure
    // message for assert_eq! is as informative as possible. A simpler
    // solution would simply check the length of the map, and then
    // check for the presence and value of each key in the given pairs vector.
    let mut m: HashMap<String, u32> = word_count::word_count(s);
    for &(k, v) in pairs.iter() {
        assert_eq!((k, m.remove(&k.to_string()).unwrap_or(0)), (k, v));
    }
    // may fail with a message that clearly shows all extra pairs in the map
    assert_eq!(m.iter().collect::<Vec<(&String,&u32)>>(), vec!());
}

#[test]
fn test_count_one_word() {
    check_word_count("word", vec![("word", 1)]);
}

#[test]
#[ignore]
fn test_count_one_of_each() {
    check_word_count(
        "one of each",
        vec![("one", 1),
             ("of", 1),
             ("each", 1)]);
}

#[test]
#[ignore]
fn test_count_multiple_occurrences() {
    check_word_count(
        "one fish two fish red fish blue fish",
        vec![("one", 1),
             ("fish", 4),
             ("two", 1),
             ("red", 1),
             ("blue", 1)]);
}

#[test]
#[ignore]
fn test_ignore_punctuation() {
    check_word_count(
        "car : carpet as java : javascript!!&@$%^&",
        vec![("car", 1),
             ("carpet", 1),
             ("as", 1),
             ("java", 1),
             ("javascript", 1)]);
}

#[test]
#[ignore]
fn test_include_numbers() {
    check_word_count(
        "testing, 1, 2 testing",
        vec![("testing", 2),
             ("1", 1),
             ("2", 1)]);
}

#[test]
#[ignore]
fn test_normalize_case() {
    check_word_count(
        "go Go GO Stop stop",
        vec![("go", 3),
             ("stop", 2)]);
}

Version data entries

330 entries across 330 versions & 1 rubygems

Version Path
trackler-2.2.1.113 tracks/rust/exercises/word-count/tests/word-count.rs
trackler-2.2.1.111 tracks/rust/exercises/word-count/tests/word-count.rs
trackler-2.2.1.110 tracks/rust/exercises/word-count/tests/word-count.rs
trackler-2.2.1.109 tracks/rust/exercises/word-count/tests/word-count.rs
trackler-2.2.1.108 tracks/rust/exercises/word-count/tests/word-count.rs
trackler-2.2.1.107 tracks/rust/exercises/word-count/tests/word-count.rs
trackler-2.2.1.106 tracks/rust/exercises/word-count/tests/word-count.rs
trackler-2.2.1.105 tracks/rust/exercises/word-count/tests/word-count.rs
trackler-2.2.1.104 tracks/rust/exercises/word-count/tests/word-count.rs
trackler-2.2.1.103 tracks/rust/exercises/word-count/tests/word-count.rs
trackler-2.2.1.102 tracks/rust/exercises/word-count/tests/word-count.rs
trackler-2.2.1.101 tracks/rust/exercises/word-count/tests/word-count.rs
trackler-2.2.1.100 tracks/rust/exercises/word-count/tests/word-count.rs
trackler-2.2.1.99 tracks/rust/exercises/word-count/tests/word-count.rs
trackler-2.2.1.98 tracks/rust/exercises/word-count/tests/word-count.rs
trackler-2.2.1.97 tracks/rust/exercises/word-count/tests/word-count.rs
trackler-2.2.1.96 tracks/rust/exercises/word-count/tests/word-count.rs
trackler-2.2.1.95 tracks/rust/exercises/word-count/tests/word-count.rs
trackler-2.2.1.94 tracks/rust/exercises/word-count/tests/word-count.rs
trackler-2.2.1.93 tracks/rust/exercises/word-count/tests/word-count.rs