package flag_test import ( "slices" "testing" internalFlag "codeflow.dananglin.me.uk/apollo/enbas/internal/flag" ) func TestTimeDurationValue(t *testing.T) { parsingTests := []struct { input string want string }{ { input: "1 day", want: "24h0m0s", }, { input: "3 days, 5 hours, 39 minutes and 6 seconds", want: "77h39m6s", }, { input: "1 minute and 30 seconds", want: "1m30s", }, { input: "(7 seconds) (21 hours) (41 days)", want: "1005h0m7s", }, } value := internalFlag.NewTimeDurationValue() for _, test := range slices.All(parsingTests) { if err := value.Set(test.input); err != nil { t.Fatalf( "Unable to parse %s into a TimeDurationValue: %v", test.input, err, ) } got := value.String() if got != test.want { t.Errorf( "Unexpected duration parsed from %s: want %s, got %s", test.input, test.want, got, ) } else { t.Logf( "Expected duration parsed from %s: got %s", test.input, got, ) } } }