gdl-parser 0.0.8

A parser for GDL (game description language)
Documentation
extern crate gdl_parser;
extern crate rustc_serialize;

use gdl_parser::{parse, Constant, Proposition, Relation};
use gdl_parser::Sentence::{PropSentence, RelSentence};

use rustc_serialize::json;

use std::fs::File;
use std::io::Read;

#[test]
fn test() {
    let mut gdl = String::new();
    let f = File::open("tests/test-alquerque.gdl");
    f.unwrap().read_to_string(&mut gdl).ok().expect("Unable to read GDL file");

    let mut json = String::new();
    let f = File::open("tests/test-alquerque.json");
    f.unwrap().read_to_string(&mut json).ok().expect("Unable to read JSON file");

    assert_eq!(parse(&gdl), json::decode(&json).unwrap());
}

#[test]
fn tests_inverse() {
    let mut gdl = String::new();
    let f = File::open("tests/test-alquerque-min.gdl");
    f.unwrap().read_to_string(&mut gdl).ok().expect("Unable to read GDL file");

    assert_eq!(parse(&gdl).to_string(), gdl.trim());
}

#[test]
fn test_to_string() {
    let sentence = PropSentence(Proposition::new(Constant::new("p")));
    assert_eq!(sentence.to_string(), "p".to_string());

    let sentence = RelSentence(
        Relation::new(Constant::new("p".to_string()),
                      vec![Constant::new("a").into(),
                           Constant::new("b").into()]));
    assert_eq!(sentence.to_string(), "(p a b)".to_string());
}