github.com/unicornultrafoundation/go-u2u@v1.0.0-rc1.0.20240205080301-e74a83d3fadc/utils/pretty_duration_test.go (about) 1 package utils 2 3 import ( 4 "testing" 5 "time" 6 7 "github.com/stretchr/testify/require" 8 ) 9 10 func TestPrettyDuration_String(t *testing.T) { 11 for _, testcase := range []struct { 12 str string 13 val time.Duration 14 }{ 15 {"0s", 0}, 16 {"1ns", time.Nanosecond}, 17 {"1µs", time.Microsecond}, 18 {"1ms", time.Millisecond}, 19 {"1s", time.Second}, 20 {"1.000s", time.Second + time.Microsecond + time.Nanosecond}, 21 {"1.001s", time.Second + time.Millisecond + time.Microsecond + time.Nanosecond}, 22 {"1m1.001s", time.Minute + time.Second + time.Millisecond + time.Microsecond + time.Nanosecond}, 23 {"1h1m1.001s", time.Hour + time.Minute + time.Second + time.Millisecond + time.Microsecond + time.Nanosecond}, 24 {"1d1h1m", 24*time.Hour + time.Hour + time.Minute + time.Second + time.Millisecond + time.Microsecond + time.Nanosecond}, 25 {"1mo1d1h", 30*24*time.Hour + 24*time.Hour + time.Hour + time.Minute + time.Second + time.Millisecond + time.Microsecond + time.Nanosecond}, 26 {"26y4mo23d", time.Duration(9503.123456789 * 24 * float64(time.Hour))}, 27 } { 28 require.Equal(t, testcase.str, PrettyDuration(testcase.val).String()) 29 if testcase.val > 0 { 30 require.Equal(t, "-"+testcase.str, PrettyDuration(-testcase.val).String()) 31 } 32 } 33 }