vyre-libs 0.7.2

vyre Category A library ecosystem - pure-IR compositions over foundation IR and primitive-owned kernels
Documentation
//! Test crate.

#![cfg(feature = "logical")]
#![allow(deprecated)]
use vyre_reference::value::Value;

fn assert_size_mismatch_is_result_error(program: vyre::Program) {
    let error = vyre_reference::reference_eval(
        &program,
        &[
            Value::from(vec![0u8; 16]),
            Value::from(vec![0u8; 16]),
            Value::from(vec![0u8; 12]),
        ],
    )
    .expect_err("Fix: output buffer size mismatch must return a reference_eval error");
    let message = error.to_string();
    assert!(
        message.contains("out") || message.contains("buffer"),
        "Fix: logical buffer-size errors must name the buffer contract: {message}"
    );
}

#[test]
fn and_errors_on_output_buffer_size_mismatch() {
    assert_size_mismatch_is_result_error(vyre_primitives::bitset::and::bitset_and("a", "b", "out", 4));
}

#[test]
fn or_errors_on_output_buffer_size_mismatch() {
    assert_size_mismatch_is_result_error(vyre_primitives::bitset::or::bitset_or("a", "b", "out", 4));
}

#[test]
fn xor_errors_on_output_buffer_size_mismatch() {
    assert_size_mismatch_is_result_error(vyre_primitives::bitset::xor::bitset_xor("a", "b", "out", 4));
}

#[test]
fn nand_errors_on_output_buffer_size_mismatch() {
    assert_size_mismatch_is_result_error(vyre_libs::logical::nand("a", "b", "out", 4));
}

#[test]
fn nor_errors_on_output_buffer_size_mismatch() {
    assert_size_mismatch_is_result_error(vyre_libs::logical::nor("a", "b", "out", 4));
}