mirror of
https://github.com/Qortal/pirate-librustzcash.git
synced 2025-02-07 06:44:11 +00:00
impl TryFrom<u32> for BranchId
This commit is contained in:
parent
cd326f2b6a
commit
e6a8630b35
@ -1,5 +1,6 @@
|
|||||||
//! Consensus parameters.
|
//! Consensus parameters.
|
||||||
|
|
||||||
|
use std::convert::TryFrom;
|
||||||
use std::fmt;
|
use std::fmt;
|
||||||
|
|
||||||
/// Zcash consensus parameters.
|
/// Zcash consensus parameters.
|
||||||
@ -128,6 +129,21 @@ pub enum BranchId {
|
|||||||
Heartwood,
|
Heartwood,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl TryFrom<u32> for BranchId {
|
||||||
|
type Error = &'static str;
|
||||||
|
|
||||||
|
fn try_from(value: u32) -> Result<Self, Self::Error> {
|
||||||
|
match value {
|
||||||
|
0 => Ok(BranchId::Sprout),
|
||||||
|
0x5ba8_1b19 => Ok(BranchId::Overwinter),
|
||||||
|
0x76b8_09bb => Ok(BranchId::Sapling),
|
||||||
|
0x2bb4_0e60 => Ok(BranchId::Blossom),
|
||||||
|
0xf5b9_230b => Ok(BranchId::Heartwood),
|
||||||
|
_ => Err("Unknown consensus branch ID"),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
impl From<BranchId> for u32 {
|
impl From<BranchId> for u32 {
|
||||||
fn from(consensus_branch_id: BranchId) -> u32 {
|
fn from(consensus_branch_id: BranchId) -> u32 {
|
||||||
match consensus_branch_id {
|
match consensus_branch_id {
|
||||||
@ -159,7 +175,9 @@ impl BranchId {
|
|||||||
|
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
mod tests {
|
mod tests {
|
||||||
use super::{BranchId, Parameters, MainNetwork, NetworkUpgrade, UPGRADES_IN_ORDER};
|
use std::convert::TryFrom;
|
||||||
|
|
||||||
|
use super::{BranchId, MainNetwork, NetworkUpgrade, Parameters, UPGRADES_IN_ORDER};
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn nu_ordering() {
|
fn nu_ordering() {
|
||||||
@ -194,6 +212,12 @@ mod tests {
|
|||||||
));
|
));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn branch_id_from_u32() {
|
||||||
|
assert_eq!(BranchId::try_from(0), Ok(BranchId::Sprout));
|
||||||
|
assert!(BranchId::try_from(1).is_err());
|
||||||
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn branch_id_for_height() {
|
fn branch_id_for_height() {
|
||||||
assert_eq!(BranchId::for_height::<MainNetwork>(0), BranchId::Sprout,);
|
assert_eq!(BranchId::for_height::<MainNetwork>(0), BranchId::Sprout,);
|
||||||
|
Loading…
Reference in New Issue
Block a user