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> {
|
2021-06-29 14:54:29 +00:00
|
|
|
use preserves::value::{IOValue, Reader};
|
2021-06-28 14:35:45 +00:00
|
|
|
use std::convert::TryFrom;
|
2021-06-29 14:54:29 +00:00
|
|
|
use std::convert::From;
|
2021-06-28 14:35:45 +00:00
|
|
|
|
|
|
|
let mut f = std::fs::File::open("../../../schema/schema.bin")?;
|
|
|
|
let mut reader = preserves::value::PackedReader::decode_read(&mut f);
|
|
|
|
let schema = reader.demand_next(false)?;
|
2021-06-29 20:32:35 +00:00
|
|
|
let parsed = crate::gen::schema::Schema::try_from(&schema).expect("successful parse");
|
2021-06-29 14:54:29 +00:00
|
|
|
assert_eq!(schema, IOValue::from(&parsed));
|
2021-06-28 14:35:45 +00:00
|
|
|
Ok(())
|
|
|
|
}
|
|
|
|
}
|