From 24967a5c25499f92b4e58b8d6f8a92a46a7acc7a Mon Sep 17 00:00:00 2001 From: Zitao <369815332@qq.com> Date: Tue, 22 Jun 2021 14:06:08 +0800 Subject: feat: stream write to zip directly (#863) --- file_test.go | 43 ++++++++++++++++++++++++++++++++----------- 1 file changed, 32 insertions(+), 11 deletions(-) (limited to 'file_test.go') diff --git a/file_test.go b/file_test.go index 656271f..dbbf75a 100644 --- a/file_test.go +++ b/file_test.go @@ -3,6 +3,7 @@ package excelize import ( "bufio" "bytes" + "os" "strings" "testing" @@ -33,16 +34,36 @@ func BenchmarkWrite(b *testing.B) { } func TestWriteTo(t *testing.T) { - f := File{} - buf := bytes.Buffer{} - f.XLSX = make(map[string][]byte) - f.XLSX["/d/"] = []byte("s") - _, err := f.WriteTo(bufio.NewWriter(&buf)) - assert.EqualError(t, err, "zip: write to directory") - delete(f.XLSX, "/d/") + // Test WriteToBuffer err + { + f := File{} + buf := bytes.Buffer{} + f.XLSX = make(map[string][]byte) + f.XLSX["/d/"] = []byte("s") + _, err := f.WriteTo(bufio.NewWriter(&buf)) + assert.EqualError(t, err, "zip: write to directory") + delete(f.XLSX, "/d/") + } // Test file path overflow - const maxUint16 = 1<<16 - 1 - f.XLSX[strings.Repeat("s", maxUint16+1)] = nil - _, err = f.WriteTo(bufio.NewWriter(&buf)) - assert.EqualError(t, err, "zip: FileHeader.Name too long") + { + f := File{} + buf := bytes.Buffer{} + f.XLSX = make(map[string][]byte) + const maxUint16 = 1<<16 - 1 + f.XLSX[strings.Repeat("s", maxUint16+1)] = nil + _, err := f.WriteTo(bufio.NewWriter(&buf)) + assert.EqualError(t, err, "zip: FileHeader.Name too long") + } + // Test StreamsWriter err + { + f := File{} + buf := bytes.Buffer{} + f.XLSX = make(map[string][]byte) + f.XLSX["s"] = nil + f.streams = make(map[string]*StreamWriter) + file, _ := os.Open("123") + f.streams["s"] = &StreamWriter{rawData: bufferedWriter{tmp: file}} + _, err := f.WriteTo(bufio.NewWriter(&buf)) + assert.Nil(t, err) + } } -- cgit v1.2.1