github.com/josephvusich/fdf@v0.0.0-20230522095411-9326dd32e33f/filetable_test.go (about) 1 package main 2 3 import ( 4 "os" 5 "testing" 6 7 "github.com/stretchr/testify/require" 8 ) 9 10 func TestFileTable_Find(t *testing.T) { 11 assert := require.New(t) 12 13 scanner := newScanner() 14 scanner.options.MatchMode = matchSize 15 16 m, c1, err := scanner.table.findStat("foobar", &fakeStat{size: 1024}, "") 17 assert.Equal(c1, m) 18 assert.Equal("foobar", c1.FoldedName) 19 assert.Equal(fileIsUnique, err) 20 21 m, c2, err := scanner.table.findStat("fooBuzz", &fakeStat{size: 1024}, "") 22 assert.Equal(c1, m) 23 assert.Equal("foobuzz", c2.FoldedName) 24 assert.Equal(matchSize, err) 25 26 m, c3, err := scanner.table.findStat("oofbar", &fakeStat{size: 1024}, "") 27 assert.Equal(c1, m) 28 assert.Equal("oofbar", c3.FoldedName) 29 assert.Equal(matchSize, err) 30 } 31 32 func TestFileTable_FindComparer(t *testing.T) { 33 assert := require.New(t) 34 35 scanner := newScanner() 36 scanner.options.MatchMode = matchSize 37 cmp, err := newComparer("1:1,-3:3", func(r *fileRecord) string { return r.FoldedName }) 38 assert.NoError(err) 39 scanner.options.Comparers = []comparer{cmp} 40 41 m, c1, err := scanner.table.findStat("foobar", &fakeStat{size: 1024}, "") 42 assert.Equal(c1, m) 43 assert.Equal("foobar", c1.FoldedName) 44 assert.Equal(fileIsUnique, err) 45 46 m, c2, err := scanner.table.findStat("fooBuzz", &fakeStat{size: 1024}, "") 47 assert.Equal(c2, m) 48 assert.Equal("foobuzz", c2.FoldedName) 49 assert.Equal(fileIsUnique, err) 50 51 m, c3, err := scanner.table.findStat("oofbar", &fakeStat{size: 1024}, "") 52 assert.Equal(c1, m) 53 assert.Equal("oofbar", c3.FoldedName) 54 assert.Equal(matchSize, err) 55 } 56 57 type fakeStat struct { 58 os.FileInfo 59 60 isDir bool 61 size int64 62 } 63 64 func (s *fakeStat) IsDir() bool { 65 return s.isDir 66 } 67 68 func (s *fakeStat) Size() int64 { 69 return s.size 70 }