79 lines
1.6 KiB
Go
79 lines
1.6 KiB
Go
package human
|
|
|
|
import (
|
|
"fmt"
|
|
"testing"
|
|
"time"
|
|
)
|
|
|
|
func TestSize(t *testing.T) {
|
|
tests := []struct {
|
|
input int64
|
|
expected string
|
|
}{
|
|
{0, "0 B"},
|
|
{1, "0 B"},
|
|
{1023, "0 B"},
|
|
{1024, "1 KB"},
|
|
{1536, "1.50 KB"},
|
|
{1024 * 1024, "1 MB"},
|
|
{1024 * 1024 * 1024, "1 GB"},
|
|
{1024 * 1024 * 1024 * 1024, "1 TB"},
|
|
{-1024, "-1 KB"},
|
|
}
|
|
|
|
for _, tt := range tests {
|
|
result := Size(tt.input)
|
|
if result != tt.expected {
|
|
t.Errorf("Size(%d) = %s, want %s", tt.input, result, tt.expected)
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestDuration(t *testing.T) {
|
|
tests := []struct {
|
|
input time.Duration
|
|
expected string
|
|
}{
|
|
{0, "0s"},
|
|
{time.Second, "1s"},
|
|
{time.Minute, "1m"},
|
|
{time.Hour, "1h"},
|
|
{24 * time.Hour, "1d"},
|
|
{25 * time.Hour, "1d 1h"},
|
|
{90 * time.Minute, "1h 30m"},
|
|
{time.Hour + time.Minute + 34*time.Second + 230*time.Millisecond, "1h 1m 34.23s"},
|
|
{1356*24*time.Hour + 2*time.Hour + 55*time.Minute + 34*time.Second + 230*time.Millisecond, "1356d 2h 55m 34.23s"},
|
|
{-time.Hour, "-1h"},
|
|
}
|
|
|
|
for _, tt := range tests {
|
|
result := Duration(tt.input)
|
|
if result != tt.expected {
|
|
t.Errorf("Duration(%v) = %s, want %s", tt.input, result, tt.expected)
|
|
}
|
|
}
|
|
}
|
|
|
|
func ExampleSize() {
|
|
fmt.Println(Size(1024))
|
|
fmt.Println(Size(1024 * 1024))
|
|
fmt.Println(Size(1536))
|
|
// Output:
|
|
// 1 KB
|
|
// 1 MB
|
|
// 1.50 KB
|
|
}
|
|
|
|
func ExampleDuration() {
|
|
fmt.Println(Duration(time.Hour))
|
|
fmt.Println(Duration(25 * time.Hour))
|
|
fmt.Println(Duration(90 * time.Minute))
|
|
fmt.Println(Duration(1356*24*time.Hour + 2*time.Hour + 55*time.Minute + 34*time.Second + 230*time.Millisecond))
|
|
// Output:
|
|
// 1h
|
|
// 1d 1h
|
|
// 1h 30m
|
|
// 1356d 2h 55m 34.23s
|
|
}
|