|
1 | 1 | use std::array; |
2 | 2 | use std::collections::HashMap; |
| 3 | +use std::sync::LazyLock; |
3 | 4 |
|
4 | 5 | use apollo_starknet_os_program::OS_PROGRAM_BYTES; |
5 | 6 | use cairo_vm::types::builtin_name::BuiltinName; |
@@ -29,6 +30,8 @@ use crate::test_utils::utils::{ |
29 | 30 | }; |
30 | 31 |
|
31 | 32 | const REDUCED_MUL_LIMB_BOUND: i128 = 2_i128.pow(104); |
| 33 | +static MAX_VALUE: LazyLock<Felt> = LazyLock::new(|| Felt::from(REDUCED_MUL_LIMB_BOUND - 1)); |
| 34 | +static MIN_VALUE: LazyLock<Felt> = LazyLock::new(|| Felt::from(-REDUCED_MUL_LIMB_BOUND + 1)); |
32 | 35 |
|
33 | 36 | fn run_reduced_mul_test(a_split: &[Felt], b_split: &[Felt]) { |
34 | 37 | let explicit_args = [ |
@@ -229,19 +232,17 @@ fn test_reduced_mul_random() { |
229 | 232 | run_reduced_mul_test(&a_split, &b_split) |
230 | 233 | } |
231 | 234 |
|
232 | | -#[test] |
233 | | -fn test_reduced_mul_parameterized() { |
234 | | - let max_value = Felt::from(REDUCED_MUL_LIMB_BOUND - 1); |
235 | | - let min_value = Felt::from(-REDUCED_MUL_LIMB_BOUND + 1); |
236 | | - let values: [([Felt; 3], [Felt; 3]); 4] = [ |
237 | | - (array::from_fn(|_| max_value), array::from_fn(|_| max_value)), |
238 | | - (array::from_fn(|_| min_value), array::from_fn(|_| min_value)), |
239 | | - ([-Felt::ONE, Felt::ZERO, Felt::ZERO], [Felt::ONE, Felt::ZERO, Felt::ZERO]), |
240 | | - ([Felt::ONE, Felt::from(2), Felt::from(3)], [Felt::ZERO, Felt::ZERO, Felt::ZERO]), |
241 | | - ]; |
242 | | - for (a_split, b_split) in values { |
243 | | - run_reduced_mul_test(&a_split, &b_split); |
244 | | - } |
| 235 | +#[rstest] |
| 236 | +#[case::max(array::from_fn(|_| *MAX_VALUE), array::from_fn(|_| *MAX_VALUE))] |
| 237 | +#[case::min(array::from_fn(|_| *MIN_VALUE), array::from_fn(|_| *MIN_VALUE))] |
| 238 | +#[case::negative_and_positive( |
| 239 | + [-Felt::ONE, Felt::ZERO, Felt::ZERO], [Felt::ONE, Felt::ZERO, Felt::ZERO] |
| 240 | +)] |
| 241 | +#[case::sequence_and_zero( |
| 242 | + [Felt::ONE, Felt::from(2), Felt::from(3)], [Felt::ZERO, Felt::ZERO, Felt::ZERO] |
| 243 | +)] |
| 244 | +fn test_reduced_mul_parameterized(#[case] a_split: [Felt; 3], #[case] b_split: [Felt; 3]) { |
| 245 | + run_reduced_mul_test(&a_split, &b_split); |
245 | 246 | } |
246 | 247 |
|
247 | 248 | #[test] |
|
0 commit comments