From 2014dffd27909c753fa9e237e3c1132b68537f33 Mon Sep 17 00:00:00 2001 From: teor Date: Thu, 3 Dec 2020 14:56:19 +1000 Subject: [PATCH] Show expanded values in CompactDifficulty debug fmt --- zebra-chain/src/work/difficulty.rs | 4 ++++ .../src/work/difficulty/tests/vectors.rs | 20 ++++++++++++++++--- 2 files changed, 21 insertions(+), 3 deletions(-) diff --git a/zebra-chain/src/work/difficulty.rs b/zebra-chain/src/work/difficulty.rs index e6303cee..229af40e 100644 --- a/zebra-chain/src/work/difficulty.rs +++ b/zebra-chain/src/work/difficulty.rs @@ -63,9 +63,13 @@ pub struct CompactDifficulty(pub(crate) u32); impl fmt::Debug for CompactDifficulty { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + // There isn't a standard way to represent alternate formats for the + // same value. f.debug_tuple("CompactDifficulty") // Use hex, because it's a float .field(&format_args!("{:#010x}", self.0)) + // Use expanded difficulty, for bitwise difficulty comparisons + .field(&format_args!("{:?}", self.to_expanded())) .finish() } } diff --git a/zebra-chain/src/work/difficulty/tests/vectors.rs b/zebra-chain/src/work/difficulty/tests/vectors.rs index 1d07acf2..5a9c33fe 100644 --- a/zebra-chain/src/work/difficulty/tests/vectors.rs +++ b/zebra-chain/src/work/difficulty/tests/vectors.rs @@ -19,15 +19,29 @@ fn debug_format() { assert_eq!( format!("{:?}", CompactDifficulty(0)), - "CompactDifficulty(0x00000000)" + "CompactDifficulty(0x00000000, None)" ); assert_eq!( format!("{:?}", CompactDifficulty(1)), - "CompactDifficulty(0x00000001)" + "CompactDifficulty(0x00000001, None)" ); assert_eq!( format!("{:?}", CompactDifficulty(u32::MAX)), - "CompactDifficulty(0xffffffff)" + "CompactDifficulty(0xffffffff, None)" + ); + let one = CompactDifficulty((1 << PRECISION) + (1 << 16)); + assert_eq!( + format!("{:?}", one), + "CompactDifficulty(0x01010000, Some(ExpandedDifficulty(\"0000000000000000000000000000000000000000000000000000000000000001\")))"); + let mant = CompactDifficulty(OFFSET as u32 * (1 << PRECISION) + UNSIGNED_MANTISSA_MASK); + assert_eq!( + format!("{:?}", mant), + "CompactDifficulty(0x037fffff, Some(ExpandedDifficulty(\"00000000000000000000000000000000000000000000000000000000007fffff\")))" + ); + let exp = CompactDifficulty(((31 + OFFSET - 2) as u32) * (1 << PRECISION) + (1 << 16)); + assert_eq!( + format!("{:?}", exp), + "CompactDifficulty(0x20010000, Some(ExpandedDifficulty(\"0100000000000000000000000000000000000000000000000000000000000000\")))" ); assert_eq!(