package utility_test

import (
	"testing"
	"time"

	"git.kirsle.net/apps/gosocial/pkg/utility"
)

func TestAge(t *testing.T) {
	var now = time.Date(2022, 6, 15, 12, 0, 0, 0, time.UTC)

	var tests = []struct {
		In     string
		Expect int
	}{
		{
			In:     "1987-10-12",
			Expect: 34,
		},
		{
			In:     "2022-06-15",
			Expect: 0,
		},
		{
			In:     "1993-07-04",
			Expect: 28,
		},
		{
			In:     "1996-06-17",
			Expect: 26,
		},
		{
			In:     "1996-06-15",
			Expect: 26,
		},
		{
			In:     "1996-06-14",
			Expect: 25,
		},
		{
			In:     "2000-01-01",
			Expect: 22,
		},
		{
			In:     "2000-05-30",
			Expect: 22,
		},
		{
			In:     "2000-06-12",
			Expect: 21,
		},
		{
			In:     "2000-06-14",
			Expect: 21,
		},
		{
			In:     "2000-06-15",
			Expect: 22,
		},
		{
			In:     "2000-06-16",
			Expect: 22,
		},
	}

	for _, test := range tests {
		dob, _ := time.Parse("2006-01-02", test.In)
		actual := utility.AgeAt(dob, now)
		if actual != test.Expect {
			t.Errorf("Expected %s to be age %d but got %d", test.In, test.Expect, actual)
		}
	}
}
