msq 0.2.1

Rust library implementation of the legacy Master Server Query Protocol
Documentation
use msq::Filter;

#[test]
fn test_filter_simple() {
    let filter = Filter::new().appid(240);

    assert_eq!(filter.as_string(), "\\appid\\240");
}

#[test]
fn test_filter_multi() {
    let filter = Filter::new()
        .appid(240)
        .gametype(&vec!["friendlyfire", "alltalk"])
        .nand()
        .map("de_dust2")
        .end();

    assert_eq!(
        filter.as_string(),
        "\\appid\\240\\gametype\\friendlyfire,alltalk\\nand\\1\\map\\de_dust2"
    );
}

#[test]
fn test_filter_multi_2() {
    let filter = Filter::new()
        .appid(240)
        .nand()
        .map("de_dust2")
        .end()
        .gametype(&vec!["friendlyfire", "alltalk"]);

    assert_eq!(
        filter.as_string(),
        "\\appid\\240\\nand\\1\\map\\de_dust2\\gametype\\friendlyfire,alltalk"
    );
}

#[test]
fn test_filter_multi_3() {
    let filter = Filter::new()
        .appid(240)
        .nand()
        .map("de_dust2")
        .gametype(&vec!["friendlyfire", "alltalk"])
        .end();

    assert_eq!(
        filter.as_string(),
        "\\appid\\240\\nand\\2\\map\\de_dust2\\gametype\\friendlyfire,alltalk"
    );
}

#[test]
fn test_filter_empty_gametype_list() {
    let filter = Filter::new()
        .appid(240)
        .nand()
        .map("de_dust2")
        .gametype(&vec![])
        .end();

    assert_eq!(
        filter.as_string(),
        "\\appid\\240\\nand\\1\\map\\de_dust2"
    );
}

#[test]
fn test_filter_gametype2() {
    let filter = Filter::new()
        .appid(440)
        .gametype(&vec!["cp"])
        .nor()
            .gametype(&vec!["alltalk"])
        .end();

    assert_eq!(
        filter.as_string(),
        "\\appid\\440\\gametype\\cp\\nor\\1\\gametype\\alltalk"
    );
}