leo/compiler/tests/mod.rs

74 lines
2.1 KiB
Rust
Raw Normal View History

2020-07-06 14:59:06 +03:00
pub mod address;
pub mod array;
pub mod boolean;
pub mod circuits;
pub mod field;
pub mod function;
pub mod group;
pub mod import;
2020-06-18 01:40:39 +03:00
pub mod inputs;
pub mod integers;
pub mod mutability;
2020-06-20 05:04:13 +03:00
pub mod statements;
2020-06-20 01:47:09 +03:00
pub mod syntax;
2020-06-02 04:35:43 +03:00
use leo_compiler::{
2020-06-03 02:06:25 +03:00
compiler::Compiler,
2020-06-09 04:39:10 +03:00
errors::{CompilerError, FunctionError, StatementError},
2020-06-03 02:06:25 +03:00
group::edwards_bls12::EdwardsGroupType,
2020-06-02 04:35:43 +03:00
ConstrainedValue,
};
2020-06-02 03:52:33 +03:00
use snarkos_curves::edwards_bls12::Fq;
use snarkos_models::gadgets::r1cs::TestConstraintSystem;
2020-06-23 08:32:57 +03:00
use std::path::PathBuf;
pub type EdwardsTestCompiler = Compiler<Fq, EdwardsGroupType>;
2020-06-02 03:52:33 +03:00
pub type EdwardsConstrainedValue = ConstrainedValue<Fq, EdwardsGroupType>;
2020-05-30 03:34:31 +03:00
pub(crate) fn get_output(program: EdwardsTestCompiler) -> EdwardsConstrainedValue {
2020-05-30 02:43:39 +03:00
let mut cs = TestConstraintSystem::<Fq>::new();
let output = program.compile_constraints(&mut cs).unwrap();
assert!(cs.is_satisfied());
output
}
2020-05-30 03:34:31 +03:00
pub(crate) fn get_error(program: EdwardsTestCompiler) -> CompilerError {
2020-05-30 02:43:39 +03:00
let mut cs = TestConstraintSystem::<Fq>::new();
program.compile_constraints(&mut cs).unwrap_err()
}
2020-06-09 04:39:10 +03:00
pub(crate) fn fail_enforce(program: EdwardsTestCompiler) {
match get_error(program) {
2020-06-20 05:04:13 +03:00
CompilerError::FunctionError(FunctionError::StatementError(StatementError::Error(_))) => {}
2020-06-09 04:39:10 +03:00
error => panic!("Expected evaluate error, got {}", error),
}
}
fn new_compiler() -> EdwardsTestCompiler {
let program_name = "test".to_string();
2020-06-23 08:32:57 +03:00
let path = PathBuf::from("/test/src/main.leo");
let mut compiler = EdwardsTestCompiler::new(program_name);
compiler.set_path(path);
2020-06-23 08:32:57 +03:00
compiler
}
2020-06-09 03:28:09 +03:00
pub(crate) fn parse_program(bytes: &[u8]) -> Result<EdwardsTestCompiler, CompilerError> {
let mut compiler = new_compiler();
2020-06-09 03:28:09 +03:00
let program_string = String::from_utf8_lossy(bytes);
2020-06-09 03:28:09 +03:00
compiler.parse_program(&program_string)?;
2020-06-09 03:28:09 +03:00
Ok(compiler)
}
pub(crate) fn parse_inputs(bytes: &[u8]) -> Result<EdwardsTestCompiler, CompilerError> {
let mut compiler = new_compiler();
let inputs_string = String::from_utf8_lossy(bytes);
compiler.parse_inputs(&inputs_string)?;
Ok(compiler)
}