diff --git a/crates/uplc/src/optimize/shrinker.rs b/crates/uplc/src/optimize/shrinker.rs index e737782f..1ad05a79 100644 --- a/crates/uplc/src/optimize/shrinker.rs +++ b/crates/uplc/src/optimize/shrinker.rs @@ -577,4 +577,38 @@ mod test { assert_eq!(actual, expected); } + + #[test] + fn wrap_data_reduce_un_i_data() { + let program: Program = Program { + version: (1, 0, 0), + term: Term::equals_integer() + .apply(Term::un_i_data().apply(Term::i_data().apply(Term::integer(1.into())))) + .apply(Term::un_i_data().apply(Term::Constant( + Constant::Data(PlutusData::BigInt(BigInt::Int(5.into()))).into(), + ))) + .lambda("x"), + } + .try_into() + .unwrap(); + + let program: Program = program.try_into().unwrap(); + + let expected = Program { + version: (1, 0, 0), + term: Term::equals_integer() + .apply(Term::integer(1.into())) + .apply(Term::un_i_data().apply(Term::Constant( + Constant::Data(PlutusData::BigInt(BigInt::Int(5.into()))).into(), + ))) + .lambda("x"), + }; + + let expected: Program = expected.try_into().unwrap(); + let actual = program.wrap_data_reduce(); + + let actual: Program = actual.try_into().unwrap(); + + assert_eq!(actual, expected); + } }