banker_coins_filetest.gno
2.23 Kb ยท 77 lines
1// PKGPATH: gno.land/r/treasury/main
2
3package main
4
5import (
6 "chain"
7 "chain/banker"
8 "testing"
9
10 "gno.land/p/nt/treasury"
11)
12
13func main() {
14 // Define addresses for the sender (owner) and destination.
15 ownerAddr := chain.PackageAddress("gno.land/r/treasury/main")
16 destAddr := chain.PackageAddress("gno.land/r/dest/main")
17
18 // Create a CoinsBanker.
19 banker_ := banker.NewBanker(banker.BankerTypeRealmSend)
20 cbanker, err := treasury.NewCoinsBanker(banker_)
21 if err != nil {
22 panic("failed to create CoinsBanker: " + err.Error())
23 }
24
25 println("CoinsBanker ID:", cbanker.ID())
26 println("CoinsBanker Address:", cbanker.Address())
27
28 // Check if the CoinsBanker address matches the owner address.
29 if cbanker.Address() != ownerAddr.String() {
30 panic("CoinsBanker address does not match current realm address")
31 }
32
33 println("CoinsBanker Balances count:", len(cbanker.Balances()))
34
35 // Issue some coins to the owner address.
36 testing.IssueCoins(ownerAddr, chain.NewCoins(chain.NewCoin("ugnot", 42)))
37
38 println("CoinsBanker Balances count:", len(cbanker.Balances()))
39 println("Ugnot balance:", cbanker.Balances()[0].Amount)
40
41 // Send a valid payment.
42 validPayment := treasury.NewCoinsPayment(
43 chain.NewCoins(chain.NewCoin("ugnot", 10)),
44 destAddr,
45 )
46 err = cbanker.Send(validPayment)
47 println("Valid payment error:", err)
48 if err != nil {
49 panic("failed to send valid payment: " + err.Error())
50 }
51
52 println("Ugnot balance:", cbanker.Balances()[0].Amount)
53
54 // Send a payment with an invalid type.
55 invalidPaymentType := treasury.NewGRC20Payment("", 0, destAddr)
56 err = cbanker.Send(invalidPaymentType)
57 println("Invalid payment type error:", err)
58 if err == nil {
59 panic("expected error for invalid payment type, but got none")
60 }
61
62 // Issue another coin to the owner address to test the Balances method.
63 testing.IssueCoins(ownerAddr, chain.NewCoins(chain.NewCoin("anothercoin", 1337)))
64
65 println("CoinsBanker Balances count:", len(cbanker.Balances()))
66}
67
68// Output:
69// CoinsBanker ID: Coins
70// CoinsBanker Address: g1ynsdz5zaxhn9gnqtr6t40m5k4fueeutq7xy224
71// CoinsBanker Balances count: 0
72// CoinsBanker Balances count: 1
73// Ugnot balance: 42
74// Valid payment error: undefined
75// Ugnot balance: 32
76// Invalid payment type error: invalid payment type
77// CoinsBanker Balances count: 2