From 8fbb8d9775fd5443dfba5315558e4d3121d6d4a4 Mon Sep 17 00:00:00 2001 From: Will Charczuk Date: Sun, 24 Jul 2016 09:04:07 -0700 Subject: [PATCH] tests. --- date/util.go | 6 +++++- market_hours_range.go | 1 - market_hours_range_test.go | 37 +++++++++++++++++++++++++++++++++++++ 3 files changed, 42 insertions(+), 2 deletions(-) diff --git a/date/util.go b/date/util.go index 13f50d4..f1a524c 100644 --- a/date/util.go +++ b/date/util.go @@ -310,7 +310,11 @@ func CalculateMarketSecondsBetween(start, end, marketOpen, marketClose time.Time startMarketClose := NextMarketClose(startEastern, marketClose, isHoliday) if (startEastern.Equal(startMarketOpen) || startEastern.After(startMarketOpen)) && startEastern.Before(startMarketClose) { - seconds += int64(startMarketClose.Sub(startEastern) / time.Second) + if endEastern.Before(startMarketClose) { + seconds += int64(endEastern.Sub(startEastern) / time.Second) + } else { + seconds += int64(startMarketClose.Sub(startEastern) / time.Second) + } } cursor := NextMarketOpen(startMarketClose, marketOpen, isHoliday) diff --git a/market_hours_range.go b/market_hours_range.go index 072a121..93a203c 100644 --- a/market_hours_range.go +++ b/market_hours_range.go @@ -106,6 +106,5 @@ func (mhr MarketHoursRange) Translate(value float64) int { valueDelta := date.CalculateMarketSecondsBetween(mhr.Min, valueTime, mhr.MarketOpen, mhr.MarketClose, mhr.HolidayProvider) translated := int((float64(valueDelta) / float64(deltaSeconds)) * float64(mhr.Domain)) - fmt.Printf("nyse translating: %s to %d ~= %d", valueTime.Format(time.RFC3339), deltaSeconds, valueDelta) return translated } diff --git a/market_hours_range_test.go b/market_hours_range_test.go index 8f0cbd2..5bf5edd 100644 --- a/market_hours_range_test.go +++ b/market_hours_range_test.go @@ -21,3 +21,40 @@ func TestMarketHoursRangeGetDelta(t *testing.T) { assert.NotZero(r.GetDelta()) } + +func TestMarketHoursRangeTranslate(t *testing.T) { + assert := assert.New(t) + + r := &MarketHoursRange{ + Min: time.Date(2016, 07, 18, 9, 30, 0, 0, date.Eastern()), + Max: time.Date(2016, 07, 22, 16, 00, 0, 0, date.Eastern()), + MarketOpen: date.NYSEOpen, + MarketClose: date.NYSEClose, + HolidayProvider: date.IsNYSEHoliday, + Domain: 1000, + } + + weds := time.Date(2016, 07, 20, 9, 30, 0, 0, date.Eastern()) + + assert.Equal(0, r.Translate(TimeToFloat64(r.Min))) + assert.Equal(400, r.Translate(TimeToFloat64(weds))) + assert.Equal(1000, r.Translate(TimeToFloat64(r.Max))) +} + +func TestMarketHoursRangeGetTicks(t *testing.T) { + assert := assert.New(t) + + r := &MarketHoursRange{ + Min: time.Date(2016, 07, 18, 9, 30, 0, 0, date.Eastern()), + Max: time.Date(2016, 07, 22, 16, 00, 0, 0, date.Eastern()), + MarketOpen: date.NYSEOpen, + MarketClose: date.NYSEClose, + HolidayProvider: date.IsNYSEHoliday, + Domain: 1000, + } + + ticks := r.GetTicks(TimeValueFormatter) + assert.NotEmpty(ticks) + assert.Equal(TimeToFloat64(r.Min), ticks[0].Value) + assert.NotEmpty(ticks[0].Label) +}