#[test]
fn from_dsl_source() {
use polydat::dsl::compile_polydat_kernel;
let mut kernel = compile_polydat_kernel(
r#"
input cycle: u64
hashed := hash(cycle)
user_id := mod(hashed, 1000000)
"#,
)
.unwrap();
kernel.set_inputs(&[42]);
let user_id = kernel.pull("user_id").as_u64();
assert!(user_id < 1_000_000);
}
#[test]
fn from_the_assembler_api() {
use polydat::compile::assembly::{PolydatAssembler, WireRef};
use polydat::library::arithmetic::Mod;
use polydat::library::hash::Hash;
let mut asm = PolydatAssembler::new(vec!["cycle".into()]);
asm.add_node(
"hashed",
Box::new(Hash::new()),
vec![WireRef::input("cycle")],
);
asm.add_node(
"user_id",
Box::new(Mod::new(1_000_000)),
vec![WireRef::node("hashed")],
);
asm.add_output("user_id", WireRef::node("user_id"));
let mut kernel = asm.compile().unwrap();
kernel.set_inputs(&[42]);
assert!(kernel.pull("user_id").as_u64() < 1_000_000);
}
#[test]
fn eval_const_expr_examples() {
use polydat::dsl::compile::eval_const_expr;
let v = eval_const_expr("4 * 4").unwrap();
assert_eq!(v.as_u64(), 16); let v = eval_const_expr("4.0 * 4.0").unwrap();
assert_eq!(v.as_f64(), 16.0); }