use dharitri_sc::types::{ BoxedBytes, MoaxOrDctTokenIdentifier, MoaxOrDctTokenPayment, DctTokenPayment, ManagedBuffer, TokenIdentifier, }; use dharitri_sc_scenario::{ api::StaticApi, managed_moax_token_id, managed_test_util::check_managed_top_encode_decode, managed_token_id, managed_token_id_wrapped, dharitri_sc, }; #[test] fn test_moax() { assert!(MoaxOrDctTokenIdentifier::::moax().is_moax()); } #[test] fn test_codec() { check_managed_top_encode_decode( MoaxOrDctTokenIdentifier::::moax(), MoaxOrDctTokenIdentifier::::MOAX_REPRESENTATION, ); let expected = BoxedBytes::from_concat(&[ &[0, 0, 0, 4], &MoaxOrDctTokenIdentifier::::MOAX_REPRESENTATION[..], ]); check_managed_top_encode_decode( vec![MoaxOrDctTokenIdentifier::::moax()], expected.as_slice(), ); } #[test] #[rustfmt::skip] fn test_is_valid_dct_identifier() { // 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] #[rustfmt::skip] fn test_ticker() { // valid identifier assert_eq!( TokenIdentifier::::from("ALC-6258d2").ticker(), ManagedBuffer::::from("ALC"), ); // valid identifier with numbers in ticker assert_eq!( TokenIdentifier::::from("ALC123-6258d2").ticker(), ManagedBuffer::::from("ALC123"), ); // valid ticker only numbers assert_eq!( TokenIdentifier::::from("12345-6258d2").ticker(), ManagedBuffer::::from("12345"), ); // missing dash assert_eq!( TokenIdentifier::::from("ALC6258d2").ticker(), ManagedBuffer::::from("AL"), ); // wrong dash position assert_eq!( TokenIdentifier::::from("AL-C6258d2").ticker(), ManagedBuffer::::from("AL-"), ); // lowercase ticker assert_eq!( TokenIdentifier::::from("alc-6258d2").ticker(), ManagedBuffer::::from("alc"), ); // uppercase random chars assert_eq!( TokenIdentifier::::from("ALC-6258D2").ticker(), ManagedBuffer::::from("ALC"), ); // too many random chars assert_eq!( TokenIdentifier::::from("ALC-6258d2ff").ticker(), ManagedBuffer::::from("ALC-6"), ); // ticker too short assert_eq!( TokenIdentifier::::from("AL-6258d2").ticker(), ManagedBuffer::::from("AL"), ); // ticker too long assert_eq!( TokenIdentifier::::from("ALCCCCCCCCC-6258d2").ticker(), ManagedBuffer::::from("ALCCCCCCCCC"), ); } #[test] fn test_is_valid_moax_or_dct() { // 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() { 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() { 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() { 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") ) }