use super::*;
#[test]
fn basic_setup_works() {
add_reserve(Parent.into(), Wild((Parent, WildFungible).into()));
assert!(
<TestConfig as Config>::IsReserve::contains(&(Parent, 100u128).into(), &Parent.into(),)
);
assert_eq!(to_account(Teyrchain(1)), Ok(1001));
assert_eq!(to_account(Teyrchain(50)), Ok(1050));
assert_eq!(to_account((Parent, Teyrchain(1))), Ok(2001));
assert_eq!(to_account((Parent, Teyrchain(50))), Ok(2050));
assert_eq!(to_account(Location::new(0, [AccountIndex64 { index: 1, network: None }])), Ok(1),);
assert_eq!(to_account(Location::new(0, [AccountIndex64 { index: 42, network: None }])), Ok(42),);
assert_eq!(to_account(Here), Ok(3000));
}
#[test]
fn weigher_should_work() {
let mut message = Xcm(vec![
ReserveAssetDeposited((Parent, 100u128).into()),
BuyExecution {
fees: (Parent, 1u128).into(),
weight_limit: Limited(Weight::from_parts(30, 30)),
},
DepositAsset { assets: AllCounted(1).into(), beneficiary: Here.into() },
]);
assert_eq!(
<TestConfig as Config>::Weigher::weight(&mut message, Weight::MAX),
Ok(Weight::from_parts(30, 30))
);
}
#[test]
fn code_registers_should_work() {
AllowUnpaidFrom::set(vec![Here.into()]);
add_asset(Here, (Here, 21u128));
let mut message = Xcm(vec![
SetErrorHandler(Xcm(vec![
TransferAsset {
assets: (Here, 2u128).into(),
beneficiary: [AccountIndex64 { index: 3, network: None }].into(),
},
ClearError,
])),
SetAppendix(Xcm(vec![TransferAsset {
assets: (Here, 4u128).into(),
beneficiary: [AccountIndex64 { index: 3, network: None }].into(),
}])),
TransferAsset {
assets: (Here, 1u128).into(),
beneficiary: [AccountIndex64 { index: 3, network: None }].into(),
},
TransferAsset {
assets: (Here, 8u128).into(),
beneficiary: [AccountIndex64 { index: 3, network: None }].into(),
},
]);
let limit = <TestConfig as Config>::Weigher::weight(&mut message, Weight::MAX).unwrap();
assert_eq!(limit, Weight::from_parts(70, 70));
let mut hash = fake_message_hash(&message);
let r = XcmExecutor::<TestConfig>::prepare_and_execute(
Here,
message.clone(),
&mut hash,
limit,
Weight::zero(),
);
assert_eq!(r, Outcome::Complete { used: Weight::from_parts(50, 50) }); assert_eq!(asset_list(AccountIndex64 { index: 3, network: None }), vec![(Here, 13u128).into()]);
assert_eq!(asset_list(Here), vec![(Here, 8u128).into()]);
assert_eq!(sent_xcm(), vec![]);
let r = XcmExecutor::<TestConfig>::prepare_and_execute(
Here,
message,
&mut hash,
limit,
Weight::zero(),
);
assert_eq!(r, Outcome::Complete { used: Weight::from_parts(70, 70) }); assert_eq!(asset_list(AccountIndex64 { index: 3, network: None }), vec![(Here, 20u128).into()]);
assert_eq!(asset_list(Here), vec![(Here, 1u128).into()]);
assert_eq!(sent_xcm(), vec![]);
}