From 491964054a283eb028005801885aba10b9473b60 Mon Sep 17 00:00:00 2001 From: zqh Date: Sun, 20 Feb 2022 11:00:04 +0800 Subject: [PATCH 1/2] add parachain c --- xtokens/src/mock/mod.rs | 5 ++++ xtokens/src/tests.rs | 64 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 69 insertions(+) diff --git a/xtokens/src/mock/mod.rs b/xtokens/src/mock/mod.rs index ff6e2f5b9..065bdd28e 100644 --- a/xtokens/src/mock/mod.rs +++ b/xtokens/src/mock/mod.rs @@ -29,6 +29,8 @@ pub enum CurrencyId { B, /// Parachain B B1 token B1, + /// Parachain C native token + C } pub struct CurrencyIdConvert; @@ -40,6 +42,7 @@ impl Convert> for CurrencyIdConvert { CurrencyId::A1 => Some((Parent, Parachain(1), GeneralKey("A1".into())).into()), CurrencyId::B => Some((Parent, Parachain(2), GeneralKey("B".into())).into()), CurrencyId::B1 => Some((Parent, Parachain(2), GeneralKey("B1".into())).into()), + CurrencyId::C => Some((Parent, Parachain(3)).into()), } } } @@ -58,6 +61,7 @@ impl Convert> for CurrencyIdConvert { X2(Parachain(1), GeneralKey(k)) if k == a1 => Some(CurrencyId::A1), X2(Parachain(2), GeneralKey(k)) if k == b => Some(CurrencyId::B), X2(Parachain(2), GeneralKey(k)) if k == b1 => Some(CurrencyId::B1), + X1(Parachain(3)) => Some(CurrencyId::C), _ => None, }, MultiLocation { parents, interior } if parents == 0 => match interior { @@ -65,6 +69,7 @@ impl Convert> for CurrencyIdConvert { X1(GeneralKey(k)) if k == b => Some(CurrencyId::B), X1(GeneralKey(k)) if k == a1 => Some(CurrencyId::A1), X1(GeneralKey(k)) if k == b1 => Some(CurrencyId::B1), + Here => Some(CurrencyId::C), _ => None, }, _ => None, diff --git a/xtokens/src/tests.rs b/xtokens/src/tests.rs index 4e835d225..221c9af21 100644 --- a/xtokens/src/tests.rs +++ b/xtokens/src/tests.rs @@ -295,6 +295,70 @@ fn send_sibling_asset_to_reserve_sibling() { }); } +#[test] +fn send_sibling_asset_to_reserve_sibling_c() { + TestNet::reset(); + + ParaA::execute_with(|| { + assert_ok!(ParaTokens::deposit(CurrencyId::C, &ALICE, 1_000)); + }); + + ParaC::execute_with(|| { + assert_ok!(ParaTokens::deposit(CurrencyId::C, &sibling_a_account(), 1_000)); + }); + + ParaA::execute_with(|| { + assert_ok!(ParaXTokens::transfer( + Some(ALICE).into(), + CurrencyId::C, + 500, + Box::new( + ( + Parent, + Parachain(3), + Junction::AccountId32 { + network: NetworkId::Any, + id: BOB.into(), + }, + ) + .into() + ), + 40, + )); + + assert_eq!(ParaTokens::free_balance(CurrencyId::C, &ALICE), 500); + }); + + ParaC::execute_with(|| { + assert_eq!(ParaTokens::free_balance(CurrencyId::C, &sibling_a_account()), 500); + assert_eq!(ParaTokens::free_balance(CurrencyId::C, &BOB), 460); + + assert_ok!(ParaXTokens::transfer( + Some(BOB).into(), + CurrencyId::C, + 100, + Box::new( + ( + Parent, + Parachain(1), + Junction::AccountId32 { + network: NetworkId::Any, + id: ALICE.into(), + }, + ) + .into() + ), + 40, + )); + assert_eq!(ParaTokens::free_balance(CurrencyId::C, &BOB), 360); + assert_eq!(ParaTokens::free_balance(CurrencyId::C, &sibling_a_account()), 600); + }); + + ParaA::execute_with(|| { + assert_eq!(ParaTokens::free_balance(CurrencyId::C, &ALICE), 560); + }); +} + #[test] fn send_sibling_asset_to_reserve_sibling_with_fee() { TestNet::reset(); From f87e99ffe1546296d6e0a3ad5ed6cb0a9aa7b802 Mon Sep 17 00:00:00 2001 From: zqh Date: Sun, 20 Feb 2022 13:36:07 +0800 Subject: [PATCH 2/2] fmt --- xtokens/src/mock/mod.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/xtokens/src/mock/mod.rs b/xtokens/src/mock/mod.rs index 065bdd28e..0a623da3d 100644 --- a/xtokens/src/mock/mod.rs +++ b/xtokens/src/mock/mod.rs @@ -30,7 +30,7 @@ pub enum CurrencyId { /// Parachain B B1 token B1, /// Parachain C native token - C + C, } pub struct CurrencyIdConvert;