conspire 0.7.2

The Rust interface to conspire.
Documentation
use super::{Assert, AssertionError};
use crate::{
    EPSILON,
    math::{TensorRank1, TensorRank1List},
};

#[test]
#[should_panic(expected = "Assertion `left == right` failed.")]
fn assert_eq_fail() {
    Assert::eq(0.0, &1.0).unwrap()
}

#[test]
#[should_panic(expected = "Assertion `left ≈= right` failed in 2 places.")]
fn assert_eq_from_fd_fail() {
    Assert::default()
        .eq_within_fd_tol(
            TensorRank1::<_, 1>::from([1.0, 2.0, 3.0]),
            &TensorRank1::<_, 1>::from([3.0, 2.0, 1.0]),
        )
        .unwrap()
}

#[test]
fn assert_eq_from_fd_success() -> Result<(), AssertionError> {
    Assert::default().eq_within_fd_tol(
        TensorRank1::<_, 1>::from([1.0, 2.0, 3.0]),
        &TensorRank1::<_, 1>::from([1.0, 2.0, 3.0]),
    )
}

#[test]
fn assert_eq_from_fd_weak() -> Result<(), AssertionError> {
    Assert::default().eq_within_fd_tol(
        TensorRank1List::<_, 1, 1>::from([[EPSILON * 1.01]]),
        &TensorRank1List::<_, 1, 1>::from([[EPSILON * 1.02]]),
    )
}

#[test]
#[should_panic(expected = "Assertion `left ≈= right` failed in 2 places.")]
fn assert_eq_within_tols_fail() {
    Assert::default()
        .eq_within_tols(
            TensorRank1::<_, 1>::from([1.0, 2.0, 3.0]),
            &TensorRank1::<_, 1>::from([3.0, 2.0, 1.0]),
        )
        .unwrap()
}

#[test]
#[should_panic(expected = "Assertion `left == right` failed.")]
fn assert_eq_fail_new() {
    Assert::eq(0.0, 1.0).unwrap()
}

#[test]
#[should_panic(expected = "Assertion `left ≈= right` failed in 2 places.")]
fn assert_eq_within_tols_fail_new() {
    Assert::default()
        .eq_within_tols(
            TensorRank1::<_, 1>::from([1.0, 2.0, 3.0]),
            TensorRank1::<_, 1>::from([3.0, 2.0, 1.0]),
        )
        .unwrap()
}

#[test]
#[should_panic(expected = "Assertion `left ≈= right` failed in 2 places.")]
fn assert_eq_within_fd_tol_fail_new() {
    Assert::default()
        .eq_within_fd_tol(
            TensorRank1::<_, 1>::from([1.0, 2.0, 3.0]),
            TensorRank1::<_, 1>::from([3.0, 2.0, 1.0]),
        )
        .unwrap()
}

#[test]
fn assert_eq_within_fd_tol_success_new() {
    Assert::default()
        .eq_within_fd_tol(
            TensorRank1::<_, 1>::from([1.0, 2.0, 3.0]),
            TensorRank1::<_, 1>::from([1.0, 2.0, 3.0]),
        )
        .unwrap()
}

#[test]
#[allow(clippy::needless_borrows_for_generic_args)]
fn assert_eq_owned_and_ref_combinations() -> Result<(), AssertionError> {
    let a = || TensorRank1::<3, 1>::from([1.0, 2.0, 3.0]);
    let b = || TensorRank1::<3, 1>::from([1.0, 2.0, 3.0]);
    Assert::eq(a(), b())?;
    Assert::eq(&a(), b())?;
    Assert::eq(a(), &b())?;
    Assert::eq(&a(), &b())
}

#[test]
fn assert_zero() -> Result<(), AssertionError> {
    Assert::zero(&0.0)
}

#[test]
#[should_panic(expected = "Assertion `left == right` failed.")]
fn assert_zero_fail() {
    Assert::zero(&1.0).unwrap()
}

#[test]
fn assert_zero_within_tols() -> Result<(), AssertionError> {
    Assert::default().zero_within_tols(&TensorRank1::<3, 1>::from([0.0, 0.0, 0.0]))
}

#[test]
#[should_panic(expected = "Assertion `left ≈= right` failed in 1 places.")]
fn assert_zero_within_tols_fail() {
    Assert::default()
        .zero_within_tols(&TensorRank1::<3, 1>::from([1.0, 0.0, 0.0]))
        .unwrap()
}