use weld::runtime::WeldRuntimeErrno;
mod common;
use crate::common::*;
#[test]
#[should_panic] fn iters_outofbounds_error_test() {
let code = "|x:vec[i32]| result(for(iter(x,0L,20000L,1L), merger[i32,+], |b,i,e| merge(b,e)))";
let ref mut conf = many_threads_conf();
conf.set("weld.compile.enableBoundsChecks", "true");
let input_vec = vec![4; 1000 as usize];
let ref input_data = WeldVec::from(&input_vec);
let err_value = compile_and_run_error(code, conf, input_data);
assert_eq!(err_value.code(), WeldRuntimeErrno::ArrayOutOfBounds);
}
#[test]
#[should_panic] fn outofmemory_error_test() {
let code = "|x:vec[i32]| result(for(x, vecmerger[i32,+](x), |b,i,e| merge(b,{i,e+1})))";
let ref mut conf = default_conf();
conf.set("weld.memory.limit", "50000");
let x = vec![4; 50000 / 4 as usize];
let ref input_data = WeldVec::from(&x);
let err_value = compile_and_run_error(code, conf, input_data);
assert_eq!(err_value.code(), WeldRuntimeErrno::OutOfMemory);
}
#[test]
fn assert_pass_test() {
let code = "|x: i32| assert(x == 0)";
let ref mut conf = default_conf();
let ref input_data: i32 = 0;
let ret_value = compile_and_run(code, conf, input_data);
let data = ret_value.data() as *const i8;
let result = unsafe { *data };
assert_eq!(result, 1);
}
#[test]
#[should_panic]
fn assert_fail_test() {
let code = "|x: i32| assert(x == 1)";
let ref mut conf = default_conf();
let ref input_data: i32 = 0;
let err_value = compile_and_run_error(code, conf, input_data);
assert_eq!(err_value.code(), WeldRuntimeErrno::AssertionError);
}