github.com/qiniu/go-sdk/v7@v7.27.0/internal/io/io_test.go (about)

     1  //go:build unit
     2  // +build unit
     3  
     4  package io_test
     5  
     6  import (
     7  	"bytes"
     8  	"io"
     9  	"os"
    10  	"testing"
    11  
    12  	internal_io "github.com/qiniu/go-sdk/v7/internal/io"
    13  )
    14  
    15  func TestReadAll(t *testing.T) {
    16  	runTestCase := func(t *testing.T, r io.Reader, expected []byte) {
    17  		if b, err := internal_io.ReadAll(r); err != nil {
    18  			t.Fatal(err)
    19  		} else if !bytes.Equal(expected, b) {
    20  			t.Fatalf("unexpected read content: b=%#v, expected=%#v", b, expected)
    21  		} else if n, err := r.Read(make([]byte, 1)); err != nil && err != io.EOF {
    22  			t.Fatal(err)
    23  		} else if n != 0 {
    24  			t.Fatal("unexpected read size")
    25  		}
    26  	}
    27  	buf := new(bytes.Buffer)
    28  	for i := 0; i < 16; i++ {
    29  		if _, err := buf.Write([]byte{0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xA, 0xB, 0xC, 0xD, 0xE, 0xF}); err != nil {
    30  			t.Fatal(err)
    31  		}
    32  	}
    33  	expected := buf.Bytes()
    34  	runTestCase(t, buf, expected)
    35  
    36  	file, err := os.CreateTemp("", "")
    37  	if err != nil {
    38  		t.Fatal(err)
    39  	}
    40  	defer os.Remove(file.Name())
    41  	defer file.Close()
    42  
    43  	if _, err = io.Copy(file, bytes.NewReader(expected)); err != nil {
    44  		t.Fatal(err)
    45  	} else if _, err = file.Seek(0, io.SeekStart); err != nil {
    46  		t.Fatal(err)
    47  	}
    48  	runTestCase(t, file, expected)
    49  
    50  	bytesNopCloser := internal_io.NewBytesNopCloser(expected)
    51  	runTestCase(t, bytesNopCloser, expected)
    52  }
    53  
    54  func TestSinkAll(t *testing.T) {
    55  	runTestCase := func(t *testing.T, r io.Reader) {
    56  		if err := internal_io.SinkAll(r); err != nil {
    57  			t.Fatal(err)
    58  		} else if n, err := r.Read(make([]byte, 1)); err != nil && err != io.EOF {
    59  			t.Fatal(err)
    60  		} else if n != 0 {
    61  			t.Fatal("unexpected read size")
    62  		}
    63  	}
    64  
    65  	buf := new(bytes.Buffer)
    66  	for i := 0; i < 16; i++ {
    67  		if _, err := buf.Write([]byte{0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xA, 0xB, 0xC, 0xD, 0xE, 0xF}); err != nil {
    68  			t.Fatal(err)
    69  		}
    70  	}
    71  	expected := buf.Bytes()
    72  	runTestCase(t, buf)
    73  
    74  	file, err := os.CreateTemp("", "")
    75  	if err != nil {
    76  		t.Fatal(err)
    77  	}
    78  	defer os.Remove(file.Name())
    79  	defer file.Close()
    80  
    81  	if _, err = io.Copy(file, bytes.NewReader(expected)); err != nil {
    82  		t.Fatal(err)
    83  	} else if _, err = file.Seek(0, io.SeekStart); err != nil {
    84  		t.Fatal(err)
    85  	}
    86  	runTestCase(t, file)
    87  
    88  	bytesNopCloser := internal_io.NewBytesNopCloser(expected)
    89  	runTestCase(t, bytesNopCloser)
    90  }