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