package fileutil

import (
	"testing"
	"time"

	"github.com/stretchr/testify/assert"
	"go.skia.org/infra/go/testutils/unittest"
)

func TestGetHourlyDirs_LargeTimeSpan_ReturnsSortedList(t *testing.T) {
	unittest.SmallTest(t)
	startTS := time.Date(1972, time.November, 29, 13, 45, 20, 67, time.UTC)
	endTS := time.Date(1982, time.February, 2, 3, 45, 20, 67, time.UTC)
	folders := GetHourlyDirs("prefix", startTS, endTS)
	assert.IsIncreasing(t, folders)
	assert.Len(t, folders, 80439)
	assert.Equal(t, folders[0], "prefix/1972/11/29/13")
	assert.Equal(t, folders[43], "prefix/1972/12/01/08") // spot check
	assert.Equal(t, folders[len(folders)-1], "prefix/1982/02/02/03")
}

func TestGetHourlyDirs_ExactlyOnTheHour_Success(t *testing.T) {
	unittest.SmallTest(t)
	startTS := time.Date(1985, time.November, 20, 12, 00, 00, 00, time.UTC)
	endTS := time.Date(1985, time.November, 20, 15, 00, 00, 00, time.UTC)
	folders := GetHourlyDirs("prefix", startTS, endTS)
	assert.Equal(t, []string{
		"prefix/1985/11/20/12", "prefix/1985/11/20/13", "prefix/1985/11/20/14", "prefix/1985/11/20/15",
	}, folders)
}

func TestGetHourlyDirs_LessThanOneHourApart_ReturnsOneFolder(t *testing.T) {
	unittest.SmallTest(t)
	// Test boundaries within an hour.
	startTS := time.Date(1985, time.November, 20, 13, 00, 00, 00, time.UTC)
	endTS := time.Date(1985, time.November, 20, 13, 01, 00, 00, time.UTC)
	folders := GetHourlyDirs("prefix", startTS, endTS)
	assert.Equal(t, []string{"prefix/1985/11/20/13"}, folders)
}

func TestGetHourlyDirs_StartAfterEnd_ReturnsNothing(t *testing.T) {
	unittest.SmallTest(t)
	startTS := time.Date(2014, time.November, 20, 13, 00, 00, 00, time.UTC)
	endTS := time.Date(1985, time.November, 20, 13, 01, 00, 00, time.UTC)
	folders := GetHourlyDirs("prefix", startTS, endTS)
	assert.Empty(t, folders)
}

func TestGetHourlyDirs_PrefixEmpty_ReturnValueDoesNotStartWithSlash(t *testing.T) {
	unittest.SmallTest(t)
	startTS := time.Date(2022, time.May, 31, 13, 01, 00, 00, time.UTC)
	endTS := time.Date(2022, time.June, 1, 4, 01, 00, 00, time.UTC)
	folders := GetHourlyDirs("", startTS, endTS)
	assert.Equal(t, []string{
		"2022/05/31/13", "2022/05/31/14", "2022/05/31/15", "2022/05/31/16", "2022/05/31/17",
		"2022/05/31/18", "2022/05/31/19", "2022/05/31/20", "2022/05/31/21", "2022/05/31/22",
		"2022/05/31/23", "2022/06/01/00", "2022/06/01/01", "2022/06/01/02", "2022/06/01/03",
		"2022/06/01/04",
	}, folders)
}
