|
| 1 | +package commandsgen |
| 2 | + |
| 3 | +import ( |
| 4 | + "testing" |
| 5 | + "time" |
| 6 | + |
| 7 | + "github.com/stretchr/testify/suite" |
| 8 | +) |
| 9 | + |
| 10 | +type ParseDurationSuite struct { |
| 11 | + suite.Suite |
| 12 | +} |
| 13 | + |
| 14 | +func TestParseDurationSuite(t *testing.T) { |
| 15 | + suite.Run(t, new(ParseDurationSuite)) |
| 16 | +} |
| 17 | + |
| 18 | +func (s *ParseDurationSuite) TestParseDuration() { |
| 19 | + for _, c := range []struct { |
| 20 | + input string |
| 21 | + expected time.Duration // -1 means error |
| 22 | + }{ |
| 23 | + {"1h", time.Hour}, |
| 24 | + {"3m30s", 3*time.Minute + 30*time.Second}, |
| 25 | + {"1d", 24 * time.Hour}, |
| 26 | + {"3d", 3 * 24 * time.Hour}, |
| 27 | + {"5d6h15m", 5*24*time.Hour + 6*time.Hour + 15*time.Minute}, |
| 28 | + {"5.25d15m", 5*24*time.Hour + 6*time.Hour + 15*time.Minute}, |
| 29 | + {".5d", 12 * time.Hour}, |
| 30 | + {"-10d12.25h", -(10*24*time.Hour + 12*time.Hour + 15*time.Minute)}, |
| 31 | + {"3m2h1d", 3*time.Minute + 2*time.Hour + 1*24*time.Hour}, |
| 32 | + {"8m7h6d5d4h3m", 8*time.Minute + 7*time.Hour + 6*24*time.Hour + 5*24*time.Hour + 4*time.Hour + 3*time.Minute}, |
| 33 | + {"7", -1}, // error |
| 34 | + {"", -1}, // error |
| 35 | + {"10000000h", -1}, // error out of bounds |
| 36 | + } { |
| 37 | + got, err := parseDuration(c.input) |
| 38 | + if c.expected == -1 { |
| 39 | + s.Error(err) |
| 40 | + } else { |
| 41 | + s.Equal(c.expected, got) |
| 42 | + } |
| 43 | + } |
| 44 | +} |
0 commit comments