github.com/gocrane/crane@v0.11.0/pkg/utils/time_test.go (about) 1 package utils 2 3 import ( 4 "testing" 5 "time" 6 ) 7 8 func TestParseDuration(t *testing.T) { 9 tests := []struct { 10 name string 11 s string 12 want time.Duration 13 wantErr bool 14 }{ 15 { 16 name: "duration string's time unit is 'd'", 17 s: "1d", 18 want: time.Hour * 24 * time.Duration(1), 19 wantErr: false, 20 }, 21 { 22 name: "duration string's time unit is not 'd'", 23 s: "300ms", 24 want: 300 * time.Millisecond, 25 wantErr: false, 26 }, 27 { 28 name: "duration string's format is invalid", 29 s: "", 30 want: 0, 31 wantErr: true, 32 }, 33 } 34 for _, tt := range tests { 35 t.Run(tt.name, func(t *testing.T) { 36 got, err := ParseDuration(tt.s) 37 if (err != nil) != tt.wantErr { 38 t.Errorf("ParseDuration() error = %v, wantErr %v", err, tt.wantErr) 39 return 40 } 41 if got != tt.want { 42 t.Errorf("ParseDuration() = %v, want %v", got, tt.want) 43 } 44 }) 45 } 46 } 47 48 func TestParseTimestamp(t *testing.T) { 49 tests := []struct { 50 name string 51 ts string 52 want time.Time 53 wantErr bool 54 }{ 55 { 56 name: "parsed incorrect", 57 ts: "", 58 wantErr: true, 59 }, 60 { 61 name: "parsed correct", 62 ts: "1d", 63 wantErr: false, 64 }, 65 } 66 for _, tt := range tests { 67 t.Run(tt.name, func(t *testing.T) { 68 _, err := ParseDuration(tt.ts) 69 if (err != nil) != tt.wantErr { 70 t.Errorf("ParseDuration() error = %v, wantErr %v", err, tt.wantErr) 71 return 72 } 73 }) 74 } 75 }