webweg 0.9.2

An asynchronous API wrapper for UCSD's WebReg course enrollment system.
Documentation
extern crate core;

use webweg::util;

#[test]
fn test_parse_day_code_simple() {
    assert_eq!(["Su", "M", "W"].as_slice(), &util::parse_day_code("013"));
}

#[test]
fn test_parse_day_code_all() {
    assert_eq!(
        ["Su", "M", "Tu", "W", "Th", "F", "Sa"].as_slice(),
        &util::parse_day_code("0123456")
    );
}

#[test]
fn test_parse_day_code_none() {
    assert!(util::parse_day_code("").is_empty());
}

#[test]
fn test_parse_day_code_out_bounds() {
    assert_eq!(
        ["Su", "F", "M", "Tu"].as_slice(),
        &util::parse_day_code("051928")
    );
}

#[test]
fn test_parse_binary_days_simple() {
    assert_eq!(
        ["M", "W", "F", "Su"].as_slice(),
        &util::parse_binary_days("1010101")
    );
}

#[test]
fn test_parse_binary_days_all() {
    assert_eq!(
        ["M", "Tu", "W", "Th", "F", "Sa", "Su"].as_slice(),
        &util::parse_binary_days("1111111")
    );
}

#[test]
fn test_parse_binary_days_none() {
    assert!(util::parse_binary_days("0000000").is_empty());
}

#[test]
fn test_term_seq_id_base() {
    assert_eq!(5200, util::get_term_seq_id("SP22"));
    assert_eq!(5210, util::get_term_seq_id("S122"));
    assert_eq!(5220, util::get_term_seq_id("S222"));
    assert_eq!(5230, util::get_term_seq_id("S322"));
    assert_eq!(5250, util::get_term_seq_id("FA22"));
    assert_eq!(5260, util::get_term_seq_id("WI23"));
}

#[test]
fn test_term_seq_id_one_year() {
    assert_eq!(5270, util::get_term_seq_id("SP23"));
    assert_eq!(5340, util::get_term_seq_id("SP24"));
    assert_eq!(5330, util::get_term_seq_id("WI24"));
    assert_eq!(5320, util::get_term_seq_id("FA23"));
    assert_eq!(5300, util::get_term_seq_id("S323"));
    assert_eq!(5290, util::get_term_seq_id("S223"));
    assert_eq!(5280, util::get_term_seq_id("S123"));
    // Try using an older term, too
    assert_eq!(5190, util::get_term_seq_id("WI22"));
}

#[test]
fn test_term_seq_id_invalid() {
    // Invalid term
    assert_eq!(0, util::get_term_seq_id("XX24"));
    // Invalid year
    assert_eq!(0, util::get_term_seq_id("WI2T"));
}

#[test]
fn test_format_course_code() {
    assert_eq!("  8B", util::get_formatted_course_num("8B"));
    assert_eq!("  1", util::get_formatted_course_num("1"));
    assert_eq!(" 15L", util::get_formatted_course_num("15L"));
    assert_eq!(" 12", util::get_formatted_course_num("12"));
    assert_eq!("158R", util::get_formatted_course_num("158R"));
    assert_eq!("101", util::get_formatted_course_num("101"));
    assert_eq!("MATH", util::get_formatted_course_num("MATH"));
}

#[test]
fn test_format_multiple_courses_full() {
    assert_eq!(
        "CSE:  8B;CSE: 95;MATH:100A",
        util::format_multiple_courses(&["CSE 8B", "CSE 95", "MATH 100A"])
    );
    assert_eq!(
        "CSE:101;MATH:170A;MATH: 20D;MATH:187A;CSE: 11;POLI:102D;POLI:112A;COGS:  9",
        util::format_multiple_courses(&[
            "CSE 101",
            "MATH 170A",
            "math 20d",
            "MATH 187A",
            "cse 11",
            "POLI 102D",
            "poli 112a",
            "cogs 9"
        ])
    );
    assert_eq!(
        "CSE:101;MATH: 20D;MATH:187A;CSE: 11;POLI:102D;POLI:112A;COGS:  9",
        util::format_multiple_courses(&[
            "CSE 101",
            "math20d",
            "MATH187A",
            "cse 11",
            "POLI102D",
            "poli 112a",
            "cogs9"
        ])
    )
}

#[test]
fn test_format_multiple_courses_subj() {
    assert_eq!(
        "CSE;CSE;MATH",
        util::format_multiple_courses(&["CSE", "CSE", "MATH"])
    );
    assert_eq!(
        "COGS;CSE;MATH;POLI;HIST",
        util::format_multiple_courses(&["cogs", "CSE", "Math", "Poli", "hist"])
    );
}

#[test]
fn test_format_multiple_courses_num() {
    assert_eq!(
        "105;101; 30;108;  8A;  5",
        util::format_multiple_courses(&["105", "101", "30", "108", "8A", "5"])
    );
    assert_eq!(
        " 95;  1;  8B;190A;101; 15L;105;171; 30",
        util::format_multiple_courses(&["95", "1", "8B", "190A", "101", "15L", "105", "171", "30"])
    );
}

#[test]
fn test_format_multiple_courses_mixed() {
    assert_eq!("", util::format_multiple_courses([].as_slice() as &[&str]));
    assert_eq!(
        "  8A;CSE: 12",
        util::format_multiple_courses(&["8a", "", "cse12"])
    );
    assert_eq!(
        "CSE:101;105;COGS: 10;  8",
        util::format_multiple_courses(&["cse 101", "105", "cogs 10", "8"])
    );
    assert_eq!(
        "MATH: 20;CSE: 95;COGS:100;MATH: 10",
        util::format_multiple_courses(&["math 20", "cse95", "cogs100", "math10"])
    )
}