Skip to content

Commit

Permalink
Merge rust-bitcoin#3914: units: Define constructor variable in amount…
Browse files Browse the repository at this point in the history
… tests

f01bb30 Use sat variable for constructor (Tobin C. Harding)
34f846c Use ssat variable for constructor (Tobin C. Harding)

Pull request description:

  Add `sat` and `ssat` throughout the `amount::tests` module after new tests were added recently.

ACKs for top commit:
  jamillambert:
    ACK f01bb30
  apoelstra:
    ACK f01bb30; successfully ran local tests

Tree-SHA512: 6a4cdc47000b22625132fe0d8faa7dbff59acfc0b6b4faffe091f885f8d0fd5f5ce15e2298c87e25bd4cc13a2611cecadb43b7d44ccd768a04cd150223577b6b
  • Loading branch information
apoelstra committed Jan 19, 2025
2 parents afc3690 + f01bb30 commit 3985333
Showing 1 changed file with 33 additions and 25 deletions.
58 changes: 33 additions & 25 deletions units/src/amount/tests.rs
Original file line number Diff line number Diff line change
Expand Up @@ -18,28 +18,31 @@ use crate::{FeeRate, Weight};

#[test]
fn sanity_check() {
assert_eq!(SignedAmount::from_sat(-100).abs(), SignedAmount::from_sat(100));
let sat = Amount::from_sat;
let ssat = SignedAmount::from_sat;

assert_eq!(ssat(-100).abs(), ssat(100));
assert_eq!(
SignedAmount::from_sat(i64::MIN + 1).checked_abs().unwrap(),
SignedAmount::from_sat(i64::MAX)
ssat(i64::MIN + 1).checked_abs().unwrap(),
ssat(i64::MAX)
);
assert_eq!(SignedAmount::from_sat(-100).signum(), -1);
assert_eq!(SignedAmount::from_sat(0).signum(), 0);
assert_eq!(SignedAmount::from_sat(100).signum(), 1);
assert_eq!(SignedAmount::from(Amount::from_sat(100)), SignedAmount::from_sat(100));
assert!(SignedAmount::from_sat(i64::MIN).checked_abs().is_none());
assert!(!SignedAmount::from_sat(-100).is_positive());
assert!(SignedAmount::from_sat(100).is_positive());
assert_eq!(ssat(-100).signum(), -1);
assert_eq!(ssat(0).signum(), 0);
assert_eq!(ssat(100).signum(), 1);
assert_eq!(SignedAmount::from(sat(100)), ssat(100));
assert!(ssat(i64::MIN).checked_abs().is_none());
assert!(!ssat(-100).is_positive());
assert!(ssat(100).is_positive());

#[cfg(feature = "alloc")]
{
assert_eq!(
Amount::from_float_in(0_f64, Denomination::Bitcoin).unwrap(),
Amount::from_sat(0)
sat(0)
);
assert_eq!(
Amount::from_float_in(2_f64, Denomination::Bitcoin).unwrap(),
Amount::from_sat(200_000_000)
sat(200_000_000)
);
assert!(Amount::from_float_in(-100_f64, Denomination::Bitcoin).is_err());
}
Expand Down Expand Up @@ -135,15 +138,15 @@ fn mul_div() {
a %= 3;
assert_eq!(a, sat(1));
a *= 3;
assert_eq!(a, Amount::from_sat(3));
assert_eq!(a, sat(3));

let mut b = ssat(30);
b /= 3;
assert_eq!(b, ssat(10));
b %= 3;
assert_eq!(b, ssat(1));
b *= 3;
assert_eq!(b, SignedAmount::from_sat(3));
assert_eq!(b, ssat(3));
}

#[test]
Expand Down Expand Up @@ -179,27 +182,32 @@ fn checked_arithmetic() {
#[test]
#[allow(deprecated_in_future)]
fn unchecked_arithmetic() {
let sat = Amount::from_sat;
let ssat = SignedAmount::from_sat;

assert_eq!(
SignedAmount::from_sat(10).unchecked_add(SignedAmount::from_sat(20)),
SignedAmount::from_sat(30)
ssat(10).unchecked_add(ssat(20)),
ssat(30)
);
assert_eq!(
SignedAmount::from_sat(50).unchecked_sub(SignedAmount::from_sat(10)),
SignedAmount::from_sat(40)
ssat(50).unchecked_sub(ssat(10)),
ssat(40)
);
assert_eq!(Amount::from_sat(5).unchecked_add(Amount::from_sat(7)), Amount::from_sat(12));
assert_eq!(Amount::from_sat(10).unchecked_sub(Amount::from_sat(7)), Amount::from_sat(3));
assert_eq!(sat(5).unchecked_add(sat(7)), sat(12));
assert_eq!(sat(10).unchecked_sub(sat(7)), sat(3));
}

#[test]
fn positive_sub() {
let ssat = SignedAmount::from_sat;

assert_eq!(
SignedAmount::from_sat(10).positive_sub(SignedAmount::from_sat(7)).unwrap(),
SignedAmount::from_sat(3)
ssat(10).positive_sub(ssat(7)).unwrap(),
ssat(3)
);
assert!(SignedAmount::from_sat(-10).positive_sub(SignedAmount::from_sat(7)).is_none());
assert!(SignedAmount::from_sat(10).positive_sub(SignedAmount::from_sat(-7)).is_none());
assert!(SignedAmount::from_sat(10).positive_sub(SignedAmount::from_sat(11)).is_none());
assert!(ssat(-10).positive_sub(ssat(7)).is_none());
assert!(ssat(10).positive_sub(ssat(-7)).is_none());
assert!(ssat(10).positive_sub(ssat(11)).is_none());
}

#[cfg(feature = "alloc")]
Expand Down

0 comments on commit 3985333

Please sign in to comment.