github.com/powerman/golang-tools@v0.1.11-0.20220410185822-5ad214d8d803/godoc/vfs/mapfs/mapfs_test.go (about) 1 // Copyright 2013 The Go Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style 3 // license that can be found in the LICENSE file. 4 5 package mapfs 6 7 import ( 8 "io/ioutil" 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 := ioutil.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 }