hegeltest 0.17.0

Property-based testing for Rust, built on Hypothesis
Documentation
// Numeric schema interpreters: integer, boolean, constant.

use crate::native::core::{EngineError, NativeTestCase};
use ciborium::Value;

use super::{bigint_to_cbor, cbor_to_bigint, require};

pub(super) fn interpret_integer(
    ntc: &mut NativeTestCase,
    schema: &Value,
) -> Result<Value, EngineError> {
    let min_cbor = require(schema, "min_value")?;
    let max_cbor = require(schema, "max_value")?;
    let min = cbor_to_bigint(min_cbor)?;
    let max = cbor_to_bigint(max_cbor)?;
    let value = ntc.draw_integer(min, max)?;
    Ok(bigint_to_cbor(&value))
}

pub(super) fn interpret_boolean(ntc: &mut NativeTestCase) -> Result<Value, EngineError> {
    let v = ntc.weighted(0.5, None)?;
    Ok(Value::Bool(v))
}

pub(super) fn interpret_constant(schema: &Value) -> Result<Value, EngineError> {
    let value = require(schema, "value")?;
    Ok(value.clone())
}

#[cfg(test)]
#[path = "../../../tests/embedded/native/schema/numeric_tests.rs"]
mod tests;