aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--packages/taler-wallet-core/src/util/coinSelection.test.ts53
1 files changed, 53 insertions, 0 deletions
diff --git a/packages/taler-wallet-core/src/util/coinSelection.test.ts b/packages/taler-wallet-core/src/util/coinSelection.test.ts
index 448982c7f..ab3b2c4f8 100644
--- a/packages/taler-wallet-core/src/util/coinSelection.test.ts
+++ b/packages/taler-wallet-core/src/util/coinSelection.test.ts
@@ -102,6 +102,28 @@ test("get raw 4", (t) => {
t.assert(result.refresh === undefined);
});
+test("get raw 25, diff with demo ", (t) => {
+ const coinList: Coin[] = [
+ [kudos(0.1), 0],
+ [kudos(1), 0],
+ [kudos(2), 0],
+ [kudos(5), 0],
+ [kudos(10), 0],
+ ];
+ const result = selectCoinForOperation(
+ OperationType.Credit,
+ kudos(25),
+ AmountMode.Gross,
+ {
+ list: coinList.map(([v, t]) => defaultFeeConfig(v, t)),
+ exchanges: {},
+ },
+ );
+
+ expect(t, result.coins).deep.equal(["KUDOS:10", "KUDOS:10", "KUDOS:5"]);
+ t.assert(result.refresh === undefined);
+});
+
test("send effective 6", (t) => {
const coinList: Coin[] = [
[kudos(2), 5],
@@ -246,3 +268,34 @@ test("withdraw raw 21 ", (t) => {
t.deepEqual(result.rawAmount, "KUDOS:20");
t.deepEqual(result.effectiveAmount, "KUDOS:19.96");
});
+
+test("withdraw raw 25, diff with demo ", (t) => {
+ const coinList: Coin[] = [
+ [kudos(0.1), 0],
+ [kudos(1), 0],
+ [kudos(2), 0],
+ [kudos(5), 0],
+ [kudos(10), 0],
+ ];
+ const result = calculatePlanFormAvailableCoins(
+ TransactionType.Withdrawal,
+ kudos(25),
+ TransactionAmountMode.Raw,
+ {
+ list: coinList.map(([v, t]) => defaultFeeConfig(v, t)),
+ exchanges: {
+ "2": {
+ creditDeadline: AbsoluteTime.never(),
+ debitDeadline: AbsoluteTime.never(),
+ wireFee: kudos(0.01),
+ purseFee: kudos(0.01),
+ },
+ },
+ },
+ );
+
+ t.deepEqual(result.rawAmount, "KUDOS:25");
+ // here demo report KUDOS:0.2 fee
+ // t.deepEqual(result.effectiveAmount, "KUDOS:24.80");
+ t.deepEqual(result.effectiveAmount, "KUDOS:24.97");
+});