#[cfg(test)]
mod sgf_files_test {
use sgf_parser::{Encoding, GameTree, SgfToken};
#[test]
fn parse_sfg() {
let _g = sgf_parser::parse(include_str!("sgf/ShusakuvsInseki.sgf")).unwrap();
}
#[test]
fn parse_iso_marked_sfg() {
use std::fs::File;
use std::io::Read;
let mut file = File::open("tests/sgf/ShusakuvsInseki-iso.sgf").unwrap();
let mut content = vec![];
let _ = file.read_to_end(&mut content);
let sgf_string: String = content.iter().map(|&c| c as char).collect();
let iso_game = sgf_parser::parse(&sgf_string).unwrap();
assert!(has_iso_node(&iso_game));
assert!(!has_utf_node(&iso_game));
let output: String = iso_game.into();
let utf_game = sgf_parser::parse(&output).unwrap();
assert!(!has_iso_node(&utf_game));
assert!(has_utf_node(&utf_game));
}
fn has_iso_node(tree: &GameTree) -> bool {
tree.nodes[0].tokens.iter().any(|token| match token {
SgfToken::Charset(Encoding::Other(enc)) if enc == "ISO-8859" => true,
_ => false,
})
}
fn has_utf_node(tree: &GameTree) -> bool {
tree.nodes[0].tokens.iter().any(|token| match token {
SgfToken::Charset(Encoding::UTF8) => true,
_ => false,
})
}
#[test]
fn parse_sgf_with_empty_node() {
let _g = sgf_parser::parse(include_str!("sgf/empty_node.sgf")).unwrap();
}
}