package chart

import (
	"math/rand"
	"testing"
	"time"

	assert "github.com/blendlabs/go-assert"
	"github.com/wcharczuk/go-chart/util"
)

func generateDummyStockData() (times []time.Time, prices []float64) {
	start := util.Date.On(util.NYSEOpen(), time.Date(2017, 05, 15, 0, 0, 0, 0, util.Date.Eastern()))
	cursor := start
	for day := 0; day < 60; day++ {

		if util.Date.IsWeekendDay(cursor.Weekday()) {
			cursor = start.AddDate(0, 0, day)
			continue
		}

		for hour := 0; hour < 7; hour++ {
			for minute := 0; minute < 60; minute++ {
				times = append(times, cursor)
				prices = append(prices, rand.Float64()*256)
				cursor = cursor.Add(time.Minute)
			}

			cursor = cursor.Add(time.Hour)
		}

		cursor = start.AddDate(0, 0, day)
	}

	return
}

func TestCandlestickSeriesCandleValues(t *testing.T) {
	assert := assert.New(t)

	xdata, ydata := generateDummyStockData()

	candleSeries := &CandlestickSeries{
		InnerSeries: TimeSeries{
			XValues: xdata,
			YValues: ydata,
		},
	}

	values := candleSeries.GetCandleValues()
	assert.Len(values, 43) // should be 60 days per the generator.
}