use dharitri_wasm::types::{ BoxedBytes, MoaxOrDctTokenIdentifier, MoaxOrDctTokenPayment, DctTokenPayment, TokenIdentifier, }; use dharitri_wasm_debug::{ check_managed_top_encode_decode, managed_moax_token_id, managed_token_id, managed_token_id_wrapped, DebugApi, }; #[test] fn test_moax() { let _ = DebugApi::dummy(); assert!(MoaxOrDctTokenIdentifier::::moax().is_moax()); } #[test] fn test_codec() { let api = DebugApi::dummy(); check_managed_top_encode_decode( api.clone(), MoaxOrDctTokenIdentifier::::moax(), MoaxOrDctTokenIdentifier::::MOAX_REPRESENTATION, ); let expected = BoxedBytes::from_concat(&[ &[0, 0, 0, 4], &MoaxOrDctTokenIdentifier::::MOAX_REPRESENTATION[..], ]); check_managed_top_encode_decode( api, vec![MoaxOrDctTokenIdentifier::::moax()], expected.as_slice(), ); } #[test] #[rustfmt::skip] fn test_is_valid_dct_identifier() { let _ = DebugApi::dummy(); // valid identifier assert!(TokenIdentifier::::from("ALC-6258d2").is_valid_dct_identifier()); // valid identifier with numbers in ticker assert!(TokenIdentifier::::from("ALC123-6258d2").is_valid_dct_identifier()); // valid ticker only numbers assert!(TokenIdentifier::::from("12345-6258d2").is_valid_dct_identifier()); // missing dash assert!(!TokenIdentifier::::from("ALC6258d2").is_valid_dct_identifier()); // wrong dash position assert!(!TokenIdentifier::::from("AL-C6258d2").is_valid_dct_identifier()); // lowercase ticker assert!(!TokenIdentifier::::from("alc-6258d2").is_valid_dct_identifier()); // uppercase random chars assert!(!TokenIdentifier::::from("ALC-6258D2").is_valid_dct_identifier()); // too many random chars assert!(!TokenIdentifier::::from("ALC-6258d2ff").is_valid_dct_identifier()); // ticker too short assert!(!TokenIdentifier::::from("AL-6258d2").is_valid_dct_identifier()); // ticker too long assert!(!TokenIdentifier::::from("ALCCCCCCCCC-6258d2").is_valid_dct_identifier()); } #[test] fn test_is_valid_moax_or_dct() { let _ = DebugApi::dummy(); // moax is always valid assert!(MoaxOrDctTokenIdentifier::::moax().is_valid()); // valid dct assert!( MoaxOrDctTokenIdentifier::::dct(TokenIdentifier::from("ALC-6258d2")).is_valid() ); // invalid dct, see above assert!( !MoaxOrDctTokenIdentifier::::dct(TokenIdentifier::from("ALCCCCCCCCC-6258d2")) .is_valid() ); } #[test] fn test_token_identifier_eq() { let _ = DebugApi::dummy(); assert_eq!( TokenIdentifier::::from("DCT-00000"), TokenIdentifier::::from("DCT-00000") ); assert_ne!( TokenIdentifier::::from("DCT-00001"), TokenIdentifier::::from("DCT-00002") ); assert_eq!( MoaxOrDctTokenIdentifier::::dct(TokenIdentifier::from("DCT-00003")), TokenIdentifier::::from("DCT-00003") ); assert_ne!( MoaxOrDctTokenIdentifier::::moax(), TokenIdentifier::::from("ANYTHING-1234") ); assert_ne!( MoaxOrDctTokenIdentifier::::moax(), TokenIdentifier::::from("MOAX") ); } #[test] fn test_payment_eq() { let _ = DebugApi::dummy(); assert_eq!( DctTokenPayment::::new("PAY-00000".into(), 0, 1000u32.into()), DctTokenPayment::::new("PAY-00000".into(), 0, 1000u32.into()), ); assert_ne!( DctTokenPayment::::new("PAY-00001".into(), 0, 1000u32.into()), DctTokenPayment::::new("PAY-00002".into(), 0, 1000u32.into()), ); assert_eq!( MoaxOrDctTokenPayment::::no_payment(), MoaxOrDctTokenPayment::::no_payment(), ); assert_eq!( MoaxOrDctTokenPayment::::new( MoaxOrDctTokenIdentifier::dct("DCTPAY-00000"), 0, 1000u32.into() ), MoaxOrDctTokenPayment::::new( MoaxOrDctTokenIdentifier::dct("DCTPAY-00000"), 0, 1000u32.into() ), ); assert_ne!( MoaxOrDctTokenPayment::::new( MoaxOrDctTokenIdentifier::dct("DCTPAY-00001"), 0, 1000u32.into() ), MoaxOrDctTokenPayment::::new( MoaxOrDctTokenIdentifier::dct("DCTPAY-00002"), 0, 1000u32.into() ), ); assert_ne!( MoaxOrDctTokenPayment::::new( MoaxOrDctTokenIdentifier::dct("DCTPAY-00001"), 0, 1000u32.into() ), MoaxOrDctTokenPayment::::no_payment(), ); } #[test] fn test_managed_token_id_macro() { let _ = DebugApi::dummy(); assert_eq!( managed_moax_token_id!(), MoaxOrDctTokenIdentifier::::moax() ); assert_eq!( managed_token_id!(b"ALC-6258d2"), TokenIdentifier::::from("ALC-6258d2") ); assert_eq!( managed_token_id_wrapped!(b"ALC-6258d2").unwrap_dct(), TokenIdentifier::::from("ALC-6258d2") ) }