jia-parse 1.0.0

Command-line and library parser for PDDL and Jia model files.
Documentation
const PDDL_DOMAIN: &str = include_str!("../examples/pddl/delivery/domain.pddl");
const PDDL_PROBLEM: &str = include_str!("../examples/pddl/delivery/problem.pddl");
const JIA_CP: &str = include_str!("../examples/jia/job_shop.jia");
const JIA_LP: &str = include_str!("../examples/jia/production_lp.jia");

#[test]
fn parses_full_pddl_domain_fixture_with_public_api() {
    let domain = jia_parse::pddl::parse_domain_str(PDDL_DOMAIN).unwrap();

    assert_eq!(domain.name, "delivery");
    assert_eq!(domain.predicates.len(), 3);
    assert_eq!(domain.actions.len(), 1);
    assert_eq!(domain.actions[0].name, "deliver");
}

#[test]
fn parses_full_pddl_problem_fixture_with_public_api() {
    let problem = jia_parse::pddl::parse_problem_str(PDDL_PROBLEM).unwrap();

    assert_eq!(problem.name, "delivery-1");
    assert_eq!(problem.domain_name, "delivery");
    assert_eq!(problem.init.len(), 2);
}

#[test]
fn parses_full_jia_cp_fixture_with_public_api() {
    let model = jia_parse::jia::parse_model_str(JIA_CP).unwrap();

    assert_eq!(model.name, "job_shop");
    assert_eq!(model.variables.len(), 2);
    assert_eq!(model.domains.len(), 6);
    assert_eq!(model.constraints.len(), 4);
    assert!(model.objective.is_some());
}

#[test]
fn parses_full_jia_lp_fixture_with_public_api() {
    let model = jia_parse::jia::parse_model_str(JIA_LP).unwrap();

    assert_eq!(model.name, "production");
    assert_eq!(model.model_type, Some(jia_parse::jia::ast::ModelType::Lp));
    assert_eq!(model.variables.len(), 1);
    assert_eq!(model.constraints.len(), 2);
    assert!(model.objective.is_some());
}