@@ -98,6 +98,15 @@ impl From<&CardanoNetwork> for String {
98
98
}
99
99
}
100
100
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
+
101
110
#[ cfg( test) ]
102
111
mod tests {
103
112
use super :: * ;
@@ -212,4 +221,28 @@ mod tests {
212
221
assert_all_conversions_eq ( CardanoNetwork :: TestNet ( PREPROD_MAGIC_ID ) , "preprod" ) ;
213
222
assert_all_conversions_eq ( CardanoNetwork :: TestNet ( 123456 ) , "private" ) ;
214
223
}
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
+ }
215
248
}
0 commit comments