Skip to content

Commit 523091b

Browse files
committed
feat(common): implement idiomatic conversion from MagicId to CardanoNetwork
1 parent 906a7b2 commit 523091b

File tree

1 file changed

+33
-0
lines changed

1 file changed

+33
-0
lines changed

mithril-common/src/entities/cardano_network.rs

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,15 @@ impl From<&CardanoNetwork> for String {
9898
}
9999
}
100100

101+
impl From<MagicId> for CardanoNetwork {
102+
fn from(magic_id: MagicId) -> Self {
103+
match magic_id {
104+
MAINNET_MAGIC_ID => Self::MainNet,
105+
_ => Self::TestNet(magic_id),
106+
}
107+
}
108+
}
109+
101110
#[cfg(test)]
102111
mod tests {
103112
use super::*;
@@ -212,4 +221,28 @@ mod tests {
212221
assert_all_conversions_eq(CardanoNetwork::TestNet(PREPROD_MAGIC_ID), "preprod");
213222
assert_all_conversions_eq(CardanoNetwork::TestNet(123456), "private");
214223
}
224+
225+
#[test]
226+
fn cardano_network_from_magic_id_roundtrip() {
227+
fn assert_magic_id_conversion_roundtrip(magic_id: MagicId, expected: CardanoNetwork) {
228+
let network = CardanoNetwork::from(magic_id);
229+
assert_eq!(network, expected);
230+
assert_eq!(network.code(), magic_id);
231+
}
232+
233+
assert_magic_id_conversion_roundtrip(MAINNET_MAGIC_ID, CardanoNetwork::MainNet);
234+
assert_magic_id_conversion_roundtrip(
235+
PREVIEW_MAGIC_ID,
236+
CardanoNetwork::TestNet(PREVIEW_MAGIC_ID),
237+
);
238+
assert_magic_id_conversion_roundtrip(
239+
PREPROD_MAGIC_ID,
240+
CardanoNetwork::TestNet(PREPROD_MAGIC_ID),
241+
);
242+
assert_magic_id_conversion_roundtrip(
243+
DEVNET_MAGIC_ID,
244+
CardanoNetwork::TestNet(DEVNET_MAGIC_ID),
245+
);
246+
assert_magic_id_conversion_roundtrip(123456, CardanoNetwork::TestNet(123456));
247+
}
215248
}

0 commit comments

Comments
 (0)