mirror of
https://github.com/hl-archive-node/nanoreth.git
synced 2025-12-06 10:59:55 +00:00
implement From for ChainSplitTarget (#8962)
This commit is contained in:
@ -1063,9 +1063,7 @@ where
|
||||
};
|
||||
|
||||
// we are splitting chain at the block hash that we want to make canonical
|
||||
let Some(canonical) =
|
||||
self.remove_and_split_chain(chain_id, ChainSplitTarget::Hash(block_hash))
|
||||
else {
|
||||
let Some(canonical) = self.remove_and_split_chain(chain_id, block_hash.into()) else {
|
||||
debug!(target: "blockchain_tree", ?block_hash, ?chain_id, "Chain not present");
|
||||
return Err(CanonicalError::from(BlockchainTreeError::BlockSideChainIdConsistency {
|
||||
chain_id: chain_id.into(),
|
||||
|
||||
@ -460,6 +460,18 @@ pub enum ChainSplitTarget {
|
||||
Hash(BlockHash),
|
||||
}
|
||||
|
||||
impl From<BlockNumber> for ChainSplitTarget {
|
||||
fn from(number: BlockNumber) -> Self {
|
||||
Self::Number(number)
|
||||
}
|
||||
}
|
||||
|
||||
impl From<BlockHash> for ChainSplitTarget {
|
||||
fn from(hash: BlockHash) -> Self {
|
||||
Self::Hash(hash)
|
||||
}
|
||||
}
|
||||
|
||||
/// Result of a split chain.
|
||||
#[derive(Clone, Debug, PartialEq, Eq)]
|
||||
pub enum ChainSplit {
|
||||
@ -603,27 +615,21 @@ mod tests {
|
||||
|
||||
// split in two
|
||||
assert_eq!(
|
||||
chain.clone().split(ChainSplitTarget::Hash(block1_hash)),
|
||||
chain.clone().split(block1_hash.into()),
|
||||
ChainSplit::Split { canonical: chain_split1, pending: chain_split2 }
|
||||
);
|
||||
|
||||
// split at unknown block hash
|
||||
assert_eq!(
|
||||
chain.clone().split(ChainSplitTarget::Hash(B256::new([100; 32]))),
|
||||
chain.clone().split(B256::new([100; 32]).into()),
|
||||
ChainSplit::NoSplitPending(chain.clone())
|
||||
);
|
||||
|
||||
// split at higher number
|
||||
assert_eq!(
|
||||
chain.clone().split(ChainSplitTarget::Number(10)),
|
||||
ChainSplit::NoSplitPending(chain.clone())
|
||||
);
|
||||
assert_eq!(chain.clone().split(10u64.into()), ChainSplit::NoSplitPending(chain.clone()));
|
||||
|
||||
// split at lower number
|
||||
assert_eq!(
|
||||
chain.clone().split(ChainSplitTarget::Number(0)),
|
||||
ChainSplit::NoSplitPending(chain)
|
||||
);
|
||||
assert_eq!(chain.clone().split(0u64.into()), ChainSplit::NoSplitPending(chain));
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
||||
Reference in New Issue
Block a user