saphyr-serde/saphyr/tests/spec_test.rs

74 lines
1.8 KiB
Rust
Raw Normal View History

2015-05-27 13:57:42 +00:00
#![allow(dead_code)]
2015-05-30 10:49:54 +00:00
#![allow(non_upper_case_globals)]
2015-05-27 13:57:42 +00:00
extern crate yaml_rust;
use yaml_rust::parser::{Parser, EventReceiver, Event};
use yaml_rust::scanner::TScalarStyle;
2015-05-27 13:57:42 +00:00
#[derive(Clone, PartialEq, PartialOrd, Debug)]
enum TestEvent {
OnDocumentStart,
OnDocumentEnd,
OnSequenceStart,
OnSequenceEnd,
OnMapStart,
OnMapEnd,
OnScalar,
OnAlias,
OnNull,
}
struct YamlChecker {
pub evs: Vec<TestEvent>
}
impl EventReceiver for YamlChecker {
fn on_event(&mut self, ev: &Event) {
let tev = match *ev {
Event::DocumentStart => TestEvent::OnDocumentStart,
Event::DocumentEnd => TestEvent::OnDocumentEnd,
2015-05-28 17:56:03 +00:00
Event::SequenceStart(..) => TestEvent::OnSequenceStart,
2015-05-27 13:57:42 +00:00
Event::SequenceEnd => TestEvent::OnSequenceEnd,
2015-05-28 17:56:03 +00:00
Event::MappingStart(..) => TestEvent::OnMapStart,
2015-05-27 13:57:42 +00:00
Event::MappingEnd => TestEvent::OnMapEnd,
2015-05-30 14:39:50 +00:00
Event::Scalar(ref v, style, _, _)=> {
if v == "~" && style == TScalarStyle::Plain {
2015-05-27 13:57:42 +00:00
TestEvent::OnNull
} else {
TestEvent::OnScalar
}
},
2015-05-28 17:56:03 +00:00
Event::Alias(_) => TestEvent::OnAlias,
2015-05-27 13:57:42 +00:00
_ => { return } // ignore other events
};
self.evs.push(tev);
}
}
fn str_to_test_events(docs: &str) -> Vec<TestEvent> {
let mut p = YamlChecker {
evs: Vec::new()
};
let mut parser = Parser::new(docs.chars());
parser.load(&mut p, true).unwrap();
p.evs
}
macro_rules! assert_next {
($v:expr, $p:pat) => (
match $v.next().unwrap() {
$p => {},
e => { panic!("unexpected event: {:?}", e); }
}
)
}
// auto generated from handler_spec_test.cpp
include!("specexamples.rs.inc");
include!("spec_test.rs.inc");
2015-05-28 18:26:37 +00:00
// hand-crafted tests
//#[test]
//fn test_hc_alias() {
//}