From 9a46b8e34b2ef875ee1bf39a2b332d3803634bc3 Mon Sep 17 00:00:00 2001 From: SwayStar123 Date: Tue, 18 Jun 2024 19:02:29 +0530 Subject: [PATCH 1/3] init --- sway-lib-std/src/result.sw | 14 +++ .../result_inline_tests/src/eq.sw | 114 ++++++++++++++++++ .../result_inline_tests/src/main.sw | 2 + 3 files changed, 130 insertions(+) create mode 100644 test/src/in_language_tests/test_programs/result_inline_tests/src/eq.sw diff --git a/sway-lib-std/src/result.sw b/sway-lib-std/src/result.sw index f4f5f79a2b0..7242ce67613 100644 --- a/sway-lib-std/src/result.sw +++ b/sway-lib-std/src/result.sw @@ -269,3 +269,17 @@ impl Result { // - `ok(self) -> Option` // - `err(self) -> Option` } + +impl Eq for Result +where + T: Eq, + E: Eq, +{ + fn eq(self, other: Self) -> bool { + match (self, other) { + (Self::Ok(a), Self::Ok(b)) => a == b, + (Self::Err(a), Self::Err(b)) => a == b, + _ => false, + } + } +} \ No newline at end of file diff --git a/test/src/in_language_tests/test_programs/result_inline_tests/src/eq.sw b/test/src/in_language_tests/test_programs/result_inline_tests/src/eq.sw new file mode 100644 index 00000000000..18ce687b26e --- /dev/null +++ b/test/src/in_language_tests/test_programs/result_inline_tests/src/eq.sw @@ -0,0 +1,114 @@ +library; + +#[test] +fn test_eq_u64_u64() { + let a: Result = Ok(0); + let b: Result = Ok(0); + assert_eq(a, b); + + let a: Result = Ok(1); + let b: Result = Ok(1); + assert_eq(a, b); + + let a: Result = Ok(42); + let b: Result = Ok(42); + assert_eq(a, b); + + let a: Result = Ok(u64::max()); + let b: Result = Ok(u64::max()); + assert_eq(a, b); +} + +#[test] +fn test_neq_u64_u64() { + // Ok + let a: Result = Ok(0); + let b: Result = Ok(1); + assert_ne(a, b); + + let a: Result = Ok(0); + let b: Result = Ok(42); + assert_ne(a, b); + + let a: Result = Ok(0); + let b: Result = Ok(u64::max()); + assert_ne(a, b); + + let a: Result = Ok(1); + let b: Result = Ok(0); + assert_ne(a, b); + + let a: Result = Ok(42); + let b: Result = Ok(0); + assert_ne(a, b); + + let a: Result = Ok(u64::max()); + let b: Result = Ok(0); + assert_ne(a, b); + + // Err + let a: Result = Err(0); + let b: Result = Err(1); + assert_ne(a, b); + + let a: Result = Err(0); + let b: Result = Err(42); + assert_ne(a, b); + + let a: Result = Err(0); + let b: Result = Err(u64::max()); + assert_ne(a, b); + + let a: Result = Err(1); + let b: Result = Err(0); + assert_ne(a, b); + + let a: Result = Err(42); + let b: Result = Err(0); + assert_ne(a, b); + + let a: Result = Err(u64::max()); + let b: Result = Err(0); + assert_ne(a, b); + + // Ok-Err + let a: Result = Ok(0); + let b: Result = Err(0); + assert_ne(a, b); + + let a: Result = Ok(1); + let b: Result = Err(1); + assert_ne(a, b); + + let a: Result = Ok(42); + let b: Result = Err(42); + assert_ne(a, b); + + let a: Result = Ok(u64::max()); + let b: Result = Err(u64::max()); + assert_ne(a, b); + + let a: Result = Ok(0); + let b: Result = Err(1); + assert_ne(a, b); + + let a: Result = Ok(0); + let b: Result = Err(42); + assert_ne(a, b); + + let a: Result = Ok(0); + let b: Result = Err(u64::max()); + assert_ne(a, b); + + let a: Result = Ok(1); + let b: Result = Err(0); + assert_ne(a, b); + + let a: Result = Ok(42); + let b: Result = Err(0); + assert_ne(a, b); + + let a: Result = Ok(u64::max()); + let b: Result = Err(0); + assert_ne(a, b); +} diff --git a/test/src/in_language_tests/test_programs/result_inline_tests/src/main.sw b/test/src/in_language_tests/test_programs/result_inline_tests/src/main.sw index 2166d4b643b..381c4ec24f5 100644 --- a/test/src/in_language_tests/test_programs/result_inline_tests/src/main.sw +++ b/test/src/in_language_tests/test_programs/result_inline_tests/src/main.sw @@ -1,5 +1,7 @@ library; +mod eq; + #[test] fn result_is_ok() { use std::bytes::Bytes; From d6ab2027b69c7a506ee3a03ee9fda64fffd2d9b1 Mon Sep 17 00:00:00 2001 From: SwayStar123 Date: Wed, 19 Jun 2024 11:44:12 +0530 Subject: [PATCH 2/3] fmt --- sway-lib-std/src/result.sw | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sway-lib-std/src/result.sw b/sway-lib-std/src/result.sw index 7242ce67613..13e13b704de 100644 --- a/sway-lib-std/src/result.sw +++ b/sway-lib-std/src/result.sw @@ -270,7 +270,7 @@ impl Result { // - `err(self) -> Option` } -impl Eq for Result +impl Eq for Result where T: Eq, E: Eq, From a04211a0cb9d93db5db3e151be5a9b5477dec683 Mon Sep 17 00:00:00 2001 From: SwayStar123 Date: Thu, 12 Sep 2024 13:38:24 +0530 Subject: [PATCH 3/3] fmt --- sway-lib-std/src/result.sw | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sway-lib-std/src/result.sw b/sway-lib-std/src/result.sw index 13e13b704de..9b0532ee567 100644 --- a/sway-lib-std/src/result.sw +++ b/sway-lib-std/src/result.sw @@ -282,4 +282,4 @@ where _ => false, } } -} \ No newline at end of file +}