From f05525b3ba257dcf225e86e846b57ffb5e1bb8a0 Mon Sep 17 00:00:00 2001 From: Mikko Ahlroth Date: Thu, 11 Apr 2024 18:35:52 +0300 Subject: [PATCH] Change the argument order of comparisons --- CHANGELOG.txt | 6 ++++++ README.md | 4 ++-- gleam.toml | 4 ++-- manifest.toml | 4 ++-- src/ranged_int/interface.gleam | 3 ++- src/ranged_int/internal/limit.gleam | 4 ++-- test/readme/mvp2_test.gleam | 4 ++-- test/readme/mvp_test.gleam | 2 +- 8 files changed, 19 insertions(+), 12 deletions(-) diff --git a/CHANGELOG.txt b/CHANGELOG.txt index 8b8e815..2811529 100644 --- a/CHANGELOG.txt +++ b/CHANGELOG.txt @@ -1,3 +1,9 @@ +2.0.0 +----- + +* Changed the argument order of interface.compare, thus also changing the argument order + of all comparisons in the builtins. The new order matches int.compare from the stdlib. + 1.0.0 ----- diff --git a/README.md b/README.md index 28ef31e..026ce0f 100644 --- a/README.md +++ b/README.md @@ -171,7 +171,7 @@ pub fn mvp_test() { let assert Ok(a) = interface.from_bigint(bigi.from_int(2007), mvp.iface) let assert Ok(b) = interface.from_bigint(bigi.from_int(2009), mvp.iface) let c = interface.compare(a, b, mvp.iface) - should.equal(c, order.Gt) + should.equal(c, order.Lt) } ``` @@ -231,7 +231,7 @@ pub fn mvp2_test() { let assert Ok(a) = mvp2.from_bigint(bigi.from_int(2007)) let assert Ok(b) = mvp2.from_bigint(bigi.from_int(2009)) let c = mvp2.compare(a, b) - should.equal(c, order.Gt) + should.equal(c, order.Lt) } pub fn mvp2_add_test() { diff --git a/gleam.toml b/gleam.toml index 1759752..773c868 100644 --- a/gleam.toml +++ b/gleam.toml @@ -1,5 +1,5 @@ name = "ranged_int" -version = "1.0.0" +version = "2.0.0" # Fill out these fields if you intend to generate HTML documentation or publish # your project to the Hex package manager. @@ -14,7 +14,7 @@ repository = { type = "gitlab", user = "Nicd", repo = "ranged_int" } [dependencies] gleam_stdlib = "~> 0.34 or ~> 1.0" -bigi = "~> 2.0" +bigi = "~> 3.0" [dev-dependencies] gleeunit = "~> 1.0" diff --git a/manifest.toml b/manifest.toml index 6d91ac7..ce7480b 100644 --- a/manifest.toml +++ b/manifest.toml @@ -2,12 +2,12 @@ # You typically do not need to edit this file packages = [ - { name = "bigi", version = "2.0.0", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "bigi", source = "hex", outer_checksum = "E7841470F475D20B2EC2D4CB1167A8893AE943B6541809DCAB9D95FB471FDCDB" }, + { name = "bigi", version = "3.0.0", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "bigi", source = "hex", outer_checksum = "FFDFC542A5146C535AE09AB9A642D652AD8B018509CDA70E1D09741EDB64FBF7" }, { name = "gleam_stdlib", version = "0.34.0", build_tools = ["gleam"], requirements = [], otp_app = "gleam_stdlib", source = "hex", outer_checksum = "1FB8454D2991E9B4C0C804544D8A9AD0F6184725E20D63C3155F0AEB4230B016" }, { name = "gleeunit", version = "1.0.2", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "gleeunit", source = "hex", outer_checksum = "D364C87AFEB26BDB4FB8A5ABDE67D635DC9FA52D6AB68416044C35B096C6882D" }, ] [requirements] -bigi = { version = "~> 2.0" } +bigi = { version = "~> 3.0" } gleam_stdlib = { version = "~> 0.34 or ~> 1.0" } gleeunit = { version = "~> 1.0" } diff --git a/src/ranged_int/interface.gleam b/src/ranged_int/interface.gleam index 4898103..a5075fe 100644 --- a/src/ranged_int/interface.gleam +++ b/src/ranged_int/interface.gleam @@ -90,7 +90,8 @@ pub fn from_bigint( } } -/// Compare two ranged integers. +/// Compare two ranged integers, returning an order that denotes if `int1` is +/// lower, bigger than, or equal to `int2`. pub fn compare( int1: a, int2: a, diff --git a/src/ranged_int/internal/limit.gleam b/src/ranged_int/internal/limit.gleam index 78d6391..d283618 100644 --- a/src/ranged_int/internal/limit.gleam +++ b/src/ranged_int/internal/limit.gleam @@ -25,11 +25,11 @@ pub type LimitCheck { /// Check the value against the limits. pub fn check_limits(value: BigInt, min min: Limit, max max: Limit) -> LimitCheck { let max_diff = diff(max, value) - case bigi.compare(bigi.zero(), max_diff) { + case bigi.compare(max_diff, bigi.zero()) { order.Gt -> Overflow(max_diff) order.Eq | order.Lt -> { let min_diff = diff(min, value) - case bigi.compare(bigi.zero(), min_diff) { + case bigi.compare(min_diff, bigi.zero()) { order.Lt -> Underflow(bigi.multiply(min_diff, bigi.from_int(-1))) order.Eq | order.Gt -> NoOverflow } diff --git a/test/readme/mvp2_test.gleam b/test/readme/mvp2_test.gleam index 678dbaa..9c07060 100644 --- a/test/readme/mvp2_test.gleam +++ b/test/readme/mvp2_test.gleam @@ -8,7 +8,7 @@ pub fn mvp2_test() { let assert Ok(a) = mvp2.from_bigint(bigi.from_int(2007)) let assert Ok(b) = mvp2.from_bigint(bigi.from_int(2009)) let c = mvp2.compare(a, b) - should.equal(c, order.Gt) + should.equal(c, order.Lt) } pub fn mvp2_add_test() { @@ -18,7 +18,7 @@ pub fn mvp2_add_test() { should.equal(c, Error(utils.WouldOverflow(bigi.from_int(1)))) should.equal( mvp2.overflow(c) - |> mvp2.to_bigint(), + |> mvp2.to_bigint(), bigi.from_int(2007), ) } diff --git a/test/readme/mvp_test.gleam b/test/readme/mvp_test.gleam index 5c05b4f..890056a 100644 --- a/test/readme/mvp_test.gleam +++ b/test/readme/mvp_test.gleam @@ -9,7 +9,7 @@ pub fn mvp_test() { let assert Ok(a) = interface.from_bigint(bigi.from_int(2007), mvp.iface) let assert Ok(b) = interface.from_bigint(bigi.from_int(2009), mvp.iface) let c = interface.compare(a, b, mvp.iface) - should.equal(c, order.Gt) + should.equal(c, order.Lt) } pub fn mvp_add_test() {