86 lines
1.7 KiB
Go
86 lines
1.7 KiB
Go
package main
|
|
|
|
import (
|
|
"reflect"
|
|
"testing"
|
|
)
|
|
|
|
func TestIsRoot(t *testing.T) {
|
|
if !isRoot("/") {
|
|
t.Errorf(`"/" is root`)
|
|
}
|
|
|
|
paths := []string{
|
|
"",
|
|
"~",
|
|
"foo",
|
|
"foo/bar",
|
|
"foo/bar",
|
|
"/home",
|
|
"/home/user",
|
|
}
|
|
|
|
for _, p := range paths {
|
|
if isRoot(p) {
|
|
t.Errorf("'%s' is not root", p)
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestHumanize(t *testing.T) {
|
|
nums := []struct {
|
|
i int64
|
|
s string
|
|
}{
|
|
{0, "0"},
|
|
{9, "9"},
|
|
{99, "99"},
|
|
{999, "999"},
|
|
{1000, "1.0K"},
|
|
{1023, "1.0K"},
|
|
{1025, "1.0K"},
|
|
{1049, "1.0K"},
|
|
{1050, "1.0K"},
|
|
{1099, "1.0K"},
|
|
{9999, "9.9K"},
|
|
{10000, "10K"},
|
|
{10100, "10K"},
|
|
{10500, "10K"},
|
|
{1000000, "1.0M"},
|
|
}
|
|
|
|
for _, num := range nums {
|
|
if h := humanize(num.i); h != num.s {
|
|
t.Errorf("at input '%d' expected '%s' but got '%s'", num.i, num.s, h)
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestExtractNums(t *testing.T) {
|
|
names := []struct {
|
|
s string
|
|
nums []int
|
|
rest []string
|
|
numFirst bool
|
|
}{
|
|
{"foo123bar456", []int{123, 456}, []string{"foo", "bar"}, false},
|
|
{"123foo456bar", []int{123, 456}, []string{"foo", "bar"}, true},
|
|
{"a-1-1.txt", []int{1, 1}, []string{"a-", "-", ".txt"}, false},
|
|
{"a-1-10.txt", []int{1, 10}, []string{"a-", "-", ".txt"}, false},
|
|
{"a-10-1.txt", []int{10, 1}, []string{"a-", "-", ".txt"}, false},
|
|
}
|
|
|
|
for _, name := range names {
|
|
nums, rest, numFirst := extractNums(name.s)
|
|
if !reflect.DeepEqual(nums, name.nums) {
|
|
t.Errorf("at input '%s' expected '%v' but got '%v'", name.s, name.nums, nums)
|
|
}
|
|
if !reflect.DeepEqual(rest, name.rest) {
|
|
t.Errorf("at input '%s' expected '%v' but got '%v'", name.s, name.rest, rest)
|
|
}
|
|
if !numFirst == name.numFirst {
|
|
t.Errorf("at input '%s' expected '%t' but got '%t'", name.s, name.numFirst, numFirst)
|
|
}
|
|
}
|
|
}
|