Team Ai
Datasetpublic

codekingpro/portable-devtools

sourceHugging Faceupdated 5mo agoView on Hugging Face
1likes14kdownloads
reader_test.go261 linesDownload Raw Back to iotest
1// Copyright 2019 The Go Authors. All rights reserved.2// Use of this source code is governed by a BSD-style3// license that can be found in the LICENSE file.4 5package iotest6 7import (8	"bytes"9	"errors"10	"io"11	"strings"12	"testing"13)14 15func TestOneByteReader_nonEmptyReader(t *testing.T) {16	msg := "Hello, World!"17	buf := new(bytes.Buffer)18	buf.WriteString(msg)19 20	obr := OneByteReader(buf)21	var b []byte22	n, err := obr.Read(b)23	if err != nil || n != 0 {24		t.Errorf("Empty buffer read returned n=%d err=%v", n, err)25	}26 27	b = make([]byte, 3)28	// Read from obr until EOF.29	got := new(strings.Builder)30	for i := 0; ; i++ {31		n, err = obr.Read(b)32		if err != nil {33			break34		}35		if g, w := n, 1; g != w {36			t.Errorf("Iteration #%d read %d bytes, want %d", i, g, w)37		}38		got.Write(b[:n])39	}40	if g, w := err, io.EOF; g != w {41		t.Errorf("Unexpected error after reading all bytes\n\tGot:  %v\n\tWant: %v", g, w)42	}43	if g, w := got.String(), "Hello, World!"; g != w {44		t.Errorf("Read mismatch\n\tGot:  %q\n\tWant: %q", g, w)45	}46}47 48func TestOneByteReader_emptyReader(t *testing.T) {49	r := new(bytes.Buffer)50 51	obr := OneByteReader(r)52	var b []byte53	if n, err := obr.Read(b); err != nil || n != 0 {54		t.Errorf("Empty buffer read returned n=%d err=%v", n, err)55	}56 57	b = make([]byte, 5)58	n, err := obr.Read(b)59	if g, w := err, io.EOF; g != w {60		t.Errorf("Error mismatch\n\tGot:  %v\n\tWant: %v", g, w)61	}62	if g, w := n, 0; g != w {63		t.Errorf("Unexpectedly read %d bytes, wanted %d", g, w)64	}65}66 67func TestHalfReader_nonEmptyReader(t *testing.T) {68	msg := "Hello, World!"69	buf := new(bytes.Buffer)70	buf.WriteString(msg)71	// empty read buffer72	hr := HalfReader(buf)73	var b []byte74	n, err := hr.Read(b)75	if err != nil || n != 0 {76		t.Errorf("Empty buffer read returned n=%d err=%v", n, err)77	}78	// non empty read buffer79	b = make([]byte, 2)80	got := new(strings.Builder)81	for i := 0; ; i++ {82		n, err = hr.Read(b)83		if err != nil {84			break85		}86		if g, w := n, 1; g != w {87			t.Errorf("Iteration #%d read %d bytes, want %d", i, g, w)88		}89		got.Write(b[:n])90	}91	if g, w := err, io.EOF; g != w {92		t.Errorf("Unexpected error after reading all bytes\n\tGot:  %v\n\tWant: %v", g, w)93	}94	if g, w := got.String(), "Hello, World!"; g != w {95		t.Errorf("Read mismatch\n\tGot:  %q\n\tWant: %q", g, w)96	}97}98 99func TestHalfReader_emptyReader(t *testing.T) {100	r := new(bytes.Buffer)101 102	hr := HalfReader(r)103	var b []byte104	if n, err := hr.Read(b); err != nil || n != 0 {105		t.Errorf("Empty buffer read returned n=%d err=%v", n, err)106	}107 108	b = make([]byte, 5)109	n, err := hr.Read(b)110	if g, w := err, io.EOF; g != w {111		t.Errorf("Error mismatch\n\tGot:  %v\n\tWant: %v", g, w)112	}113	if g, w := n, 0; g != w {114		t.Errorf("Unexpectedly read %d bytes, wanted %d", g, w)115	}116}117 118func TestTimeOutReader_nonEmptyReader(t *testing.T) {119	msg := "Hello, World!"120	buf := new(bytes.Buffer)121	buf.WriteString(msg)122	// empty read buffer123	tor := TimeoutReader(buf)124	var b []byte125	n, err := tor.Read(b)126	if err != nil || n != 0 {127		t.Errorf("Empty buffer read returned n=%d err=%v", n, err)128	}129	// Second call should timeout130	n, err = tor.Read(b)131	if g, w := err, ErrTimeout; g != w {132		t.Errorf("Error mismatch\n\tGot:  %v\n\tWant: %v", g, w)133	}134	if g, w := n, 0; g != w {135		t.Errorf("Unexpectedly read %d bytes, wanted %d", g, w)136	}137	// non empty read buffer138	tor2 := TimeoutReader(buf)139	b = make([]byte, 3)140	if n, err := tor2.Read(b); err != nil || n == 0 {141		t.Errorf("Empty buffer read returned n=%d err=%v", n, err)142	}143	// Second call should timeout144	n, err = tor2.Read(b)145	if g, w := err, ErrTimeout; g != w {146		t.Errorf("Error mismatch\n\tGot:  %v\n\tWant: %v", g, w)147	}148	if g, w := n, 0; g != w {149		t.Errorf("Unexpectedly read %d bytes, wanted %d", g, w)150	}151}152 153func TestTimeOutReader_emptyReader(t *testing.T) {154	r := new(bytes.Buffer)155	// empty read buffer156	tor := TimeoutReader(r)157	var b []byte158	if n, err := tor.Read(b); err != nil || n != 0 {159		t.Errorf("Empty buffer read returned n=%d err=%v", n, err)160	}161	// Second call should timeout162	n, err := tor.Read(b)163	if g, w := err, ErrTimeout; g != w {164		t.Errorf("Error mismatch\n\tGot:  %v\n\tWant: %v", g, w)165	}166	if g, w := n, 0; g != w {167		t.Errorf("Unexpectedly read %d bytes, wanted %d", g, w)168	}169	// non empty read buffer170	tor2 := TimeoutReader(r)171	b = make([]byte, 5)172	if n, err := tor2.Read(b); err != io.EOF || n != 0 {173		t.Errorf("Empty buffer read returned n=%d err=%v", n, err)174	}175	// Second call should timeout176	n, err = tor2.Read(b)177	if g, w := err, ErrTimeout; g != w {178		t.Errorf("Error mismatch\n\tGot:  %v\n\tWant: %v", g, w)179	}180	if g, w := n, 0; g != w {181		t.Errorf("Unexpectedly read %d bytes, wanted %d", g, w)182	}183}184 185func TestDataErrReader_nonEmptyReader(t *testing.T) {186	msg := "Hello, World!"187	buf := new(bytes.Buffer)188	buf.WriteString(msg)189 190	der := DataErrReader(buf)191 192	b := make([]byte, 3)193	got := new(strings.Builder)194	var n int195	var err error196	for {197		n, err = der.Read(b)198		got.Write(b[:n])199		if err != nil {200			break201		}202	}203	if err != io.EOF || n == 0 {204		t.Errorf("Last Read returned n=%d err=%v", n, err)205	}206	if g, w := got.String(), "Hello, World!"; g != w {207		t.Errorf("Read mismatch\n\tGot:  %q\n\tWant: %q", g, w)208	}209}210 211func TestDataErrReader_emptyReader(t *testing.T) {212	r := new(bytes.Buffer)213 214	der := DataErrReader(r)215	var b []byte216	if n, err := der.Read(b); err != io.EOF || n != 0 {217		t.Errorf("Empty buffer read returned n=%d err=%v", n, err)218	}219 220	b = make([]byte, 5)221	n, err := der.Read(b)222	if g, w := err, io.EOF; g != w {223		t.Errorf("Error mismatch\n\tGot:  %v\n\tWant: %v", g, w)224	}225	if g, w := n, 0; g != w {226		t.Errorf("Unexpectedly read %d bytes, wanted %d", g, w)227	}228}229 230func TestErrReader(t *testing.T) {231	cases := []struct {232		name string233		err  error234	}{235		{"nil error", nil},236		{"non-nil error", errors.New("io failure")},237		{"io.EOF", io.EOF},238	}239 240	for _, tt := range cases {241		t.Run(tt.name, func(t *testing.T) {242			n, err := ErrReader(tt.err).Read(nil)243			if err != tt.err {244				t.Fatalf("Error mismatch\nGot:  %v\nWant: %v", err, tt.err)245			}246			if n != 0 {247				t.Fatalf("Byte count mismatch: got %d want 0", n)248			}249		})250	}251}252 253func TestStringsReader(t *testing.T) {254	const msg = "Now is the time for all good gophers."255 256	r := strings.NewReader(msg)257	if err := TestReader(r, []byte(msg)); err != nil {258		t.Fatal(err)259	}260}261 
codekingpro/portable-devtools · Team Ai