package utils

import (
	"testing"

	"github.com/stretchr/testify/require"
)

func TestConvertBackupTimeToUtc(t *testing.T) {
	time, week, err := ConvertBackupTime("8", "15:00", []int32{1}, false)
	require.Nil(t, err)
	require.Equal(t, "07:00", time)
	require.Equal(t, 1, len(week))
	require.Equal(t, int32(1), week[0])
}

func TestConvertBackupTimeFromUtc(t *testing.T) {
	time, week, err := ConvertBackupTime("8", "15:00", []int32{1}, true)
	require.Nil(t, err)
	require.Equal(t, "23:00", time)
	require.Equal(t, 1, len(week))
	require.Equal(t, int32(1), week[0])
}

func TestConvertBackupTimeToUtcCrossDay(t *testing.T) {
	time, week, err := ConvertBackupTime("8", "05:00", []int32{1}, false)
	require.Nil(t, err)
	require.Equal(t, "21:00", time)
	require.Equal(t, 1, len(week))
	require.Equal(t, int32(0), week[0])
}

func TestConvertBackupTimeFromUtcCrossDay(t *testing.T) {
	time, week, err := ConvertBackupTime("8", "21:00", []int32{1}, true)
	require.Nil(t, err)
	require.Equal(t, "05:00", time)
	require.Equal(t, 1, len(week))
	require.Equal(t, int32(2), week[0])
}

func TestConvertBackupTimeToUtcMutilDay(t *testing.T) {
	time, week, err := ConvertBackupTime("8", "15:00", []int32{1, 2, 3}, false)
	require.Nil(t, err)
	require.Equal(t, "07:00", time)
	require.Equal(t, 3, len(week))
	require.Equal(t, int32(1), week[0])
	require.Equal(t, int32(2), week[1])
	require.Equal(t, int32(3), week[2])
}

func TestConvertBackupTimeFromUtcMutilDay(t *testing.T) {
	time, week, err := ConvertBackupTime("8", "21:00", []int32{5, 6, 0}, true)
	require.Nil(t, err)
	require.Equal(t, "05:00", time)
	require.Equal(t, 3, len(week))
	require.Equal(t, int32(6), week[0])
	require.Equal(t, int32(0), week[1])
	require.Equal(t, int32(1), week[2])
}
