Skip to content
This repository was archived by the owner on Nov 15, 2023. It is now read-only.

Commit d089179

Browse files
authored
fix unreserve_all_named (#9042)
1 parent fa26ce6 commit d089179

File tree

2 files changed

+74
-1
lines changed

2 files changed

+74
-1
lines changed

frame/balances/src/tests.rs

Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1082,5 +1082,78 @@ macro_rules! decl_tests {
10821082
assert_eq!(Balances::free_balance(&1), 52);
10831083
});
10841084
}
1085+
1086+
#[test]
1087+
fn ensure_reserved_named_should_work() {
1088+
<$ext_builder>::default().build().execute_with(|| {
1089+
let _ = Balances::deposit_creating(&1, 111);
1090+
1091+
let id = [1u8; 8];
1092+
1093+
assert_ok!(Balances::ensure_reserved_named(&id, &1, 15));
1094+
assert_eq!(Balances::reserved_balance_named(&id, &1), 15);
1095+
1096+
assert_ok!(Balances::ensure_reserved_named(&id, &1, 10));
1097+
assert_eq!(Balances::reserved_balance_named(&id, &1), 10);
1098+
1099+
assert_ok!(Balances::ensure_reserved_named(&id, &1, 20));
1100+
assert_eq!(Balances::reserved_balance_named(&id, &1), 20);
1101+
});
1102+
}
1103+
1104+
#[test]
1105+
fn unreserve_all_named_should_work() {
1106+
<$ext_builder>::default().build().execute_with(|| {
1107+
let _ = Balances::deposit_creating(&1, 111);
1108+
1109+
let id = [1u8; 8];
1110+
1111+
assert_ok!(Balances::reserve_named(&id, &1, 15));
1112+
1113+
assert_eq!(Balances::unreserve_all_named(&id, &1), 15);
1114+
assert_eq!(Balances::reserved_balance_named(&id, &1), 0);
1115+
assert_eq!(Balances::free_balance(&1), 111);
1116+
1117+
assert_eq!(Balances::unreserve_all_named(&id, &1), 0);
1118+
});
1119+
}
1120+
1121+
#[test]
1122+
fn slash_all_reserved_named_should_work() {
1123+
<$ext_builder>::default().build().execute_with(|| {
1124+
let _ = Balances::deposit_creating(&1, 111);
1125+
1126+
let id = [1u8; 8];
1127+
1128+
assert_ok!(Balances::reserve_named(&id, &1, 15));
1129+
1130+
assert_eq!(Balances::slash_all_reserved_named(&id, &1).peek(), 15);
1131+
assert_eq!(Balances::reserved_balance_named(&id, &1), 0);
1132+
assert_eq!(Balances::free_balance(&1), 96);
1133+
1134+
assert_eq!(Balances::slash_all_reserved_named(&id, &1).peek(), 0);
1135+
});
1136+
}
1137+
1138+
#[test]
1139+
fn repatriate_all_reserved_named_should_work() {
1140+
<$ext_builder>::default().build().execute_with(|| {
1141+
let _ = Balances::deposit_creating(&1, 111);
1142+
let _ = Balances::deposit_creating(&2, 10);
1143+
let _ = Balances::deposit_creating(&3, 10);
1144+
1145+
let id = [1u8; 8];
1146+
1147+
assert_ok!(Balances::reserve_named(&id, &1, 15));
1148+
1149+
assert_ok!(Balances::repatriate_all_reserved_named(&id, &1, &2, Status::Reserved));
1150+
assert_eq!(Balances::reserved_balance_named(&id, &1), 0);
1151+
assert_eq!(Balances::reserved_balance_named(&id, &2), 15);
1152+
1153+
assert_ok!(Balances::repatriate_all_reserved_named(&id, &2, &3, Status::Free));
1154+
assert_eq!(Balances::reserved_balance_named(&id, &2), 0);
1155+
assert_eq!(Balances::free_balance(&3), 25);
1156+
});
1157+
}
10851158
}
10861159
}

frame/support/src/traits/tokens/currency/reservable.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -166,7 +166,7 @@ pub trait NamedReservableCurrency<AccountId>: ReservableCurrency<AccountId> {
166166
/// Is a no-op if the value to be unreserved is zero.
167167
fn unreserve_all_named(id: &Self::ReserveIdentifier, who: &AccountId) -> Self::Balance {
168168
let value = Self::reserved_balance_named(id, who);
169-
Self::slash_reserved_named(id, who, value);
169+
Self::unreserve_named(id, who, value);
170170
value
171171
}
172172

0 commit comments

Comments
 (0)