package funcs

import (
	"fmt"
	"testing"
	"time"

	"github.com/zclconf/go-cty/cty"
)

func TestTimestamp(t *testing.T) {
	currentTime := time.Now().UTC()
	result, err := Timestamp()
	if err != nil {
		t.Fatalf("err: %s", err)
	}
	resultTime, err := time.Parse(time.RFC3339, result.AsString())
	if err != nil {
		t.Fatalf("Error parsing timestamp: %s", err)
	}

	if resultTime.Sub(currentTime).Seconds() > 10.0 {
		t.Fatalf("Timestamp Diff too large. Expected: %s\nReceived: %s", currentTime.Format(time.RFC3339), result.AsString())
	}

}

func TestTimeadd(t *testing.T) {
	tests := []struct {
		Time     cty.Value
		Duration cty.Value
		Want     cty.Value
		Err      bool
	}{
		{
			cty.StringVal("2017-11-22T00:00:00Z"),
			cty.StringVal("1s"),
			cty.StringVal("2017-11-22T00:00:01Z"),
			false,
		},
		{
			cty.StringVal("2017-11-22T00:00:00Z"),
			cty.StringVal("10m1s"),
			cty.StringVal("2017-11-22T00:10:01Z"),
			false,
		},
		{ // also support subtraction
			cty.StringVal("2017-11-22T00:00:00Z"),
			cty.StringVal("-1h"),
			cty.StringVal("2017-11-21T23:00:00Z"),
			false,
		},
		{ // Invalid format timestamp
			cty.StringVal("2017-11-22"),
			cty.StringVal("-1h"),
			cty.UnknownVal(cty.String),
			true,
		},
		{ // Invalid format duration (day is not supported by ParseDuration)
			cty.StringVal("2017-11-22T00:00:00Z"),
			cty.StringVal("1d"),
			cty.UnknownVal(cty.String),
			true,
		},
	}

	for _, test := range tests {
		t.Run(fmt.Sprintf("TimeAdd(%#v, %#v)", test.Time, test.Duration), func(t *testing.T) {
			got, err := TimeAdd(test.Time, test.Duration)

			if test.Err {
				if err == nil {
					t.Fatal("succeeded; want error")
				}
				return
			} else if err != nil {
				t.Fatalf("unexpected error: %s", err)
			}

			if !got.RawEquals(test.Want) {
				t.Errorf("wrong result\ngot:  %#v\nwant: %#v", got, test.Want)
			}
		})
	}
}

func TestTimeCmp(t *testing.T) {
	tests := []struct {
		TimeA, TimeB cty.Value
		Want         cty.Value
		Err          string
	}{
		{
			cty.StringVal("2017-11-22T00:00:00Z"),
			cty.StringVal("2017-11-22T00:00:00Z"),
			cty.Zero,
			``,
		},
		{
			cty.StringVal("2017-11-22T00:00:00Z"),
			cty.StringVal("2017-11-22T01:00:00+01:00"),
			cty.Zero,
			``,
		},
		{
			cty.StringVal("2017-11-22T00:00:01Z"),
			cty.StringVal("2017-11-22T01:00:00+01:00"),
			cty.NumberIntVal(1),
			``,
		},
		{
			cty.StringVal("2017-11-22T01:00:00Z"),
			cty.StringVal("2017-11-22T00:59:00-01:00"),
			cty.NumberIntVal(-1),
			``,
		},
		{
			cty.StringVal("2017-11-22T01:00:00+01:00"),
			cty.StringVal("2017-11-22T01:00:00-01:00"),
			cty.NumberIntVal(-1),
			``,
		},
		{
			cty.StringVal("2017-11-22T01:00:00-01:00"),
			cty.StringVal("2017-11-22T01:00:00+01:00"),
			cty.NumberIntVal(1),
			``,
		},
		{
			cty.StringVal("2017-11-22T00:00:00Z"),
			cty.StringVal("bloop"),
			cty.UnknownVal(cty.String),
			`not a valid RFC3339 timestamp: cannot use "bloop" as year`,
		},
		{
			cty.StringVal("2017-11-22 00:00:00Z"),
			cty.StringVal("2017-11-22T00:00:00Z"),
			cty.UnknownVal(cty.String),
			`not a valid RFC3339 timestamp: missing required time introducer 'T'`,
		},
		{
			cty.StringVal("2017-11-22T00:00:00Z"),
			cty.UnknownVal(cty.String),
			cty.UnknownVal(cty.Number),
			``,
		},
		{
			cty.UnknownVal(cty.String),
			cty.StringVal("2017-11-22T00:00:00Z"),
			cty.UnknownVal(cty.Number),
			``,
		},
		{
			cty.UnknownVal(cty.String),
			cty.UnknownVal(cty.String),
			cty.UnknownVal(cty.Number),
			``,
		},
	}

	for _, test := range tests {
		t.Run(fmt.Sprintf("TimeCmp(%#v, %#v)", test.TimeA, test.TimeB), func(t *testing.T) {
			got, err := TimeCmp(test.TimeA, test.TimeB)

			if test.Err != "" {
				if err == nil {
					t.Fatal("succeeded; want error")
				}
				if got := err.Error(); got != test.Err {
					t.Errorf("wrong error message\ngot:  %s\nwant: %s", got, test.Err)
				}
				return
			} else if err != nil {
				t.Fatalf("unexpected error: %s", err)
			}

			if !got.RawEquals(test.Want) {
				t.Errorf("wrong result\ngot:  %#v\nwant: %#v", got, test.Want)
			}
		})
	}
}
