| // Copyright 2022 The Go Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style |
| // license that can be found in the LICENSE file. |
| |
| //go:build go1.16 && (linux || darwin) |
| // +build go1.16 |
| // +build linux darwin |
| |
| package main |
| |
| import ( |
| "testing" |
| "time" |
| ) |
| |
| func TestHumanDuration(t *testing.T) { |
| cases := []struct { |
| desc string |
| duration string |
| want string |
| }{ |
| { |
| desc: "format days", |
| duration: "99h2m1s", |
| want: "4d3h2m1s", |
| }, |
| { |
| desc: "handle tiny durations", |
| duration: "1ns", |
| want: "0s", |
| }, |
| { |
| desc: "handle seconds", |
| duration: "3s", |
| want: "3s", |
| }, |
| } |
| for _, c := range cases { |
| t.Run(c.duration, func(t *testing.T) { |
| d, err := time.ParseDuration(c.duration) |
| if err != nil { |
| t.Fatalf("time.ParseDuration(%q) = %q, %q, wanted no error", c.duration, d, err) |
| } |
| if got := humanDuration(d); got != c.want { |
| t.Errorf("humanDuration(%v) = %q, wanted %q", d, got, c.want) |
| } |
| }) |
| } |
| } |