Skip to content

Commit a97d8d8

Browse files
committed
bugfix: implement Display for NativeTokenManagement and fix error formatting
1 parent 8cbb7e0 commit a97d8d8

File tree

3 files changed

+32
-9
lines changed

3 files changed

+32
-9
lines changed

toolkit/primitives/domain/src/lib.rs

+6
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,12 @@ impl StakeDelegation {
7474
#[cfg_attr(feature = "serde", derive(Serialize))]
7575
pub struct NativeTokenAmount(pub u128);
7676

77+
impl Display for NativeTokenAmount {
78+
fn fmt(&self, f: &mut Formatter<'_>) -> core::fmt::Result {
79+
u128::fmt(&self.0, f)
80+
}
81+
}
82+
7783
/// A main chain block number. In range [0, 2^31-1].
7884
#[derive(
7985
Default,

toolkit/primitives/native-token-management/src/lib.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -72,14 +72,14 @@ pub struct TokenTransferData {
7272
#[derive(Encode, Debug, PartialEq)]
7373
#[cfg_attr(feature = "std", derive(Decode, thiserror::Error))]
7474
pub enum InherentError {
75-
#[cfg_attr(feature = "std", error("Inherent missing for token transfer of {}", 0.0))]
75+
#[cfg_attr(feature = "std", error("Inherent missing for token transfer of {0} tokens"))]
7676
TokenTransferNotHandled(NativeTokenAmount),
7777
#[cfg_attr(
7878
feature = "std",
79-
error("Incorrect token transfer amount: expected {}, got {}", 0.0, 1.0)
79+
error("Incorrect token transfer amount: expected {0}, got {1} tokens")
8080
)]
8181
IncorrectTokenNumberTransfered(NativeTokenAmount, NativeTokenAmount),
82-
#[cfg_attr(feature = "std", error("Unexpected transfer of {} tokens", 0.0))]
82+
#[cfg_attr(feature = "std", error("Unexpected transfer of {0} tokens"))]
8383
UnexpectedTokenTransferInherent(NativeTokenAmount),
8484
}
8585

toolkit/primitives/native-token-management/src/tests/mod.rs

+23-6
Original file line numberDiff line numberDiff line change
@@ -5,16 +5,33 @@ mod inherent_provider {
55
use super::runtime_api_mock::*;
66
use crate::inherent_provider::mock::*;
77
use crate::inherent_provider::*;
8-
use crate::MainChainScripts;
9-
use crate::INHERENT_IDENTIFIER;
8+
use crate::{InherentError, MainChainScripts, INHERENT_IDENTIFIER};
109
use sidechain_domain::*;
1110
use sidechain_mc_hash::MC_HASH_DIGEST_ID;
12-
use sp_inherents::InherentData;
13-
use sp_inherents::InherentDataProvider;
14-
use sp_runtime::testing::Digest;
15-
use sp_runtime::testing::DigestItem;
11+
use sp_inherents::{InherentData, InherentDataProvider};
12+
use sp_runtime::testing::{Digest, DigestItem};
1613
use std::sync::Arc;
1714

15+
#[test]
16+
fn error_message_formatting() {
17+
assert_eq!(
18+
InherentError::TokenTransferNotHandled(NativeTokenAmount(3u128)).to_string(),
19+
"Inherent missing for token transfer of 3 tokens"
20+
);
21+
assert_eq!(
22+
InherentError::IncorrectTokenNumberTransfered(
23+
NativeTokenAmount(13u128),
24+
NativeTokenAmount(7u128)
25+
)
26+
.to_string(),
27+
"Incorrect token transfer amount: expected 13, got 7 tokens"
28+
);
29+
assert_eq!(
30+
InherentError::UnexpectedTokenTransferInherent(NativeTokenAmount(13u128)).to_string(),
31+
"Unexpected transfer of 13 tokens"
32+
);
33+
}
34+
1835
#[tokio::test]
1936
async fn correctly_fetches_total_transfer_between_two_hashes() {
2037
let parent_number = 1; // not genesis

0 commit comments

Comments
 (0)