diff --git a/go/protoutil/duration_test.go b/go/protoutil/duration_test.go index 20f01482563..468d1ad5f34 100644 --- a/go/protoutil/duration_test.go +++ b/go/protoutil/duration_test.go @@ -26,7 +26,6 @@ import ( ) func TestDurationFromProto(t *testing.T) { - t.Parallel() tests := []struct { name string @@ -59,13 +58,32 @@ func TestDurationFromProto(t *testing.T) { isOk: true, shouldErr: true, }, + { + name: "nanoseconds", + in: &vttime.Duration{ + Seconds: 1, + Nanos: 500000000, + }, + expected: time.Second + 500*time.Millisecond, + isOk: true, + shouldErr: false, + }, + { + name: "out of range nanoseconds", + in: &vttime.Duration{ + Seconds: -1, + Nanos: 500000000, + }, + expected: 0, + isOk: true, + shouldErr: true, + }, } for _, tt := range tests { tt := tt t.Run(tt.name, func(t *testing.T) { - t.Parallel() actual, ok, err := DurationFromProto(tt.in) if tt.shouldErr { @@ -80,3 +98,38 @@ func TestDurationFromProto(t *testing.T) { }) } } + +func TestDurationToProto(t *testing.T) { + + tests := []struct { + name string + in time.Duration + expected *vttime.Duration + }{ + { + name: "success", + in: time.Second * 1000, + expected: &vttime.Duration{Seconds: 1000}, + }, + { + name: "zero duration", + in: 0, + expected: &vttime.Duration{}, + }, + { + name: "nanoseconds", + in: time.Second + 500*time.Millisecond, + expected: &vttime.Duration{Seconds: 1, Nanos: 500000000}, + }, + } + + for _, tt := range tests { + tt := tt + + t.Run(tt.name, func(t *testing.T) { + + actual := DurationToProto(tt.in) + assert.Equal(t, tt.expected, actual) + }) + } +}