use arion;
use arion::routing::UnsolvedProblem;
use arion::vehicle::Vehicle;
use arion::location::Location;

#[test]
fn it_is_solvable()  {
    let problem = UnsolvedProblem::new(
        vec![Vehicle::new(String::from("0"), 10), Vehicle::new(String::from("1"), 10)],
        vec![Location::new(10.0,10.0, 3), Location::new(10.0,10.0,5), Location::new(10.0,10.0,7)]
    );

    assert!(problem.solvable())
}

#[test]
fn not_solvable()  {
    let problem = UnsolvedProblem::new(
        vec![Vehicle::new(String::from("0"), 10), Vehicle::new(String::from("1"), 10)],
        vec![Location::new(10.0,10.0, 9), Location::new(11.0,11.0,9), Location::new(12.0,12.0,7)]
    );
    
    assert!(!problem.solvable())
}


#[test]
fn initial_solution()  {
    let problem = UnsolvedProblem::new(
        vec![Vehicle::new(String::from("0"), 10), Vehicle::new(String::from("1"), 12)],
        vec![Location::new(10.0,10.0, 3), Location::new(10.0,10.0,7), Location::new(10.0,10.0,5)]
    );

    assert!(problem.initial_solution().is_ok())
}