leo/compiler/tests/integers/mod.rs
2020-06-08 19:13:47 -07:00

69 lines
1.6 KiB
Rust

#[macro_use]
pub mod macros;
use crate::{get_error, EdwardsTestCompiler};
use leo_compiler::errors::{CompilerError, FunctionError};
use leo_types::IntegerError;
pub trait IntegerTester {
/// Tests use of the integer in a function input
fn test_input();
/// Tests a wrapping addition
fn test_add();
/// Tests a wrapping subtraction
fn test_sub();
/// Tests a wrapping multiplication
fn test_mul();
/// Tests a non-wrapping division
fn test_div();
/// Tests a wrapping exponentiation
fn test_pow();
/// Tests == evaluation
fn test_eq();
/// Tests >= evaluation
fn test_ge();
/// Tests > evaluation
fn test_gt();
/// Tests <= evaluation
fn test_le();
/// Tests < evaluation
fn test_lt();
/// Test assert equals constraint keyword
fn test_assert_eq();
/// Test ternary if bool ? num_1 : num_2;
fn test_ternary();
}
pub(crate) fn fail_integer(program: EdwardsTestCompiler) {
match get_error(program) {
CompilerError::FunctionError(FunctionError::IntegerError(IntegerError::InvalidInteger(_string))) => {}
error => panic!("Expected invalid boolean error, got {}", error),
}
}
pub(crate) fn fail_synthesis(program: EdwardsTestCompiler) {
match get_error(program) {
CompilerError::FunctionError(FunctionError::IntegerError(IntegerError::SynthesisError(_string))) => {}
error => panic!("Expected synthesis error, got {}", error),
}
}
// must be below macro definitions!
pub mod u128;
pub mod u16;
pub mod u32;
pub mod u64;
pub mod u8;