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  }