mirror of
https://github.com/c9s/bbgo.git
synced 2024-11-14 19:13:52 +00:00
53 lines
1.1 KiB
Go
53 lines
1.1 KiB
Go
|
package common
|
||
|
|
||
|
import (
|
||
|
"testing"
|
||
|
|
||
|
"github.com/c9s/bbgo/pkg/fixedpoint"
|
||
|
"github.com/c9s/bbgo/pkg/types"
|
||
|
"github.com/stretchr/testify/assert"
|
||
|
)
|
||
|
|
||
|
func TestFeeBudget(t *testing.T) {
|
||
|
cases := []struct {
|
||
|
budgets map[string]fixedpoint.Value
|
||
|
trades []types.Trade
|
||
|
expected bool
|
||
|
}{
|
||
|
{
|
||
|
budgets: map[string]fixedpoint.Value{
|
||
|
"MAX": fixedpoint.NewFromFloat(0.5),
|
||
|
},
|
||
|
trades: []types.Trade{
|
||
|
{FeeCurrency: "MAX", Fee: fixedpoint.NewFromFloat(0.1)},
|
||
|
{FeeCurrency: "USDT", Fee: fixedpoint.NewFromFloat(10.0)},
|
||
|
},
|
||
|
expected: true,
|
||
|
},
|
||
|
{
|
||
|
budgets: map[string]fixedpoint.Value{
|
||
|
"MAX": fixedpoint.NewFromFloat(0.5),
|
||
|
},
|
||
|
trades: []types.Trade{
|
||
|
{FeeCurrency: "MAX", Fee: fixedpoint.NewFromFloat(0.1)},
|
||
|
{FeeCurrency: "MAX", Fee: fixedpoint.NewFromFloat(0.5)},
|
||
|
{FeeCurrency: "USDT", Fee: fixedpoint.NewFromFloat(10.0)},
|
||
|
},
|
||
|
expected: false,
|
||
|
},
|
||
|
}
|
||
|
|
||
|
for _, c := range cases {
|
||
|
feeBudget := FeeBudget{
|
||
|
DailyFeeBudgets: c.budgets,
|
||
|
}
|
||
|
feeBudget.Initialize()
|
||
|
|
||
|
for _, trade := range c.trades {
|
||
|
feeBudget.HandleTradeUpdate(trade)
|
||
|
}
|
||
|
|
||
|
assert.Equal(t, c.expected, feeBudget.IsBudgetAllowed())
|
||
|
}
|
||
|
}
|