Implement transfer_all in Balances Pallet (#9018)

* transfer_all

* benchmark

* cargo run --release --features=runtime-benchmarks --manifest-path=bin/node/cli/Cargo.toml -- benchmark --chain=dev --steps=50 --repeat=20 --pallet=pallet_balances --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --output=./frame/balances/src/weights.rs --template=./.maintain/frame-weight-template.hbs

* update

* add note

* typo

Co-authored-by: Parity Bot <admin@parity.io>
Co-authored-by: Alexander Popiak <alexander.popiak@parity.io>
This commit is contained in:
Shawn Tabrizi
2021-06-11 16:45:13 +01:00
committed by GitHub
parent 11037ac35f
commit ed448ef28b
4 changed files with 117 additions and 15 deletions
+40
View File
@@ -965,6 +965,46 @@ macro_rules! decl_tests {
});
}
#[test]
fn transfer_all_works() {
<$ext_builder>::default()
.existential_deposit(100)
.build()
.execute_with(|| {
// setup
assert_ok!(Balances::set_balance(Origin::root(), 1, 200, 0));
assert_ok!(Balances::set_balance(Origin::root(), 2, 0, 0));
// transfer all and allow death
assert_ok!(Balances::transfer_all(Some(1).into(), 2, false));
assert_eq!(Balances::total_balance(&1), 0);
assert_eq!(Balances::total_balance(&2), 200);
// setup
assert_ok!(Balances::set_balance(Origin::root(), 1, 200, 0));
assert_ok!(Balances::set_balance(Origin::root(), 2, 0, 0));
// transfer all and keep alive
assert_ok!(Balances::transfer_all(Some(1).into(), 2, true));
assert_eq!(Balances::total_balance(&1), 100);
assert_eq!(Balances::total_balance(&2), 100);
// setup
assert_ok!(Balances::set_balance(Origin::root(), 1, 200, 10));
assert_ok!(Balances::set_balance(Origin::root(), 2, 0, 0));
// transfer all and allow death w/ reserved
assert_ok!(Balances::transfer_all(Some(1).into(), 2, false));
assert_eq!(Balances::total_balance(&1), 0);
assert_eq!(Balances::total_balance(&2), 200);
// setup
assert_ok!(Balances::set_balance(Origin::root(), 1, 200, 10));
assert_ok!(Balances::set_balance(Origin::root(), 2, 0, 0));
// transfer all and keep alive w/ reserved
assert_ok!(Balances::transfer_all(Some(1).into(), 2, true));
assert_eq!(Balances::total_balance(&1), 100);
assert_eq!(Balances::total_balance(&2), 110);
});
}
#[test]
fn named_reserve_should_work() {
<$ext_builder>::default().build().execute_with(|| {