From 67bbf67f18bfbf0d4e777ef9fa39a36dd1c37f9d Mon Sep 17 00:00:00 2001 From: alivecow Date: Fri, 15 Nov 2024 20:02:16 +0100 Subject: [PATCH] fix: Handle response on adding arbit. len equal polynomials --- src/utils/field.rs | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/src/utils/field.rs b/src/utils/field.rs index 164a04c..859978b 100644 --- a/src/utils/field.rs +++ b/src/utils/field.rs @@ -234,6 +234,12 @@ impl Add for Polynomial { } } + for i in (0..polynomial.len() - 1).rev() { + if polynomial[i].is_zero() { + polynomial.pop(); + } + } + Polynomial::new(polynomial) } } @@ -689,6 +695,35 @@ mod tests { ); } + #[test] + fn test_field_add_multiple_zeros() { + let json1 = json!([ + "AAAAAAAAAAAAAAAAAAAAAA==", + "AAAAAAAAAAAAAAAAAAAAAA==", + "AAAAAAAAAAAAAAAAAAAAAA==", + "AAAAAAAAAAAAAAAAAAAAAA==" + ]); + let json2 = json!(["AAAAAAAAAAAAAAAAAAAAAA==", "AAAAAAAAAAAAAAAAAAAAAA=="]); + let element1: Polynomial = Polynomial::from_c_array(&json1); + let element2: Polynomial = Polynomial::from_c_array(&json2); + + let sum = element2 + element1; + + assert_eq!(sum.to_c_array(), vec!["AAAAAAAAAAAAAAAAAAAAAA==",]); + } + + #[test] + fn test_field_add_same_element() { + let json1 = json!(["NeverGonnaGiveYouUpAAA=="]); + let json2 = json!(["NeverGonnaGiveYouUpAAA=="]); + let element1: Polynomial = Polynomial::from_c_array(&json1); + let element2: Polynomial = Polynomial::from_c_array(&json2); + + let sum = element2 + element1; + + assert_eq!(sum.to_c_array(), vec!["AAAAAAAAAAAAAAAAAAAAAA==",]); + } + #[test] fn test_field_add_zero() { let json1 = json!([ @@ -956,6 +991,7 @@ mod tests { ); //assert_eq!(BASE64_STANDARD.encode(product), "MoAAAAAAAAAAAAAAAAAAAA=="); } + #[test] fn test_field_poly_powmod_01() { let json1 = json!([