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  }