cairo-native 0.9.0-rc.3

A compiler to convert Cairo's IR Sierra code to MLIR and execute it.
use crate::nullable::null;
use crate::test::test_utils::assert_eq;

#[test]
fn test_nullable_felt252s() {
    let x = 10;
    let nullable_x = NullableTrait::new(x);
    assert(!nullable_x.is_null(), 'nullable_x.is_null() true');
    assert_eq(@nullable_x.deref(), @x, '*&x != x');
    let y = 11;
    let nullable_y = NullableTrait::new(y);
    assert(!nullable_y.is_null(), 'nullable_y.is_null() true');
    assert_eq(@nullable_y.deref(), @y, '*&y != y');
    let null: Nullable<felt252> = null();
    assert(null.is_null(), 'null.is_null() false');
}

// Testing `u256` as a test for objects of size larger than 1.
#[test]
fn test_nullable_u256() {
    let x: u256 = 10;
    let nullable_x = NullableTrait::new(x);
    assert(!nullable_x.is_null(), 'nullable_x.is_null() true');
    assert_eq(@nullable_x.deref(), @x, '*&x != x');
    let y: u256 = 11;
    let nullable_y = NullableTrait::new(y);
    assert(!nullable_y.is_null(), 'nullable_y.is_null() true');
    assert_eq(@nullable_y.deref(), @y, '*&y != y');

    assert_eq!(nullable_y.deref_or(10), 11);
    assert_eq!(nullable_y.deref_or_else(|| 12), 11);

    let null: Nullable<u256> = null();
    assert(null.is_null(), 'null.is_null() false');
    assert_eq!(null.deref_or(5), 5);
    assert_eq!(null.deref_or_else(|| 6), 6);
}