78 lines
1.6 KiB
Go
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,
|
|
)
|
|
}
|
|
})
|
|
}
|
|
}
|