From fa39e2ced460918d6c6c94c0e2b7dae19b612fa9 Mon Sep 17 00:00:00 2001 From: jp1ac4 <121959000+jp1ac4@users.noreply.github.com> Date: Tue, 6 Feb 2024 07:51:39 +0000 Subject: [PATCH] database: convert `CoinStatus` to `listcoins` argument string --- src/database/mod.rs | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/src/database/mod.rs b/src/database/mod.rs index 050581d5..cf06eaf4 100644 --- a/src/database/mod.rs +++ b/src/database/mod.rs @@ -398,6 +398,17 @@ impl CoinStatus { _ => None, } } + + /// Converts a `CoinStatus` to its equivalent argument name + /// as used in the `listcoins` RPC command. + pub fn to_arg(&self) -> &'static str { + match self { + CoinStatus::Unconfirmed => "unconfirmed", + CoinStatus::Confirmed => "confirmed", + CoinStatus::Spending => "spending", + CoinStatus::Spent => "spent", + } + } } #[derive(Debug, Clone, PartialEq, Eq, Hash)] @@ -452,3 +463,28 @@ impl LabelItem { } } } + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn coin_status_as_arg() { + assert_eq!( + CoinStatus::from_arg(CoinStatus::Unconfirmed.to_arg()), + Some(CoinStatus::Unconfirmed) + ); + assert_eq!( + CoinStatus::from_arg(CoinStatus::Confirmed.to_arg()), + Some(CoinStatus::Confirmed) + ); + assert_eq!( + CoinStatus::from_arg(CoinStatus::Spending.to_arg()), + Some(CoinStatus::Spending) + ); + assert_eq!( + CoinStatus::from_arg(CoinStatus::Spent.to_arg()), + Some(CoinStatus::Spent) + ); + } +}