github.com/lingyao2333/mo-zero@v1.4.1/core/filex/lookup_test.go (about) 1 package filex 2 3 import ( 4 "os" 5 "testing" 6 7 "github.com/lingyao2333/mo-zero/core/fs" 8 "github.com/stretchr/testify/assert" 9 ) 10 11 func TestSplitLineChunks(t *testing.T) { 12 const text = `first line 13 second line 14 third line 15 fourth line 16 fifth line 17 sixth line 18 seventh line 19 ` 20 fp, err := fs.TempFileWithText(text) 21 assert.Nil(t, err) 22 defer func() { 23 fp.Close() 24 os.Remove(fp.Name()) 25 }() 26 27 offsets, err := SplitLineChunks(fp.Name(), 3) 28 assert.Nil(t, err) 29 body := make([]byte, 512) 30 for _, offset := range offsets { 31 reader := NewRangeReader(fp, offset.Start, offset.Stop) 32 n, err := reader.Read(body) 33 assert.Nil(t, err) 34 assert.Equal(t, uint8('\n'), body[n-1]) 35 } 36 } 37 38 func TestSplitLineChunksNoFile(t *testing.T) { 39 _, err := SplitLineChunks("nosuchfile", 2) 40 assert.NotNil(t, err) 41 } 42 43 func TestSplitLineChunksFull(t *testing.T) { 44 const text = `first line 45 second line 46 third line 47 fourth line 48 fifth line 49 sixth line 50 ` 51 fp, err := fs.TempFileWithText(text) 52 assert.Nil(t, err) 53 defer func() { 54 fp.Close() 55 os.Remove(fp.Name()) 56 }() 57 58 offsets, err := SplitLineChunks(fp.Name(), 1) 59 assert.Nil(t, err) 60 body := make([]byte, 512) 61 for _, offset := range offsets { 62 reader := NewRangeReader(fp, offset.Start, offset.Stop) 63 n, err := reader.Read(body) 64 assert.Nil(t, err) 65 assert.Equal(t, []byte(text), body[:n]) 66 } 67 }