1
2
3
4
5 package mapfs
6
7 import (
8 "io"
9 "os"
10 "reflect"
11 "testing"
12 )
13
14 func TestOpenRoot(t *testing.T) {
15 fs := New(map[string]string{
16 "foo/bar/three.txt": "a",
17 "foo/bar.txt": "b",
18 "top.txt": "c",
19 "other-top.txt": "d",
20 })
21 tests := []struct {
22 path string
23 want string
24 }{
25 {"/foo/bar/three.txt", "a"},
26 {"foo/bar/three.txt", "a"},
27 {"foo/bar.txt", "b"},
28 {"top.txt", "c"},
29 {"/top.txt", "c"},
30 {"other-top.txt", "d"},
31 {"/other-top.txt", "d"},
32 }
33 for _, tt := range tests {
34 rsc, err := fs.Open(tt.path)
35 if err != nil {
36 t.Errorf("Open(%q) = %v", tt.path, err)
37 continue
38 }
39 slurp, err := io.ReadAll(rsc)
40 if err != nil {
41 t.Error(err)
42 }
43 if string(slurp) != tt.want {
44 t.Errorf("Read(%q) = %q; want %q", tt.path, tt.want, slurp)
45 }
46 rsc.Close()
47 }
48
49 _, err := fs.Open("/xxxx")
50 if !os.IsNotExist(err) {
51 t.Errorf("ReadDir /xxxx = %v; want os.IsNotExist error", err)
52 }
53 }
54
55 func TestReaddir(t *testing.T) {
56 fs := New(map[string]string{
57 "foo/bar/three.txt": "333",
58 "foo/bar.txt": "22",
59 "top.txt": "top.txt file",
60 "other-top.txt": "other-top.txt file",
61 })
62 tests := []struct {
63 dir string
64 want []os.FileInfo
65 }{
66 {
67 dir: "/",
68 want: []os.FileInfo{
69 mapFI{name: "foo", dir: true},
70 mapFI{name: "other-top.txt", size: len("other-top.txt file")},
71 mapFI{name: "top.txt", size: len("top.txt file")},
72 },
73 },
74 {
75 dir: "/foo",
76 want: []os.FileInfo{
77 mapFI{name: "bar", dir: true},
78 mapFI{name: "bar.txt", size: 2},
79 },
80 },
81 {
82 dir: "/foo/",
83 want: []os.FileInfo{
84 mapFI{name: "bar", dir: true},
85 mapFI{name: "bar.txt", size: 2},
86 },
87 },
88 {
89 dir: "/foo/bar",
90 want: []os.FileInfo{
91 mapFI{name: "three.txt", size: 3},
92 },
93 },
94 }
95 for _, tt := range tests {
96 fis, err := fs.ReadDir(tt.dir)
97 if err != nil {
98 t.Errorf("ReadDir(%q) = %v", tt.dir, err)
99 continue
100 }
101 if !reflect.DeepEqual(fis, tt.want) {
102 t.Errorf("ReadDir(%q) = %#v; want %#v", tt.dir, fis, tt.want)
103 continue
104 }
105 }
106
107 _, err := fs.ReadDir("/xxxx")
108 if !os.IsNotExist(err) {
109 t.Errorf("ReadDir /xxxx = %v; want os.IsNotExist error", err)
110 }
111 }
112
View as plain text