-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathreaddir_test.go
106 lines (100 loc) · 2.4 KB
/
readdir_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
package imports
import (
"io/ioutil"
"os"
"reflect"
"testing"
)
func TestReadDir(t *testing.T) {
// sameInfo := func(fi1, fi2 os.FileInfo) bool {
// return fi1.Name() == fi2.Name() &&
// fi1.Size() == fi2.Size() &&
// fi1.Mode().Type() == fi2.Mode().Type() &&
// fi1.ModTime() == fi2.ModTime() &&
// fi1.IsDir() == fi2.IsDir() &&
// fi1.Sys() == fi2.Sys() &&
// os.SameFile(fi1, fi2)
// }
// _ = sameInfo
// formatFileInfo := func(fi os.FileInfo) string {
// return fmt.Sprintf("%+v", struct {
// Name string
// Size int64
// Mode os.FileMode
// ModTime time.Time
// IsDir bool
// Sys string
// }{
// Name: fi.Name(),
// Size: fi.Size(),
// Mode: fi.Mode().Type(),
// ModTime: fi.ModTime(),
// IsDir: fi.IsDir(),
// Sys: fmt.Sprintf("%+v", fi.Sys()),
// })
// }
// _ = formatFileInfo
compareInfo := func(t *testing.T, fi1, fi2 os.FileInfo) {
if fi1.Name() != fi2.Name() {
t.Errorf("Name(%q): got: %v want: %v", fi1.Name(), fi1.Name(), fi2.Name())
}
if fi1.Size() != fi2.Size() {
t.Errorf("Size(%q): got: %v want: %v", fi1.Name(), fi1.Size(), fi2.Size())
}
if fi1.Mode().Type() != fi2.Mode().Type() {
t.Errorf("Mode(%q): got: %v want: %v", fi1.Name(), fi1.Mode().Type(), fi2.Mode().Type())
}
if fi1.ModTime() != fi2.ModTime() {
t.Errorf("ModTime(%q): got: %v want: %v", fi1.Name(), fi1.ModTime(), fi2.ModTime())
}
if fi1.IsDir() != fi2.IsDir() {
t.Errorf("IsDir(%q): got: %v want: %v", fi1.Name(), fi1.IsDir(), fi2.IsDir())
}
if !reflect.DeepEqual(fi1.Sys(), fi2.Sys()) {
t.Errorf("Sys(%q): got: %#v want: %#v", fi1.Name(), fi1.Sys(), fi2.Sys())
}
}
wd, err := os.Getwd()
if err != nil {
t.Fatal(err)
}
want, err := ioutil.ReadDir(wd)
if err != nil {
t.Fatal(err)
}
got, err := readDir(wd)
if err != nil {
t.Fatal(err)
}
if len(want) != len(got) {
t.Errorf("len want: %d len got: %d", len(want), len(got))
}
for i := range got {
compareInfo(t, want[i], got[i])
if t.Failed() {
break
}
}
}
func BenchmarkReadDir(b *testing.B) {
wd, err := os.Getwd()
if err != nil {
b.Fatal(err)
}
for i := 0; i < b.N; i++ {
if _, err := readDir(wd); err != nil {
b.Fatal(err)
}
}
}
func BenchmarkReadDir_Base(b *testing.B) {
wd, err := os.Getwd()
if err != nil {
b.Fatal(err)
}
for i := 0; i < b.N; i++ {
if _, err := ioutil.ReadDir(wd); err != nil {
b.Fatal(err)
}
}
}