mirror of
https://github.com/GopeedLab/gopeed.git
synced 2026-11-15 21:03:41 +00:00
refactor: package
This commit is contained in:
1 parent
359f28bb1f
commit
ede6a9834d
55 files changed
+279
-237
No files matched your search
@@ -0,0 +1,23 @@
|
||||
package util
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"math"
|
||||
)
|
||||
|
||||
var unitArr = []string{"B", "KB", "MB", "GB", "TB", "EB"}
|
||||
|
||||
func ByteFmt(size int64) string {
|
||||
if size == 0 {
|
||||
return "unknown"
|
||||
}
|
||||
fs := float64(size)
|
||||
p := int(math.Log(fs) / math.Log(1024))
|
||||
val := fs / math.Pow(1024, float64(p))
|
||||
_, frac := math.Modf(val)
|
||||
if frac > 0 {
|
||||
return fmt.Sprintf("%.1f%s", math.Floor(val*10)/10, unitArr[p])
|
||||
} else {
|
||||
return fmt.Sprintf("%d%s", int(val), unitArr[p])
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,57 @@
|
||||
package util
|
||||
|
||||
import "testing"
|
||||
|
||||
func TestByteFmt(t *testing.T) {
|
||||
type args struct {
|
||||
size int64
|
||||
}
|
||||
tests := []struct {
|
||||
name string
|
||||
args args
|
||||
want string
|
||||
}{
|
||||
{
|
||||
name: "100B",
|
||||
args: args{size: int64(100)},
|
||||
want: "100B",
|
||||
},
|
||||
{
|
||||
name: "1KB",
|
||||
args: args{size: int64(1024)},
|
||||
want: "1KB",
|
||||
},
|
||||
{
|
||||
name: "1.9KB",
|
||||
args: args{size: int64(1024*2 - 1)},
|
||||
want: "1.9KB",
|
||||
},
|
||||
{
|
||||
name: "2KB",
|
||||
args: args{size: int64(1024 * 2)},
|
||||
want: "2KB",
|
||||
},
|
||||
{
|
||||
name: "1MB",
|
||||
args: args{size: int64(1024 * 1024)},
|
||||
want: "1MB",
|
||||
},
|
||||
{
|
||||
name: "1.9MB",
|
||||
args: args{size: int64(1024*1024*2 - 1)},
|
||||
want: "1.9MB",
|
||||
},
|
||||
{
|
||||
name: "2MB",
|
||||
args: args{size: int64(1024 * 1024 * 2)},
|
||||
want: "2MB",
|
||||
},
|
||||
}
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
if got := ByteFmt(tt.args.size); got != tt.want {
|
||||
t.Errorf("ByteFmt() = %v, want %v", got, tt.want)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
package util
|
||||
|
||||
import "time"
|
||||
|
||||
// 计时器
|
||||
type Timer struct {
|
||||
t int64
|
||||
used int64
|
||||
}
|
||||
|
||||
func (t *Timer) Start() {
|
||||
t.t = time.Now().UnixNano()
|
||||
}
|
||||
|
||||
func (t *Timer) Pause() {
|
||||
t.used += time.Now().UnixNano() - t.t
|
||||
}
|
||||
|
||||
func (t *Timer) Continue() {
|
||||
t.t = time.Now().UnixNano()
|
||||
}
|
||||
|
||||
func (t *Timer) Used() int64 {
|
||||
return (time.Now().UnixNano() - t.t) + t.used
|
||||
}
|
||||
Reference in new issue
Block a user