llzk-sys 30.1.0

Rust bindings to the LLZK C API.
use crate::{
    LlzkBoolFeltCmpPredicate, llzkAttributeIsA_Bool_FeltCmpPredicateAttr,
    llzkBool_FeltCmpPredicateAttrGet, mlirGetDialectHandle__llzk__boolean__,
    sanity_tests::{TestContext, context},
};
use mlir_sys::mlirUnitAttrGet;
use rstest::rstest;
use std::ptr::null;

#[test]
fn test_mlir_get_dialect_handle_llzk_boolean() {
    unsafe {
        mlirGetDialectHandle__llzk__boolean__();
    }
}

#[rstest]
fn test_llzk_felt_cmp_predicate_attr_get(
    context: TestContext,
    #[values(
        crate::LlzkBoolFeltCmpPredicate_LlzkBoolFeltCmpPredicate_EQ,
        crate::LlzkBoolFeltCmpPredicate_LlzkBoolFeltCmpPredicate_NE,
        crate::LlzkBoolFeltCmpPredicate_LlzkBoolFeltCmpPredicate_LT,
        crate::LlzkBoolFeltCmpPredicate_LlzkBoolFeltCmpPredicate_LE,
        crate::LlzkBoolFeltCmpPredicate_LlzkBoolFeltCmpPredicate_GT,
        crate::LlzkBoolFeltCmpPredicate_LlzkBoolFeltCmpPredicate_GE
    )]
    cmp: LlzkBoolFeltCmpPredicate,
) {
    unsafe {
        let attr = llzkBool_FeltCmpPredicateAttrGet(context.ctx, cmp);
        assert_ne!(attr.ptr, null());
    }
}

#[rstest]
fn test_llzk_attribute_is_a_felt_cmp_predicate_attr_pass(context: TestContext) {
    unsafe {
        let attr = llzkBool_FeltCmpPredicateAttrGet(context.ctx, 0);
        assert!(llzkAttributeIsA_Bool_FeltCmpPredicateAttr(attr));
    }
}

#[rstest]
fn test_llzk_attribute_is_a_felt_cmp_predicate_attr_fail(context: TestContext) {
    unsafe {
        let attr = mlirUnitAttrGet(context.ctx);
        assert!(!llzkAttributeIsA_Bool_FeltCmpPredicateAttr(attr));
    }
}