vrp_parser 0.1.1

A library for parsing VRPLib-formatted files.
Documentation
use vrp_parser::{LoadError, ProblemType, read_from_vrplib, read_from_vrplib_f64};

#[test]
#[ignore]
fn test_read_from_vaplib_succeeds() {
    let filename = "tests/data/vrplib_format/read_vrplib_succeeds.txt";

    let sut = read_from_vrplib(filename).unwrap();

    assert_eq!(sut.name(), "This is a name.");
    assert_eq!(sut.dimension(), 3);
    assert_eq!(sut.problem_type(), ProblemType::CVRP);
    assert_eq!(sut.depots(), &[1]);
    assert_eq!(sut.capacity(), &Some(2));
    assert_eq!(sut.demands(), &Some(vec![0, 11, 12]));
    assert_eq!(
        sut.node_coords(),
        &Some(vec![(0.0, 0.0), (7.0, 8.0), (9.0, 10.0)])
    );
    assert_eq!(
        sut.edge_weights(),
        &[vec![0, 4, 5], vec![4, 0, 6], vec![5, 6, 0]]
    );
}

#[test]
#[ignore]
fn test_read_from_vaplib_euc2d() {
    let filename = "tests/data/vrplib_format/read_vrplib_euc2d.txt";

    let sut = read_from_vrplib(filename).unwrap();

    assert_eq!(sut.name(), "This is a name.");
    assert_eq!(sut.dimension(), 3);
    assert_eq!(sut.problem_type(), ProblemType::CVRP);
    assert_eq!(sut.depots(), &[1]);
    assert_eq!(sut.capacity(), &Some(2));
    assert_eq!(sut.demands(), &Some(vec![0, 11, 12]));
    assert_eq!(
        sut.node_coords(),
        &Some(vec![(0.0, 0.0), (7.0, 8.0), (9.0, 10.0)])
    );
    assert_eq!(
        sut.edge_weights(),
        &[vec![0, 11, 13], vec![11, 0, 3], vec![13, 3, 0]]
    );
}

#[test]
#[ignore]
fn test_read_from_vrplib_f64_succeeds() {
    let filename = "tests/data/vrplib_format/read_vrplib_succeeds.txt";

    let sut = read_from_vrplib_f64(filename).unwrap();

    assert_eq!(sut.name(), "This is a name.");
    assert_eq!(sut.dimension(), 3);
    assert_eq!(sut.problem_type(), ProblemType::CVRP);
    assert_eq!(sut.depots(), &[1]);
    assert_eq!(sut.capacity(), &Some(2.0));
    assert_eq!(sut.demands(), &Some(vec![0.0, 11.0, 12.0]));
    assert_eq!(
        sut.node_coords(),
        &Some(vec![(0.0, 0.0), (7.0, 8.0), (9.0, 10.0)])
    );
    assert_eq!(
        sut.edge_weights(),
        &[
            vec![0.0, 4.0, 5.0],
            vec![4.0, 0.0, 6.0],
            vec![5.0, 6.0, 0.0]
        ]
    );
}

#[test]
#[ignore]
fn test_read_from_vrplib_f64_euc2d() {
    let filename = "tests/data/vrplib_format/read_vrplib_euc2d.txt";

    let sut = read_from_vrplib_f64(filename).unwrap();

    assert_eq!(sut.name(), "This is a name.");
    assert_eq!(sut.dimension(), 3);
    assert_eq!(sut.problem_type(), ProblemType::CVRP);
    assert_eq!(sut.depots(), &[1]);
    assert_eq!(sut.capacity(), &Some(2.0));
    assert_eq!(sut.demands(), &Some(vec![0.0, 11.0, 12.0]));
    assert_eq!(
        sut.node_coords(),
        &Some(vec![(0.0, 0.0), (7.0, 8.0), (9.0, 10.0)])
    );
    assert_eq!(
        sut.edge_weights(),
        &[
            vec![0.0, 11.0, 13.0],
            vec![11.0, 0.0, 3.0],
            vec![13.0, 3.0, 0.0]
        ]
    );
}

#[test]
#[ignore]
fn test_read_from_vrplib_f64_fails() {
    let filename = "tests/data/invalid_vrplib_format/edge_weights_not_given.txt";

    let sut = read_from_vrplib_f64(filename);

    match sut {
        Err(LoadError::Parse(_)) => {}
        _ => panic!(),
    }
}

#[test]
#[ignore]
fn test_read_from_vrplib_fails() {
    let filename = "tests/data/invalid_vrplib_format/edge_weights_not_given.txt";

    let sut = read_from_vrplib(filename);

    match sut {
        Err(LoadError::Parse(_)) => {}
        _ => panic!(),
    }
}