use btor2tools::{Btor2Parser, Btor2ParserError};
use std::{env::current_dir, fs::read_dir};
#[test]
fn parse_btor2_examples() {
let examples_dir = current_dir().unwrap().join("btor2tools/examples/btorsim");
read_dir(&examples_dir)
.unwrap()
.map(|e| e.unwrap())
.filter(|e| e.path().to_str().unwrap().ends_with(".btor2"))
.for_each(|entry| {
let path = entry.path();
println!("parse: {}", path.display());
Btor2Parser::new()
.read_lines(&path)
.unwrap()
.for_each(|line| {
println!("{:?}", line);
})
});
}
#[test]
fn parser_does_not_crash_if_file_does_not_exist() {
let random_file_name = current_dir().unwrap().join("sakdfjaoisdfewhoiajofjds");
let mut parser = Btor2Parser::new();
let result = parser.read_lines(&random_file_name);
assert!(
matches!(result, Err(Btor2ParserError::CouldNotOpenFile(_))),
"parser does not crash on when executed for non existing files"
);
}
#[test]
fn parser_detects_invalid_btor2_file() {
let invalid_btor2_file = current_dir().unwrap().join("tests/invalid.btor2");
let mut parser = Btor2Parser::new();
let result = parser.read_lines(&invalid_btor2_file);
assert!(
matches!(result, Err(Btor2ParserError::SyntaxError(_))),
"parser does recognize BTOR2 files with invalid synthax"
);
}