extern crate glob;
extern crate qasm;
use glob::glob;
use qasm::{lex, parse, process};
use std::path::Path;
use std::fs::File;
use std::io::prelude::*;
fn test_parse(source: &str) {
let mut tokens = lex(source);
match parse(&mut tokens) {
Ok(_) => assert!(true),
Err(e) => {
println!("Error: {}", e);
println!("Source: {}", source);
assert!(false)
}
}
}
#[test]
fn works_with_examples() {
for entry in glob("tests/source/*.qasm").expect("Failed to read glob pattern") {
match entry {
Ok(path) => {
let mut f = File::open(&path).unwrap();
let mut contents = String::new();
f.read_to_string(&mut contents).expect("Couldn't Read File");
contents = process(&contents, Path::new("tests/source"));
test_parse(&contents)
}
Err(e) => println!("{:?}", e),
}
}
}