Skip to content

Commit ba4f9cd

Browse files
committed
Fixed conversion unit tests
1 parent bb37007 commit ba4f9cd

2 files changed

Lines changed: 26 additions & 22 deletions

File tree

node/conversions/conversionlimit_test.go

Lines changed: 18 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@ import (
77
"reflect"
88
"testing"
99

10+
. "github.com/pegnet/pegnetd/node/conversions"
11+
1012
"github.com/pegnet/pegnet/modules/transactionid"
1113
)
1214

@@ -184,12 +186,12 @@ func TestRefund(t *testing.T) {
184186
// Currently the PEG supply limit yields are calculated as such:
185187
// amt pXXX -> yielded PEG + refund pXXX
186188
t.Run("test equivalency", func(t *testing.T) {
187-
for i := 0; i < 50; i++ {
189+
for i := uint32(0); i < 50; i++ {
188190
amtR := rand.Uint64() % (5 * 1e6 * 1e8) // 50K max
189191
pegR := rand.Uint64() % (5 * 1e6 * 1e8) // 50K max
190192

191193
input := rand.Int63() % (1 * 1e6 * 1e8) // 1million max
192-
maxPegYield, err := Convert(int64(input), amtR, pegR)
194+
maxPegYield, err := Convert(i, int64(input), amtR, amtR, pegR, pegR)
193195
if err != nil {
194196
continue // Likely an overflow or rate is 0
195197
}
@@ -199,11 +201,11 @@ func TestRefund(t *testing.T) {
199201
// 2 methods to calculate the refund. We have:
200202
// Input in pXXX, yield in PEG
201203

202-
refund := Refund(input, yield, amtR, pegR)
204+
refund := Refund(i, input, yield, amtR, pegR)
203205
if refund < 0 {
204206
t.Error("Negative refund!")
205207
}
206-
CheckRefund(t, input, refund, yield, amtR, pegR)
208+
CheckRefund(t, i, input, refund, yield, amtR, pegR)
207209
}
208210
}
209211
})
@@ -214,12 +216,12 @@ func TestRefund(t *testing.T) {
214216
pegR := rand.Uint64() % (5 * 1e6 * 1e8) // 50K max
215217
input := rand.Int63() % (1 * 1e6 * 1e8) // 1million max
216218

217-
maxPegYield, err := Convert(int64(input), amtR, pegR)
219+
maxPegYield, err := Convert(uint32(i), int64(input), amtR, amtR, pegR, pegR)
218220
if err != nil {
219221
continue // Likely an overflow or rate is 0
220222
}
221223

222-
if r := Refund(input, maxPegYield, amtR, pegR); r != 0 {
224+
if r := Refund(uint32(i), input, maxPegYield, amtR, pegR); r != 0 {
223225
t.Errorf("expected a 0 refund, found %d", r)
224226
}
225227
}
@@ -233,10 +235,10 @@ func TestRefund(t *testing.T) {
233235
//
234236
// Does not hold for Asset Equivalency check
235237
// Does hold for the 0 refund case
236-
func RefundMethod1(input, pegYield int64, amtRate, pegRate uint64) int64 {
237-
maxPEGYield, _ := Convert(input, amtRate, pegRate)
238+
func RefundMethod1(height uint32, input, pegYield int64, amtRate, pegRate uint64) int64 {
239+
maxPEGYield, _ := Convert(height, input, amtRate, amtRate, pegRate, pegRate)
238240
refundPEG := maxPEGYield - pegYield
239-
refund, _ := Convert(refundPEG, pegRate, amtRate)
241+
refund, _ := Convert(height, refundPEG, pegRate, pegRate, amtRate, amtRate)
240242
return refund
241243
}
242244

@@ -246,8 +248,8 @@ func RefundMethod1(input, pegYield int64, amtRate, pegRate uint64) int64 {
246248
//
247249
// Holds in all equivalency conditions
248250
// Does not hold for the 0 refund case
249-
func RefundMethod2(input, pegYield int64, amtRate, pegRate uint64) int64 {
250-
consumedInput, _ := Convert(pegYield, pegRate, amtRate)
251+
func RefundMethod2(height uint32, input, pegYield int64, amtRate, pegRate uint64) int64 {
252+
consumedInput, _ := Convert(height, pegYield, pegRate, pegRate, amtRate, amtRate)
251253
refund := input - consumedInput
252254
return refund
253255
}
@@ -256,23 +258,23 @@ func RefundMethod2(input, pegYield int64, amtRate, pegRate uint64) int64 {
256258
// amt is in pXXX
257259
// refund is in pXXX
258260
// pegYield is in PEG
259-
func CheckRefund(t *testing.T, input, refund, pegYield int64, amtRate, pegRate uint64) {
261+
func CheckRefund(t *testing.T, height uint32, input, refund, pegYield int64, amtRate, pegRate uint64) {
260262
max := func(a, b int64) int64 {
261263
if a > b {
262264
return a
263265
}
264266
return b
265267
}
266268

267-
maxPegYield, err := Convert(input, amtRate, pegRate)
269+
maxPegYield, err := Convert(height, input, amtRate, amtRate, pegRate, pegRate)
268270
if err != nil {
269271
return // Overflow or 0 rates
270272
}
271273

272274
{
273275
// Asset Equivalency
274276
// This check is `input = refund + (peg converted to input)`
275-
yieldInAsset, err := Convert(pegYield, pegRate, amtRate)
277+
yieldInAsset, err := Convert(height, pegYield, pegRate, pegRate, amtRate, amtRate)
276278
if err != nil {
277279
t.Error(err) // This would be bad news
278280
}
@@ -296,12 +298,12 @@ func CheckRefund(t *testing.T, input, refund, pegYield int64, amtRate, pegRate u
296298
// consumed = input - refund
297299
// consumed -> PEG + refund -> PEG = input -> PEG
298300
consumed := int64(input) - refund
299-
consumedPEG, err := Convert(consumed, amtRate, pegRate)
301+
consumedPEG, err := Convert(height, consumed, amtRate, amtRate, pegRate, pegRate)
300302
if err != nil {
301303
t.Error(err) // This would be bad news
302304
}
303305

304-
refundPEGCheck, err := Convert(refund, amtRate, pegRate)
306+
refundPEGCheck, err := Convert(height, refund, amtRate, amtRate, pegRate, pegRate)
305307
if err != nil {
306308
t.Error(err) // This would be bad news
307309
}

node/conversions/conversions_test.go

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@ import (
77
"math/rand"
88
"testing"
99

10+
"github.com/pegnet/pegnetd/node/conversions"
11+
1012
"github.com/stretchr/testify/assert"
1113
"github.com/stretchr/testify/require"
1214
)
@@ -52,7 +54,7 @@ func TestConversions_Convert_Vectors(t *testing.T) {
5254
t.Run(test.Name, func(t *testing.T) {
5355
assert := assert.New(t)
5456

55-
observedY1, err := Convert(test.X1, test.XRate, test.YRate)
57+
observedY1, err := conversions.Convert(1, test.X1, test.XRate, test.XRate, test.YRate, test.YRate)
5658
if len(test.ErrorString) != 0 {
5759
assert.EqualError(err, test.ErrorString)
5860
return
@@ -63,13 +65,13 @@ func TestConversions_Convert_Vectors(t *testing.T) {
6365
// Due to truncation in integer division, there is often error present in the
6466
// conversion from Y back to X. Thus, we check that it is within the expected
6567
// margin of error.
66-
observedX2, err := Convert(test.Y1, test.YRate, test.XRate)
68+
observedX2, err := conversions.Convert(1, test.Y1, test.YRate, test.YRate, test.XRate, test.XRate)
6769
require.NoError(t, err)
6870
observedError := abs(test.X1 - observedX2)
6971
maxExpectedError := maxConversionError(test.XRate, test.YRate)
7072
require.True(t, observedError <= maxExpectedError, "Margin of error exceeded for conversion Y1 --> X2")
7173

72-
observedY2, err := Convert(test.X2, test.XRate, test.YRate)
74+
observedY2, err := conversions.Convert(1, test.X2, test.XRate, test.XRate, test.YRate, test.YRate)
7375
require.NoError(t, err)
7476
observedError = abs(test.Y1 - observedY2)
7577
assert.True(observedError <= maxExpectedError, "Margin of error exceeded for conversion X2 --> Y2")
@@ -89,7 +91,7 @@ func TestConversions_Convert_Random(t *testing.T) {
8991
t.Run(fmt.Sprintf("Iteration %d", i), func(t *testing.T) {
9092
assert := assert.New(t)
9193

92-
y1, err := Convert(x1, xRate, yRate)
94+
y1, err := conversions.Convert(1, x1, xRate, xRate, yRate, yRate)
9395
if len(expectedErrorString) != 0 {
9496
assert.EqualError(err, expectedErrorString)
9597
return
@@ -99,13 +101,13 @@ func TestConversions_Convert_Random(t *testing.T) {
99101
// Due to truncation in integer division, there is often error present in the
100102
// conversion from Y back to X. Thus, we check that it is within the expected
101103
// margin of error.
102-
x2, err := Convert(y1, yRate, xRate)
104+
x2, err := conversions.Convert(1, y1, yRate, yRate, xRate, xRate)
103105
require.NoError(t, err)
104106
observedError := abs(x1 - x2)
105107
maxExpectedError := maxConversionError(yRate, xRate)
106108
assert.True(observedError <= maxExpectedError, "Margin of error exceeded for Y1 --> X2: observedError=%d, maxError=%d", observedError, maxExpectedError)
107109

108-
y2, err := Convert(x2, xRate, yRate)
110+
y2, err := conversions.Convert(1, x2, xRate, xRate, yRate, yRate)
109111
require.NoError(t, err)
110112
observedError = abs(y1 - y2)
111113
maxExpectedError = maxConversionError(xRate, yRate)

0 commit comments

Comments
 (0)