37 lines
1016 B
Go
37 lines
1016 B
Go
package main
|
|
|
|
import (
|
|
"strings"
|
|
"testing"
|
|
"time"
|
|
|
|
"github.com/shopspring/decimal"
|
|
|
|
"overnight-trading-bot/internal/backtest"
|
|
"overnight-trading-bot/internal/domain"
|
|
)
|
|
|
|
func TestValidateMetadataRejectsMissingLotOrTick(t *testing.T) {
|
|
candles := map[string][]domain.Candle{
|
|
"uid": {{InstrumentUID: "uid", TradeDate: time.Date(2026, 6, 8, 0, 0, 0, 0, time.UTC)}},
|
|
}
|
|
err := validateMetadata(candles, map[string]backtest.InstrumentMetadata{
|
|
"uid": {Lot: 10},
|
|
})
|
|
if err == nil || !strings.Contains(err.Error(), "missing lot/min_price_increment metadata") {
|
|
t.Fatalf("err=%v, want missing metadata error", err)
|
|
}
|
|
}
|
|
|
|
func TestValidateMetadataAcceptsCompleteMetadata(t *testing.T) {
|
|
candles := map[string][]domain.Candle{
|
|
"uid": {{InstrumentUID: "uid", TradeDate: time.Date(2026, 6, 8, 0, 0, 0, 0, time.UTC)}},
|
|
}
|
|
err := validateMetadata(candles, map[string]backtest.InstrumentMetadata{
|
|
"uid": {Lot: 10, MinPriceIncrement: decimal.RequireFromString("0.01")},
|
|
})
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
}
|