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  }