Files
api-antrian-operasi/internal/domain/reference/pasien/pasien_test.go
T
2026-02-06 09:47:53 +07:00

78 lines
1.6 KiB
Go

package pasien
import (
"testing"
"time"
)
type testDataAgeCalculator struct {
name string
birthday time.Time
now time.Time
expected Age
}
func parseDate(s string) time.Time {
t, err := time.Parse("2006-01-02", s)
if err != nil {
panic(err)
}
return t
}
func TestAgeCalculator(t *testing.T) {
dataSet := []testDataAgeCalculator{
{
name: "2 month 1 day difference",
birthday: parseDate("1998-07-15"),
now: parseDate("1998-09-16"),
expected: Age{Years: 0, Months: 2, Days: 1},
},
{
name: "same day",
birthday: parseDate("1998-07-15"),
now: parseDate("1998-07-15"),
expected: Age{Years: 0, Months: 0, Days: 0},
},
{
name: "1 Year 2 month 3 day difference",
birthday: parseDate("1998-07-15"),
now: parseDate("1999-09-18"),
expected: Age{Years: 1, Months: 2, Days: 3},
},
{
name: "1 Year 1 month 29 day difference",
birthday: parseDate("1998-07-15"),
now: parseDate("1999-09-13"),
expected: Age{Years: 1, Months: 1, Days: 29},
},
{
name: "0 Year 10 month 29 day difference",
birthday: parseDate("1998-07-15"),
now: parseDate("1999-05-13"),
expected: Age{Years: 0, Months: 9, Days: 28},
},
{
name: "birthday after now",
birthday: parseDate("1998-07-15"),
now: parseDate("1997-05-13"),
expected: Age{Years: 0, Months: 0, Days: 0},
},
}
for _, tt := range dataSet {
t.Run(tt.name, func(t *testing.T) {
calc := CalculateAge(tt.birthday, tt.now)
if calc != tt.expected {
t.Fatalf(
"expected %+v, got %+v",
tt.expected,
calc,
)
}
})
}
}