use vyre::ir::{BufferDecl, DataType, Expr, Node, Program};
use vyre_conform::{reference::interp, spec::value::Value};
#[test]
fn buf_len_counts_partial_elements() {
let program = Program::new(
vec![
BufferDecl::read("in", 0, DataType::U32),
BufferDecl::read_write("out", 1, DataType::U32),
],
[1, 1, 1],
vec![Node::store("out", Expr::u32(0), Expr::buf_len("in"))],
);
let outputs = interp::run(
&program,
&[
Value::Bytes(vec![0x01, 0x02, 0x03, 0x04, 0x05]),
Value::Bytes(vec![0; 4]),
],
)
.expect("buf_len must account for partial elements");
assert_eq!(outputs, vec![Value::Bytes(vec![2, 0, 0, 0])]);
}