mirror of
https://github.com/d0zingcat/gocryptotrader.git
synced 2026-05-13 23:16:45 +00:00
82 lines
2.0 KiB
Go
82 lines
2.0 KiB
Go
package exchange
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/thrasher-corp/gocryptotrader/currency"
|
|
)
|
|
|
|
func TestValidate(t *testing.T) {
|
|
testPair := currency.NewPair(currency.BTC, currency.LTC)
|
|
tester := []struct {
|
|
Pair currency.Pair
|
|
Side OrderSide
|
|
Type OrderType
|
|
Amount float64
|
|
Price float64
|
|
ExpectedErr error
|
|
}{
|
|
{
|
|
ExpectedErr: ErrOrderPairIsEmpty,
|
|
}, // empty pair
|
|
{
|
|
Pair: testPair,
|
|
ExpectedErr: ErrOrderSideIsInvalid,
|
|
}, // valid pair but invalid order side
|
|
{
|
|
Pair: testPair,
|
|
Side: BuyOrderSide,
|
|
ExpectedErr: ErrOrderTypeIsInvalid,
|
|
}, // valid pair and order side but invalid order type
|
|
{
|
|
Pair: testPair,
|
|
Side: SellOrderSide,
|
|
ExpectedErr: ErrOrderTypeIsInvalid,
|
|
}, // valid pair and order side but invalid order type
|
|
{
|
|
Pair: testPair,
|
|
Side: BidOrderSide,
|
|
ExpectedErr: ErrOrderTypeIsInvalid,
|
|
}, // valid pair and order side but invalid order type
|
|
{
|
|
Pair: testPair,
|
|
Side: AskOrderSide,
|
|
ExpectedErr: ErrOrderTypeIsInvalid,
|
|
}, // valid pair and order side but invalid order type
|
|
{
|
|
Pair: testPair,
|
|
Side: AskOrderSide,
|
|
Type: MarketOrderType,
|
|
ExpectedErr: ErrOrderAmountIsInvalid,
|
|
}, // valid pair, order side, type but invalid amount
|
|
{
|
|
Pair: testPair,
|
|
Side: AskOrderSide,
|
|
Type: LimitOrderType,
|
|
Amount: 1,
|
|
ExpectedErr: ErrOrderPriceMustBeSetIfLimitOrder,
|
|
}, // valid pair, order side, type, amount but invalid price
|
|
{
|
|
Pair: testPair,
|
|
Side: AskOrderSide,
|
|
Type: LimitOrderType,
|
|
Amount: 1,
|
|
Price: 1000,
|
|
ExpectedErr: nil,
|
|
}, // valid order!
|
|
}
|
|
|
|
for x := range tester {
|
|
s := OrderSubmission{
|
|
Pair: tester[x].Pair,
|
|
OrderSide: tester[x].Side,
|
|
OrderType: tester[x].Type,
|
|
Amount: tester[x].Amount,
|
|
Price: tester[x].Price,
|
|
}
|
|
if err := s.Validate(); err != tester[x].ExpectedErr {
|
|
t.Errorf("Unexpected result. Got: %s, want: %s", err, tester[x].ExpectedErr)
|
|
}
|
|
}
|
|
}
|