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  }