preserves/implementations/rust/preserves-schema/src/lib.rs

47 lines
1.4 KiB
Rust
Raw Normal View History

2021-06-28 14:35:45 +00:00
pub mod syntax;
pub mod compiler;
2021-06-29 20:32:35 +00:00
pub mod support;
pub mod gen;
2021-06-28 14:35:45 +00:00
#[cfg(test)]
mod tests {
#[test]
fn can_access_preserves_core() {
use preserves::value::*;
assert_eq!(format!("{:?}", UnwrappedIOValue::from(3 + 4)), "7");
}
#[test]
fn simple_rendering() {
use crate::*;
use crate::syntax::block::*;
let code = semiblock![
seq!["f", parens!["a", "b", "c"]],
seq!["f", parens!["a", "b", "c"]],
seq!["f", parens!["a", "b", "c"]],
seq!["f", parens!["a", "b", "c"]],
seq!["f", parens!["a", "b", "c"]],
seq!["f", parens!["a", "b", "c"]],
seq!["g", parens![]],
parens![]
];
println!("{}", Formatter::to_string(&code));
}
#[test]
fn metaschema_parsing() -> Result<(), std::io::Error> {
use preserves::value::{BinarySource, IOBinarySource, Reader};
2021-06-30 07:53:32 +00:00
use crate::gen::schema::*;
2021-06-28 14:35:45 +00:00
let mut f = std::fs::File::open("../../../schema/schema.bin")?;
let mut src = IOBinarySource::new(&mut f);
let mut reader = src.packed_iovalues();
let schema = reader.demand_next(false)?;
let literals = crate::gen::Literals::default();
let parsed = Schema::parse(&literals, &schema).expect("successful parse");
assert_eq!(schema, parsed.unparse(&literals));
2021-06-28 14:35:45 +00:00
Ok(())
}
}