Skip to content

Commit eea799b

Browse files
committed
Merge branch 'router-refact' of https://github.com/gnoswap-labs/gnoswap into router-refact
2 parents 786629e + 93f565d commit eea799b

7 files changed

+13
-400
lines changed

Diff for: router/_helper_test.gno

-141
Original file line numberDiff line numberDiff line change
@@ -20,17 +20,6 @@ import (
2020
"gno.land/r/onbloc/qux"
2121
)
2222

23-
func init() {
24-
std.TestSetRealm(std.NewUserRealm("g1er355fkjksqpdtwmhf5penwa82p0rhqxkkyhk5"))
25-
RegisterGRC20Interface(wugnotPath, WugnotToken{})
26-
RegisterGRC20Interface(gnsPath, GNSToken{})
27-
RegisterGRC20Interface(barPath, BarToken{})
28-
RegisterGRC20Interface(bazPath, BazToken{})
29-
RegisterGRC20Interface(fooPath, FooToken{})
30-
RegisterGRC20Interface(oblPath, OBLToken{})
31-
RegisterGRC20Interface(quxPath, QuxToken{})
32-
}
33-
3423
const (
3524
ugnotDenom string = "ugnot"
3625
ugnotPath string = "ugnot"
@@ -78,136 +67,6 @@ var (
7867
maxTick int32 = 887220
7968
)
8069

81-
type WugnotToken struct{}
82-
83-
func (WugnotToken) Transfer() func(to pusers.AddressOrName, amount uint64) {
84-
return wugnot.Transfer
85-
}
86-
87-
func (WugnotToken) TransferFrom() func(from, to pusers.AddressOrName, amount uint64) {
88-
return wugnot.TransferFrom
89-
}
90-
91-
func (WugnotToken) BalanceOf() func(owner pusers.AddressOrName) uint64 {
92-
return wugnot.BalanceOf
93-
}
94-
95-
func (WugnotToken) Approve() func(spender pusers.AddressOrName, amount uint64) {
96-
return wugnot.Approve
97-
}
98-
99-
type GNSToken struct{}
100-
101-
func (GNSToken) Transfer() func(to pusers.AddressOrName, amount uint64) {
102-
return gns.Transfer
103-
}
104-
105-
func (GNSToken) TransferFrom() func(from, to pusers.AddressOrName, amount uint64) {
106-
return gns.TransferFrom
107-
}
108-
109-
func (GNSToken) BalanceOf() func(owner pusers.AddressOrName) uint64 {
110-
return gns.BalanceOf
111-
}
112-
113-
func (GNSToken) Approve() func(spender pusers.AddressOrName, amount uint64) {
114-
return gns.Approve
115-
}
116-
117-
type BarToken struct{}
118-
119-
func (BarToken) Transfer() func(to pusers.AddressOrName, amount uint64) {
120-
return bar.Transfer
121-
}
122-
123-
func (BarToken) TransferFrom() func(from, to pusers.AddressOrName, amount uint64) {
124-
return bar.TransferFrom
125-
}
126-
127-
func (BarToken) BalanceOf() func(owner pusers.AddressOrName) uint64 {
128-
return bar.BalanceOf
129-
}
130-
131-
func (BarToken) Approve() func(spender pusers.AddressOrName, amount uint64) {
132-
return bar.Approve
133-
}
134-
135-
type BazToken struct{}
136-
137-
func (BazToken) Transfer() func(to pusers.AddressOrName, amount uint64) {
138-
return baz.Transfer
139-
}
140-
141-
func (BazToken) TransferFrom() func(from, to pusers.AddressOrName, amount uint64) {
142-
return baz.TransferFrom
143-
}
144-
145-
func (BazToken) BalanceOf() func(owner pusers.AddressOrName) uint64 {
146-
return baz.BalanceOf
147-
}
148-
149-
func (BazToken) Approve() func(spender pusers.AddressOrName, amount uint64) {
150-
return baz.Approve
151-
}
152-
153-
type FooToken struct{}
154-
155-
func (FooToken) Transfer() func(to pusers.AddressOrName, amount uint64) {
156-
return foo.Transfer
157-
}
158-
159-
func (FooToken) TransferFrom() func(from, to pusers.AddressOrName, amount uint64) {
160-
return foo.TransferFrom
161-
}
162-
163-
func (FooToken) BalanceOf() func(owner pusers.AddressOrName) uint64 {
164-
return foo.BalanceOf
165-
}
166-
167-
func (FooToken) Approve() func(spender pusers.AddressOrName, amount uint64) {
168-
return foo.Approve
169-
}
170-
171-
type OBLToken struct{}
172-
173-
func (OBLToken) Transfer() func(to pusers.AddressOrName, amount uint64) {
174-
return obl.Transfer
175-
}
176-
177-
func (OBLToken) TransferFrom() func(from, to pusers.AddressOrName, amount uint64) {
178-
return obl.TransferFrom
179-
}
180-
181-
func (OBLToken) BalanceOf() func(owner pusers.AddressOrName) uint64 {
182-
return obl.BalanceOf
183-
}
184-
185-
func (OBLToken) Approve() func(spender pusers.AddressOrName, amount uint64) {
186-
return obl.Approve
187-
}
188-
189-
type QuxToken struct{}
190-
191-
func (QuxToken) Transfer() func(to pusers.AddressOrName, amount uint64) {
192-
return qux.Transfer
193-
}
194-
195-
func (QuxToken) TransferFrom() func(from, to pusers.AddressOrName, amount uint64) {
196-
return qux.TransferFrom
197-
}
198-
199-
func (QuxToken) BalanceOf() func(owner pusers.AddressOrName) uint64 {
200-
return qux.BalanceOf
201-
}
202-
203-
func (QuxToken) Approve() func(spender pusers.AddressOrName, amount uint64) {
204-
return qux.Approve
205-
}
206-
207-
func init() {
208-
std.TestSetRealm(std.NewUserRealm(consts.TOKEN_REGISTER))
209-
}
210-
21170
var (
21271
admin = pusers.AddressOrName(consts.ADMIN)
21372
adminAddr = users.Resolve(admin)

Diff for: router/exact_in_test.gno

+5-6
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,11 @@ package router
33
import (
44
"std"
55
"testing"
6-
"time"
76

87
"gno.land/r/gnoswap/v1/consts"
8+
9+
"gno.land/r/onbloc/bar"
10+
"gno.land/r/onbloc/baz"
911
)
1012

1113
func TestExactInSwapRouteOperation_Validate(t *testing.T) {
@@ -96,9 +98,6 @@ func TestExactInSwapRoute(t *testing.T) {
9698
user1Realm := std.NewUserRealm(user1Addr)
9799
std.TestSetRealm(user1Realm)
98100

99-
bar := BarToken{}
100-
baz := BazToken{}
101-
102101
tests := []struct {
103102
name string
104103
setup func()
@@ -113,8 +112,8 @@ func TestExactInSwapRoute(t *testing.T) {
113112
{
114113
name: "BAR -> BAZ",
115114
setup: func() {
116-
bar.Approve()(a2u(consts.ROUTER_ADDR), maxApprove)
117-
baz.Approve()(a2u(consts.ROUTER_ADDR), maxApprove)
115+
bar.Approve(a2u(consts.ROUTER_ADDR), maxApprove)
116+
baz.Approve(a2u(consts.ROUTER_ADDR), maxApprove)
118117
TokenFaucet(t, barPath, a2u(user1Addr))
119118
},
120119
inputToken: barPath,

Diff for: router/protocol_fee_swap.gno

+2-1
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,8 @@ func handleSwapFee(
3131
feeAmount.Div(feeAmount, u256.NewUint(10000))
3232
feeAmountUint64 := feeAmount.Uint64()
3333

34-
transferFromByRegisterCall(outputToken, std.PrevRealm().Addr(), consts.PROTOCOL_FEE_ADDR, feeAmountUint64)
34+
outputTeller := common.GetTokenTeller(outputToken)
35+
outputTeller.TransferFrom(std.PrevRealm().Addr(), consts.PROTOCOL_FEE_ADDR, feeAmountUint64)
3536

3637
prevAddr, prevRealm := getPrev()
3738

Diff for: router/protocol_fee_swap_test.gno

+1-19
Original file line numberDiff line numberDiff line change
@@ -3,28 +3,10 @@ package router
33
import (
44
"testing"
55

6-
pusers "gno.land/p/demo/users"
7-
86
u256 "gno.land/p/gnoswap/uint256"
97
)
108

119
func TestHandleSwapFee(t *testing.T) {
12-
token0 := "token0"
13-
14-
mockToken := &struct {
15-
GRC20Interface
16-
}{
17-
GRC20Interface: MockGRC20{
18-
TransferFn: func(to pusers.AddressOrName, amount uint64) {},
19-
TransferFromFn: func(from, to pusers.AddressOrName, amount uint64) {},
20-
BalanceOfFn: func(owner pusers.AddressOrName) uint64 { return 1000000 },
21-
ApproveFn: func(spender pusers.AddressOrName, amount uint64) {},
22-
},
23-
}
24-
25-
registerGRC20ForTest(t, token0, mockToken)
26-
defer unregisterGRC20ForTest(t, token0)
27-
2810
tests := []struct {
2911
name string
3012
amount *u256.Uint
@@ -65,7 +47,7 @@ func TestHandleSwapFee(t *testing.T) {
6547
swapFee = originalSwapFee
6648
}()
6749

68-
result := handleSwapFee(token0, tt.amount)
50+
result := handleSwapFee(barPath, tt.amount)
6951

7052
if !result.Eq(tt.expectedAmount) {
7153
t.Errorf("handleSwapFee() = %v, want %v", result, tt.expectedAmount)

Diff for: router/router_test.gno

+1-59
Original file line numberDiff line numberDiff line change
@@ -2,71 +2,13 @@ package router
22

33
import (
44
"std"
5-
"strconv"
6-
"strings"
7-
"testing"
8-
9-
"gno.land/p/demo/uassert"
10-
"gno.land/p/demo/testutils"
5+
"testing"
116

127
"gno.land/r/gnoswap/v1/consts"
13-
i256 "gno.land/p/gnoswap/int256"
14-
u256 "gno.land/p/gnoswap/uint256"
158

169
pl "gno.land/r/gnoswap/v1/pool"
17-
pn "gno.land/r/gnoswap/v1/position"
18-
"gno.land/r/demo/wugnot"
19-
"gno.land/r/onbloc/bar"
20-
"gno.land/r/onbloc/baz"
21-
"gno.land/r/onbloc/qux"
22-
"gno.land/r/gnoswap/v1/gns"
23-
24-
pusers "gno.land/p/demo/users"
2510
)
2611

27-
func registerGRC20ForTest(t *testing.T, pkgPath string, igrc20 GRC20Interface) {
28-
t.Helper()
29-
registered[pkgPath] = igrc20
30-
}
31-
32-
func unregisterGRC20ForTest(t *testing.T, pkgPath string) {
33-
t.Helper()
34-
delete(registered, pkgPath)
35-
}
36-
37-
type MockGRC20 struct {
38-
TransferFn func(to pusers.AddressOrName, amount uint64)
39-
TransferFromFn func(from, to pusers.AddressOrName, amount uint64)
40-
BalanceOfFn func(owner pusers.AddressOrName) uint64
41-
ApproveFn func(spender pusers.AddressOrName, amount uint64)
42-
AllowanceFn func(owner, spender pusers.AddressOrName) uint64
43-
}
44-
45-
func (m MockGRC20) Transfer() func(to pusers.AddressOrName, amount uint64) {
46-
return m.TransferFn
47-
}
48-
49-
func (m MockGRC20) TransferFrom() func(from, to pusers.AddressOrName, amount uint64) {
50-
return m.TransferFromFn
51-
}
52-
53-
func (m MockGRC20) BalanceOf() func(owner pusers.AddressOrName) uint64 {
54-
return m.BalanceOfFn
55-
}
56-
57-
func (m MockGRC20) Approve() func(spender pusers.AddressOrName, amount uint64) {
58-
return m.ApproveFn
59-
}
60-
61-
func (m MockGRC20) Allowance() func(owner, spender pusers.AddressOrName) uint64 {
62-
if m.AllowanceFn != nil {
63-
return m.AllowanceFn
64-
}
65-
return func(owner, spender pusers.AddressOrName) uint64 {
66-
return 1000000000000
67-
}
68-
}
69-
7012
func setupTestPool(
7113
t *testing.T,
7214
token0Path, token1Path string,

Diff for: router/swap_inner.gno

+4-2
Original file line numberDiff line numberDiff line change
@@ -42,8 +42,10 @@ func swapInner(
4242
sqrtPriceLimitX96 = calculateSqrtPriceLimitForSwap(zeroForOne, data.fee, sqrtPriceLimitX96)
4343

4444
// ROUTER approves POOL as spender
45-
approveByRegisterCall(data.tokenIn, consts.POOL_ADDR, consts.UINT64_MAX)
46-
approveByRegisterCall(data.tokenOut, consts.POOL_ADDR, consts.UINT64_MAX)
45+
tokenIn := common.GetTokenTeller(data.tokenIn)
46+
tokenOut := common.GetTokenTeller(data.tokenOut)
47+
tokenIn.Approve(consts.POOL_ADDR, consts.UINT64_MAX)
48+
tokenOut.Approve(consts.POOL_ADDR, consts.UINT64_MAX)
4749

4850
amount0Str, amount1Str := pl.Swap( // int256, int256
4951
data.tokenIn,

0 commit comments

Comments
 (0)