How to use Read method of got Package

Best Got code snippet using got.Read

int_test.go

Source:int_test.go Github

copy

Full Screen

...37	dec.SetBytes(b)38	if !dec.Next() {39		t.Fatalf("unexpected next value: got true, exp false")40	}41	if v1 != dec.Read() {42		t.Fatalf("read value mismatch: got %v, exp %v", dec.Read(), v1)43	}44}45func Test_IntegerEncoder_Two(t *testing.T) {46	enc := NewIntegerEncoder(2)47	var v1, v2 int64 = 1, 248	enc.Write(v1)49	enc.Write(v2)50	b, err := enc.Bytes()51	if err != nil {52		t.Fatalf("unexpected error: %v", err)53	}54	if got := b[0] >> 4; intCompressedSimple != got {55		t.Fatalf("encoding type mismatch: exp uncompressed, got %v", got)56	}57	var dec IntegerDecoder58	dec.SetBytes(b)59	if !dec.Next() {60		t.Fatalf("unexpected next value: got true, exp false")61	}62	if v1 != dec.Read() {63		t.Fatalf("read value mismatch: got %v, exp %v", dec.Read(), v1)64	}65	if !dec.Next() {66		t.Fatalf("unexpected next value: got true, exp false")67	}68	if v2 != dec.Read() {69		t.Fatalf("read value mismatch: got %v, exp %v", dec.Read(), v2)70	}71}72func Test_IntegerEncoder_Negative(t *testing.T) {73	enc := NewIntegerEncoder(3)74	var v1, v2, v3 int64 = -2, 0, 175	enc.Write(v1)76	enc.Write(v2)77	enc.Write(v3)78	b, err := enc.Bytes()79	if err != nil {80		t.Fatalf("unexpected error: %v", err)81	}82	if got := b[0] >> 4; intCompressedSimple != got {83		t.Fatalf("encoding type mismatch: exp uncompressed, got %v", got)84	}85	var dec IntegerDecoder86	dec.SetBytes(b)87	if !dec.Next() {88		t.Fatalf("unexpected next value: got true, exp false")89	}90	if v1 != dec.Read() {91		t.Fatalf("read value mismatch: got %v, exp %v", dec.Read(), v1)92	}93	if !dec.Next() {94		t.Fatalf("unexpected next value: got true, exp false")95	}96	if v2 != dec.Read() {97		t.Fatalf("read value mismatch: got %v, exp %v", dec.Read(), v2)98	}99	if !dec.Next() {100		t.Fatalf("unexpected next value: got true, exp false")101	}102	if v3 != dec.Read() {103		t.Fatalf("read value mismatch: got %v, exp %v", dec.Read(), v3)104	}105}106func Test_IntegerEncoder_Large_Range(t *testing.T) {107	enc := NewIntegerEncoder(2)108	var v1, v2 int64 = math.MinInt64, math.MaxInt64109	enc.Write(v1)110	enc.Write(v2)111	b, err := enc.Bytes()112	if err != nil {113		t.Fatalf("unexpected error: %v", err)114	}115	if got := b[0] >> 4; intUncompressed != got {116		t.Fatalf("encoding type mismatch: exp uncompressed, got %v", got)117	}118	var dec IntegerDecoder119	dec.SetBytes(b)120	if !dec.Next() {121		t.Fatalf("unexpected next value: got true, exp false")122	}123	if v1 != dec.Read() {124		t.Fatalf("read value mismatch: got %v, exp %v", dec.Read(), v1)125	}126	if !dec.Next() {127		t.Fatalf("unexpected next value: got true, exp false")128	}129	if v2 != dec.Read() {130		t.Fatalf("read value mismatch: got %v, exp %v", dec.Read(), v2)131	}132}133func Test_IntegerEncoder_Uncompressed(t *testing.T) {134	enc := NewIntegerEncoder(3)135	var v1, v2, v3 int64 = 0, 1, 1 << 60136	enc.Write(v1)137	enc.Write(v2)138	enc.Write(v3)139	b, err := enc.Bytes()140	if err != nil {141		t.Fatalf("expected error: %v", err)142	}143	// 1 byte header + 3 * 8 byte values144	if exp := 25; len(b) != exp {145		t.Fatalf("length mismatch: got %v, exp %v", len(b), exp)146	}147	if got := b[0] >> 4; intUncompressed != got {148		t.Fatalf("encoding type mismatch: exp uncompressed, got %v", got)149	}150	var dec IntegerDecoder151	dec.SetBytes(b)152	if !dec.Next() {153		t.Fatalf("unexpected next value: got true, exp false")154	}155	if v1 != dec.Read() {156		t.Fatalf("read value mismatch: got %v, exp %v", dec.Read(), v1)157	}158	if !dec.Next() {159		t.Fatalf("unexpected next value: got true, exp false")160	}161	if v2 != dec.Read() {162		t.Fatalf("read value mismatch: got %v, exp %v", dec.Read(), v2)163	}164	if !dec.Next() {165		t.Fatalf("unexpected next value: got true, exp false")166	}167	if v3 != dec.Read() {168		t.Fatalf("read value mismatch: got %v, exp %v", dec.Read(), v3)169	}170}171func Test_IntegerEncoder_NegativeUncompressed(t *testing.T) {172	values := []int64{173		-2352281900722994752, 1438442655375607923, -4110452567888190110,174		-1221292455668011702, -1941700286034261841, -2836753127140407751,175		1432686216250034552, 3663244026151507025, -3068113732684750258,176		-1949953187327444488, 3713374280993588804, 3226153669854871355,177		-2093273755080502606, 1006087192578600616, -2272122301622271655,178		2533238229511593671, -4450454445568858273, 2647789901083530435,179		2761419461769776844, -1324397441074946198, -680758138988210958,180		94468846694902125, -2394093124890745254, -2682139311758778198,181	}182	enc := NewIntegerEncoder(256)183	for _, v := range values {184		enc.Write(v)185	}186	b, err := enc.Bytes()187	if err != nil {188		t.Fatalf("expected error: %v", err)189	}190	if got := b[0] >> 4; intUncompressed != got {191		t.Fatalf("encoding type mismatch: exp uncompressed, got %v", got)192	}193	var dec IntegerDecoder194	dec.SetBytes(b)195	i := 0196	for dec.Next() {197		if i > len(values) {198			t.Fatalf("read too many values: got %v, exp %v", i, len(values))199		}200		if values[i] != dec.Read() {201			t.Fatalf("read value %d mismatch: got %v, exp %v", i, dec.Read(), values[i])202		}203		i += 1204	}205	if i != len(values) {206		t.Fatalf("failed to read enough values: got %v, exp %v", i, len(values))207	}208}209func Test_IntegerEncoder_AllNegative(t *testing.T) {210	enc := NewIntegerEncoder(3)211	values := []int64{212		-10, -5, -1,213	}214	for _, v := range values {215		enc.Write(v)216	}217	b, err := enc.Bytes()218	if err != nil {219		t.Fatalf("unexpected error: %v", err)220	}221	if got := b[0] >> 4; intCompressedSimple != got {222		t.Fatalf("encoding type mismatch: exp uncompressed, got %v", got)223	}224	var dec IntegerDecoder225	dec.SetBytes(b)226	i := 0227	for dec.Next() {228		if i > len(values) {229			t.Fatalf("read too many values: got %v, exp %v", i, len(values))230		}231		if values[i] != dec.Read() {232			t.Fatalf("read value %d mismatch: got %v, exp %v", i, dec.Read(), values[i])233		}234		i += 1235	}236	if i != len(values) {237		t.Fatalf("failed to read enough values: got %v, exp %v", i, len(values))238	}239}240func Test_IntegerEncoder_CounterPacked(t *testing.T) {241	enc := NewIntegerEncoder(16)242	values := []int64{243		1e15, 1e15 + 1, 1e15 + 2, 1e15 + 3, 1e15 + 4, 1e15 + 6,244	}245	for _, v := range values {246		enc.Write(v)247	}248	b, err := enc.Bytes()249	if err != nil {250		t.Fatalf("unexpected error: %v", err)251	}252	if b[0]>>4 != intCompressedSimple {253		t.Fatalf("unexpected encoding format: expected simple, got %v", b[0]>>4)254	}255	// Should use 1 header byte + 2, 8 byte words if delta-encoding is used based on256	// values sizes.  Without delta-encoding, we'd get 49 bytes.257	if exp := 17; len(b) != exp {258		t.Fatalf("encoded length mismatch: got %v, exp %v", len(b), exp)259	}260	var dec IntegerDecoder261	dec.SetBytes(b)262	i := 0263	for dec.Next() {264		if i > len(values) {265			t.Fatalf("read too many values: got %v, exp %v", i, len(values))266		}267		if values[i] != dec.Read() {268			t.Fatalf("read value %d mismatch: got %v, exp %v", i, dec.Read(), values[i])269		}270		i += 1271	}272	if i != len(values) {273		t.Fatalf("failed to read enough values: got %v, exp %v", i, len(values))274	}275}276func Test_IntegerEncoder_CounterRLE(t *testing.T) {277	enc := NewIntegerEncoder(16)278	values := []int64{279		1e15, 1e15 + 1, 1e15 + 2, 1e15 + 3, 1e15 + 4, 1e15 + 5,280	}281	for _, v := range values {282		enc.Write(v)283	}284	b, err := enc.Bytes()285	if err != nil {286		t.Fatalf("unexpected error: %v", err)287	}288	if b[0]>>4 != intCompressedRLE {289		t.Fatalf("unexpected encoding format: expected RLE, got %v", b[0]>>4)290	}291	// Should use 1 header byte, 8 byte first value, 1 var-byte for delta and 1 var-byte for292	// count of deltas in this particular RLE.293	if exp := 11; len(b) != exp {294		t.Fatalf("encoded length mismatch: got %v, exp %v", len(b), exp)295	}296	var dec IntegerDecoder297	dec.SetBytes(b)298	i := 0299	for dec.Next() {300		if i > len(values) {301			t.Fatalf("read too many values: got %v, exp %v", i, len(values))302		}303		if values[i] != dec.Read() {304			t.Fatalf("read value %d mismatch: got %v, exp %v", i, dec.Read(), values[i])305		}306		i += 1307	}308	if i != len(values) {309		t.Fatalf("failed to read enough values: got %v, exp %v", i, len(values))310	}311}312func Test_IntegerEncoder_Descending(t *testing.T) {313	enc := NewIntegerEncoder(16)314	values := []int64{315		7094, 4472, 1850,316	}317	for _, v := range values {318		enc.Write(v)319	}320	b, err := enc.Bytes()321	if err != nil {322		t.Fatalf("unexpected error: %v", err)323	}324	if b[0]>>4 != intCompressedRLE {325		t.Fatalf("unexpected encoding format: expected simple, got %v", b[0]>>4)326	}327	// Should use 1 header byte, 8 byte first value, 1 var-byte for delta and 1 var-byte for328	// count of deltas in this particular RLE.329	if exp := 12; len(b) != exp {330		t.Fatalf("encoded length mismatch: got %v, exp %v", len(b), exp)331	}332	var dec IntegerDecoder333	dec.SetBytes(b)334	i := 0335	for dec.Next() {336		if i > len(values) {337			t.Fatalf("read too many values: got %v, exp %v", i, len(values))338		}339		if values[i] != dec.Read() {340			t.Fatalf("read value %d mismatch: got %v, exp %v", i, dec.Read(), values[i])341		}342		i += 1343	}344	if i != len(values) {345		t.Fatalf("failed to read enough values: got %v, exp %v", i, len(values))346	}347}348func Test_IntegerEncoder_Flat(t *testing.T) {349	enc := NewIntegerEncoder(16)350	values := []int64{351		1, 1, 1, 1,352	}353	for _, v := range values {354		enc.Write(v)355	}356	b, err := enc.Bytes()357	if err != nil {358		t.Fatalf("unexpected error: %v", err)359	}360	if b[0]>>4 != intCompressedRLE {361		t.Fatalf("unexpected encoding format: expected simple, got %v", b[0]>>4)362	}363	// Should use 1 header byte, 8 byte first value, 1 var-byte for delta and 1 var-byte for364	// count of deltas in this particular RLE.365	if exp := 11; len(b) != exp {366		t.Fatalf("encoded length mismatch: got %v, exp %v", len(b), exp)367	}368	var dec IntegerDecoder369	dec.SetBytes(b)370	i := 0371	for dec.Next() {372		if i > len(values) {373			t.Fatalf("read too many values: got %v, exp %v", i, len(values))374		}375		if values[i] != dec.Read() {376			t.Fatalf("read value %d mismatch: got %v, exp %v", i, dec.Read(), values[i])377		}378		i += 1379	}380	if i != len(values) {381		t.Fatalf("failed to read enough values: got %v, exp %v", i, len(values))382	}383}384func Test_IntegerEncoder_MinMax(t *testing.T) {385	enc := NewIntegerEncoder(2)386	values := []int64{387		math.MinInt64, math.MaxInt64,388	}389	for _, v := range values {390		enc.Write(v)391	}392	b, err := enc.Bytes()393	if err != nil {394		t.Fatalf("unexpected error: %v", err)395	}396	if b[0]>>4 != intUncompressed {397		t.Fatalf("unexpected encoding format: expected simple, got %v", b[0]>>4)398	}399	if exp := 17; len(b) != exp {400		t.Fatalf("encoded length mismatch: got %v, exp %v", len(b), exp)401	}402	var dec IntegerDecoder403	dec.SetBytes(b)404	i := 0405	for dec.Next() {406		if i > len(values) {407			t.Fatalf("read too many values: got %v, exp %v", i, len(values))408		}409		if values[i] != dec.Read() {410			t.Fatalf("read value %d mismatch: got %v, exp %v", i, dec.Read(), values[i])411		}412		i += 1413	}414	if i != len(values) {415		t.Fatalf("failed to read enough values: got %v, exp %v", i, len(values))416	}417}418func Test_IntegerEncoder_Quick(t *testing.T) {419	quick.Check(func(values []int64) bool {420		if values == nil {421			values = []int64{} // is this really expected?422		}423		// Write values to encoder.424		enc := NewIntegerEncoder(1024)425		for _, v := range values {426			enc.Write(v)427		}428		// Retrieve encoded bytes from encoder.429		buf, err := enc.Bytes()430		if err != nil {431			t.Fatal(err)432		}433		// Read values out of decoder.434		got := make([]int64, 0, len(values))435		var dec IntegerDecoder436		dec.SetBytes(buf)437		for dec.Next() {438			if err := dec.Error(); err != nil {439				t.Fatal(err)440			}441			got = append(got, dec.Read().(int64))442		}443		// Verify that input and output values match.444		if !reflect.DeepEqual(values, got) {445			t.Fatalf("mismatch:\n\nexp=%#v\n\ngot=%#v\n\n", values, got)446		}447		return true448	}, nil)449}450func Test_IntegerDecoder_Corrupt(t *testing.T) {451	cases := []string{452		"",                     // Empty453		"\x00abc",              // Uncompressed: less than 8 bytes454		"\x10abc",              // Packed: less than 8 bytes455		"\x20abc",              // RLE: less than 8 bytes456		"\x2012345678\x90",     // RLE: valid starting value but invalid delta value457		"\x2012345678\x01\x90", // RLE: valid starting, valid delta value, invalid repeat value458	}459	for _, c := range cases {460		var dec IntegerDecoder461		dec.SetBytes([]byte(c))462		if dec.Next() {463			t.Fatalf("exp next == false, got true")464		}465	}466}467func BenchmarkIntegerEncoderRLE(b *testing.B) {468	enc := NewIntegerEncoder(1024)469	x := make([]int64, 1024)470	for i := 0; i < len(x); i++ {471		x[i] = int64(i)472		enc.Write(x[i])473	}474	b.ResetTimer()475	for i := 0; i < b.N; i++ {476		enc.Bytes()477	}478}479func BenchmarkIntegerEncoderPackedSimple(b *testing.B) {480	enc := NewIntegerEncoder(1024)481	x := make([]int64, 1024)482	for i := 0; i < len(x); i++ {483		// Small amount of randomness prevents RLE from being used484		x[i] = int64(i) + int64(rand.Intn(10))485		enc.Write(x[i])486	}487	b.ResetTimer()488	for i := 0; i < b.N; i++ {489		enc.Bytes()490		enc.Reset()491		for i := 0; i < len(x); i++ {492			enc.Write(x[i])493		}494	}495}496func BenchmarkIntegerBatch_DecodeAllUncompressed(b *testing.B) {497	benchmarks := []struct {498		n int499	}{500		{5},501		{55},502		{555},503		{1000},504	}505	values := []int64{506		-2352281900722994752, 1438442655375607923, -4110452567888190110,507		-1221292455668011702, -1941700286034261841, -2836753127140407751,508		1432686216250034552, 3663244026151507025, -3068113732684750258,509		-1949953187327444488, 3713374280993588804, 3226153669854871355,510		-2093273755080502606, 1006087192578600616, -2272122301622271655,511		2533238229511593671, -4450454445568858273, 2647789901083530435,512		2761419461769776844, -1324397441074946198, -680758138988210958,513		94468846694902125, -2394093124890745254, -2682139311758778198,514	}515	for _, bm := range benchmarks {516		rand.Seed(int64(bm.n * 1e3))517		enc := NewIntegerEncoder(bm.n)518		for i := 0; i < bm.n; i++ {519			enc.Write(values[rand.Int()%len(values)])520		}521		bytes, _ := enc.Bytes()522		b.Run(fmt.Sprintf("%d", bm.n), func(b *testing.B) {523			b.SetBytes(int64(len(bytes)))524			b.ReportAllocs()525			dst := make([]int64, bm.n)526			for i := 0; i < b.N; i++ {527				var dec IntegerDecoder528				dec.SetBytes(bytes)529				var n int530				for dec.Next() {531					dst[n] = dec.Read().(int64)532					n++533				}534			}535		})536	}537}538func BenchmarkIntegerBatch_DecodeAllPackedSimple(b *testing.B) {539	benchmarks := []struct {540		n int541	}{542		{5},543		{55},544		{555},545		{1000},546	}547	for _, bm := range benchmarks {548		rand.Seed(int64(bm.n * 1e3))549		enc := NewIntegerEncoder(bm.n)550		for i := 0; i < bm.n; i++ {551			// Small amount of randomness prevents RLE from being used552			enc.Write(int64(i) + int64(rand.Intn(10)))553		}554		bytes, _ := enc.Bytes()555		b.Run(fmt.Sprintf("%d", bm.n), func(b *testing.B) {556			b.SetBytes(int64(len(bytes)))557			b.ReportAllocs()558			dst := make([]int64, bm.n)559			for i := 0; i < b.N; i++ {560				var dec IntegerDecoder561				dec.SetBytes(bytes)562				var n int563				for dec.Next() {564					dst[n] = dec.Read().(int64)565					n++566				}567			}568		})569	}570}571func BenchmarkIntegerBatch_DecodeAllRLE(b *testing.B) {572	benchmarks := []struct {573		n     int574		delta int64575	}{576		{5, 1},577		{55, 1},578		{555, 1},579		{1000, 1},580		{1000, 0},581	}582	for _, bm := range benchmarks {583		enc := NewIntegerEncoder(bm.n)584		acc := int64(0)585		for i := 0; i < bm.n; i++ {586			enc.Write(acc)587			acc += bm.delta588		}589		bytes, _ := enc.Bytes()590		b.Run(fmt.Sprintf("%d_delta_%d", bm.n, bm.delta), func(b *testing.B) {591			b.SetBytes(int64(len(bytes)))592			b.ReportAllocs()593			dst := make([]int64, bm.n)594			for i := 0; i < b.N; i++ {595				var dec IntegerDecoder596				dec.SetBytes(bytes)597				var n int598				for dec.Next() {599					dst[n] = dec.Read().(int64)600					n++601				}602			}603		})604	}605}...

Full Screen

Full Screen

reader_test.go

Source:reader_test.go Github

copy

Full Screen

...9	"io/ioutil"10	"sync"11	"testing"12)13func TestReader(t *testing.T) {14	r := NewReader([]byte("0123456789"))15	tests := []struct {16		off     int6417		seek    int18		n       int19		want    string20		wantpos int6421		readerr error22		seekerr string23	}{24		{seek: io.SeekStart, off: 0, n: 20, want: "0123456789"},25		{seek: io.SeekStart, off: 1, n: 1, want: "1"},26		{seek: io.SeekCurrent, off: 1, wantpos: 3, n: 2, want: "34"},27		{seek: io.SeekStart, off: -1, seekerr: "bytes.Reader.Seek: negative position"},28		{seek: io.SeekStart, off: 1 << 33, wantpos: 1 << 33, readerr: io.EOF},29		{seek: io.SeekCurrent, off: 1, wantpos: 1<<33 + 1, readerr: io.EOF},30		{seek: io.SeekStart, n: 5, want: "01234"},31		{seek: io.SeekCurrent, n: 5, want: "56789"},32		{seek: io.SeekEnd, off: -1, n: 1, wantpos: 9, want: "9"},33	}34	for i, tt := range tests {35		pos, err := r.Seek(tt.off, tt.seek)36		if err == nil && tt.seekerr != "" {37			t.Errorf("%d. want seek error %q", i, tt.seekerr)38			continue39		}40		if err != nil && err.Error() != tt.seekerr {41			t.Errorf("%d. seek error = %q; want %q", i, err.Error(), tt.seekerr)42			continue43		}44		if tt.wantpos != 0 && tt.wantpos != pos {45			t.Errorf("%d. pos = %d, want %d", i, pos, tt.wantpos)46		}47		buf := make([]byte, tt.n)48		n, err := r.Read(buf)49		if err != tt.readerr {50			t.Errorf("%d. read = %v; want %v", i, err, tt.readerr)51			continue52		}53		got := string(buf[:n])54		if got != tt.want {55			t.Errorf("%d. got %q; want %q", i, got, tt.want)56		}57	}58}59func TestReadAfterBigSeek(t *testing.T) {60	r := NewReader([]byte("0123456789"))61	if _, err := r.Seek(1<<31+5, io.SeekStart); err != nil {62		t.Fatal(err)63	}64	if n, err := r.Read(make([]byte, 10)); n != 0 || err != io.EOF {65		t.Errorf("Read = %d, %v; want 0, EOF", n, err)66	}67}68func TestReaderAt(t *testing.T) {69	r := NewReader([]byte("0123456789"))70	tests := []struct {71		off     int6472		n       int73		want    string74		wanterr interface{}75	}{76		{0, 10, "0123456789", nil},77		{1, 10, "123456789", io.EOF},78		{1, 9, "123456789", nil},79		{11, 10, "", io.EOF},80		{0, 0, "", nil},81		{-1, 0, "", "bytes.Reader.ReadAt: negative offset"},82	}83	for i, tt := range tests {84		b := make([]byte, tt.n)85		rn, err := r.ReadAt(b, tt.off)86		got := string(b[:rn])87		if got != tt.want {88			t.Errorf("%d. got %q; want %q", i, got, tt.want)89		}90		if fmt.Sprintf("%v", err) != fmt.Sprintf("%v", tt.wanterr) {91			t.Errorf("%d. got error = %v; want %v", i, err, tt.wanterr)92		}93	}94}95func TestReaderAtConcurrent(t *testing.T) {96	// Test for the race detector, to verify ReadAt doesn't mutate97	// any state.98	r := NewReader([]byte("0123456789"))99	var wg sync.WaitGroup100	for i := 0; i < 5; i++ {101		wg.Add(1)102		go func(i int) {103			defer wg.Done()104			var buf [1]byte105			r.ReadAt(buf[:], int64(i))106		}(i)107	}108	wg.Wait()109}110func TestEmptyReaderConcurrent(t *testing.T) {111	// Test for the race detector, to verify a Read that doesn't yield any bytes112	// is okay to use from multiple goroutines. This was our historic behavior.113	// See golang.org/issue/7856114	r := NewReader([]byte{})115	var wg sync.WaitGroup116	for i := 0; i < 5; i++ {117		wg.Add(2)118		go func() {119			defer wg.Done()120			var buf [1]byte121			r.Read(buf[:])122		}()123		go func() {124			defer wg.Done()125			r.Read(nil)126		}()127	}128	wg.Wait()129}130func TestReaderWriteTo(t *testing.T) {131	for i := 0; i < 30; i += 3 {132		var l int133		if i > 0 {134			l = len(testString) / i135		}136		s := testString[:l]137		r := NewReader(testBytes[:l])138		var b Buffer139		n, err := r.WriteTo(&b)140		if expect := int64(len(s)); n != expect {141			t.Errorf("got %v; want %v", n, expect)142		}143		if err != nil {144			t.Errorf("for length %d: got error = %v; want nil", l, err)145		}146		if b.String() != s {147			t.Errorf("got string %q; want %q", b.String(), s)148		}149		if r.Len() != 0 {150			t.Errorf("reader contains %v bytes; want 0", r.Len())151		}152	}153}154func TestReaderLen(t *testing.T) {155	const data = "hello world"156	r := NewReader([]byte(data))157	if got, want := r.Len(), 11; got != want {158		t.Errorf("r.Len(): got %d, want %d", got, want)159	}160	if n, err := r.Read(make([]byte, 10)); err != nil || n != 10 {161		t.Errorf("Read failed: read %d %v", n, err)162	}163	if got, want := r.Len(), 1; got != want {164		t.Errorf("r.Len(): got %d, want %d", got, want)165	}166	if n, err := r.Read(make([]byte, 1)); err != nil || n != 1 {167		t.Errorf("Read failed: read %d %v; want 1, nil", n, err)168	}169	if got, want := r.Len(), 0; got != want {170		t.Errorf("r.Len(): got %d, want %d", got, want)171	}172}173var UnreadRuneErrorTests = []struct {174	name string175	f    func(*Reader)176}{177	{"Read", func(r *Reader) { r.Read([]byte{0}) }},178	{"ReadByte", func(r *Reader) { r.ReadByte() }},179	{"UnreadRune", func(r *Reader) { r.UnreadRune() }},180	{"Seek", func(r *Reader) { r.Seek(0, io.SeekCurrent) }},181	{"WriteTo", func(r *Reader) { r.WriteTo(&Buffer{}) }},182}183func TestUnreadRuneError(t *testing.T) {184	for _, tt := range UnreadRuneErrorTests {185		reader := NewReader([]byte("0123456789"))186		if _, _, err := reader.ReadRune(); err != nil {187			// should not happen188			t.Fatal(err)189		}190		tt.f(reader)191		err := reader.UnreadRune()192		if err == nil {193			t.Errorf("Unreading after %s: expected error", tt.name)194		}195	}196}197func TestReaderDoubleUnreadRune(t *testing.T) {198	buf := NewBuffer([]byte("groucho"))199	if _, _, err := buf.ReadRune(); err != nil {200		// should not happen201		t.Fatal(err)202	}203	if err := buf.UnreadByte(); err != nil {204		// should not happen205		t.Fatal(err)206	}207	if err := buf.UnreadByte(); err == nil {208		t.Fatal("UnreadByte: expected error, got nil")209	}210}211// verify that copying from an empty reader always has the same results,212// regardless of the presence of a WriteTo method.213func TestReaderCopyNothing(t *testing.T) {214	type nErr struct {215		n   int64216		err error217	}218	type justReader struct {219		io.Reader220	}221	type justWriter struct {222		io.Writer223	}224	discard := justWriter{ioutil.Discard} // hide ReadFrom225	var with, withOut nErr226	with.n, with.err = io.Copy(discard, NewReader(nil))227	withOut.n, withOut.err = io.Copy(discard, justReader{NewReader(nil)})228	if with != withOut {229		t.Errorf("behavior differs: with = %#v; without: %#v", with, withOut)230	}231}232// tests that Len is affected by reads, but Size is not.233func TestReaderLenSize(t *testing.T) {234	r := NewReader([]byte("abc"))235	io.CopyN(ioutil.Discard, r, 1)236	if r.Len() != 2 {237		t.Errorf("Len = %d; want 2", r.Len())238	}239	if r.Size() != 3 {240		t.Errorf("Size = %d; want 3", r.Size())241	}242}243func TestReaderReset(t *testing.T) {244	r := NewReader([]byte("世界"))245	if _, _, err := r.ReadRune(); err != nil {246		t.Errorf("ReadRune: unexpected error: %v", err)247	}248	const want = "abcdef"249	r.Reset([]byte(want))250	if err := r.UnreadRune(); err == nil {251		t.Errorf("UnreadRune: expected error, got nil")252	}253	buf, err := ioutil.ReadAll(r)254	if err != nil {255		t.Errorf("ReadAll: unexpected error: %v", err)256	}257	if got := string(buf); got != want {258		t.Errorf("ReadAll: got %q, want %q", got, want)259	}260}261func TestReaderZero(t *testing.T) {262	if l := (&Reader{}).Len(); l != 0 {263		t.Errorf("Len: got %d, want 0", l)264	}265	if n, err := (&Reader{}).Read(nil); n != 0 || err != io.EOF {266		t.Errorf("Read: got %d, %v; want 0, io.EOF", n, err)267	}268	if n, err := (&Reader{}).ReadAt(nil, 11); n != 0 || err != io.EOF {269		t.Errorf("ReadAt: got %d, %v; want 0, io.EOF", n, err)270	}271	if b, err := (&Reader{}).ReadByte(); b != 0 || err != io.EOF {272		t.Errorf("ReadByte: got %d, %v; want 0, io.EOF", b, err)273	}274	if ch, size, err := (&Reader{}).ReadRune(); ch != 0 || size != 0 || err != io.EOF {275		t.Errorf("ReadRune: got %d, %d, %v; want 0, 0, io.EOF", ch, size, err)276	}277	if offset, err := (&Reader{}).Seek(11, io.SeekStart); offset != 11 || err != nil {278		t.Errorf("Seek: got %d, %v; want 11, nil", offset, err)279	}280	if s := (&Reader{}).Size(); s != 0 {281		t.Errorf("Size: got %d, want 0", s)282	}283	if (&Reader{}).UnreadByte() == nil {284		t.Errorf("UnreadByte: got nil, want error")285	}286	if (&Reader{}).UnreadRune() == nil {287		t.Errorf("UnreadRune: got nil, want error")288	}289	if n, err := (&Reader{}).WriteTo(ioutil.Discard); n != 0 || err != nil {290		t.Errorf("WriteTo: got %d, %v; want 0, nil", n, err)291	}292}...

Full Screen

Full Screen

errors_test.go

Source:errors_test.go Github

copy

Full Screen

1package errors2import (3	"errors"4	"fmt"5	"io"6	"reflect"7	"testing"8)9func TestNew(t *testing.T) {10	tests := []struct {11		err  string12		want error13	}{14		{"", fmt.Errorf("")},15		{"foo", fmt.Errorf("foo")},16		{"foo", New("foo")},17		{"string with format specifiers: %v", errors.New("string with format specifiers: %v")},18	}19	for _, tt := range tests {20		got := New(tt.err)21		if got.Error() != tt.want.Error() {22			t.Errorf("New.Error(): got: %q, want %q", got, tt.want)23		}24	}25}26func TestWrapNil(t *testing.T) {27	got := Wrap(nil, "no error")28	if got != nil {29		t.Errorf("Wrap(nil, \"no error\"): got %#v, expected nil", got)30	}31}32func TestWrap(t *testing.T) {33	tests := []struct {34		err     error35		message string36		want    string37	}{38		{io.EOF, "read error", "read error: EOF"},39		{Wrap(io.EOF, "read error"), "client error", "client error: read error: EOF"},40	}41	for _, tt := range tests {42		got := Wrap(tt.err, tt.message).Error()43		if got != tt.want {44			t.Errorf("Wrap(%v, %q): got: %v, want %v", tt.err, tt.message, got, tt.want)45		}46	}47}48type nilError struct{}49func (nilError) Error() string { return "nil error" }50func TestCause(t *testing.T) {51	x := New("error")52	tests := []struct {53		err  error54		want error55	}{{56		// nil error is nil57		err:  nil,58		want: nil,59	}, {60		// explicit nil error is nil61		err:  (error)(nil),62		want: nil,63	}, {64		// typed nil is nil65		err:  (*nilError)(nil),66		want: (*nilError)(nil),67	}, {68		// uncaused error is unaffected69		err:  io.EOF,70		want: io.EOF,71	}, {72		// caused error returns cause73		err:  Wrap(io.EOF, "ignored"),74		want: io.EOF,75	}, {76		err:  x, // return from errors.New77		want: x,78	}, {79		WithMessage(nil, "whoops"),80		nil,81	}, {82		WithMessage(io.EOF, "whoops"),83		io.EOF,84	}, {85		WithStack(nil),86		nil,87	}, {88		WithStack(io.EOF),89		io.EOF,90	}}91	for i, tt := range tests {92		got := Cause(tt.err)93		if !reflect.DeepEqual(got, tt.want) {94			t.Errorf("test %d: got %#v, want %#v", i+1, got, tt.want)95		}96	}97}98func TestWrapfNil(t *testing.T) {99	got := Wrapf(nil, "no error")100	if got != nil {101		t.Errorf("Wrapf(nil, \"no error\"): got %#v, expected nil", got)102	}103}104func TestWrapf(t *testing.T) {105	tests := []struct {106		err     error107		message string108		want    string109	}{110		{io.EOF, "read error", "read error: EOF"},111		{Wrapf(io.EOF, "read error without format specifiers"), "client error", "client error: read error without format specifiers: EOF"},112		{Wrapf(io.EOF, "read error with %d format specifier", 1), "client error", "client error: read error with 1 format specifier: EOF"},113	}114	for _, tt := range tests {115		got := Wrapf(tt.err, tt.message).Error()116		if got != tt.want {117			t.Errorf("Wrapf(%v, %q): got: %v, want %v", tt.err, tt.message, got, tt.want)118		}119	}120}121func TestErrorf(t *testing.T) {122	tests := []struct {123		err  error124		want string125	}{126		{Errorf("read error without format specifiers"), "read error without format specifiers"},127		{Errorf("read error with %d format specifier", 1), "read error with 1 format specifier"},128	}129	for _, tt := range tests {130		got := tt.err.Error()131		if got != tt.want {132			t.Errorf("Errorf(%v): got: %q, want %q", tt.err, got, tt.want)133		}134	}135}136func TestWithStackNil(t *testing.T) {137	got := WithStack(nil)138	if got != nil {139		t.Errorf("WithStack(nil): got %#v, expected nil", got)140	}141}142func TestWithStack(t *testing.T) {143	tests := []struct {144		err  error145		want string146	}{147		{io.EOF, "EOF"},148		{WithStack(io.EOF), "EOF"},149	}150	for _, tt := range tests {151		got := WithStack(tt.err).Error()152		if got != tt.want {153			t.Errorf("WithStack(%v): got: %v, want %v", tt.err, got, tt.want)154		}155	}156}157func TestWithMessageNil(t *testing.T) {158	got := WithMessage(nil, "no error")159	if got != nil {160		t.Errorf("WithMessage(nil, \"no error\"): got %#v, expected nil", got)161	}162}163func TestWithMessage(t *testing.T) {164	tests := []struct {165		err     error166		message string167		want    string168	}{169		{io.EOF, "read error", "read error: EOF"},170		{WithMessage(io.EOF, "read error"), "client error", "client error: read error: EOF"},171	}172	for _, tt := range tests {173		got := WithMessage(tt.err, tt.message).Error()174		if got != tt.want {175			t.Errorf("WithMessage(%v, %q): got: %q, want %q", tt.err, tt.message, got, tt.want)176		}177	}178}179func TestWithMessagefNil(t *testing.T) {180	got := WithMessagef(nil, "no error")181	if got != nil {182		t.Errorf("WithMessage(nil, \"no error\"): got %#v, expected nil", got)183	}184}185func TestWithMessagef(t *testing.T) {186	tests := []struct {187		err     error188		message string189		want    string190	}{191		{io.EOF, "read error", "read error: EOF"},192		{WithMessagef(io.EOF, "read error without format specifier"), "client error", "client error: read error without format specifier: EOF"},193		{WithMessagef(io.EOF, "read error with %d format specifier", 1), "client error", "client error: read error with 1 format specifier: EOF"},194	}195	for _, tt := range tests {196		got := WithMessagef(tt.err, tt.message).Error()197		if got != tt.want {198			t.Errorf("WithMessage(%v, %q): got: %q, want %q", tt.err, tt.message, got, tt.want)199		}200	}201}202// errors.New, etc values are not expected to be compared by value203// but the change in errors#27 made them incomparable. Assert that204// various kinds of errors have a functional equality operator, even205// if the result of that equality is always false.206func TestErrorEquality(t *testing.T) {207	vals := []error{208		nil,209		io.EOF,210		errors.New("EOF"),211		New("EOF"),212		Errorf("EOF"),213		Wrap(io.EOF, "EOF"),214		Wrapf(io.EOF, "EOF%d", 2),215		WithMessage(nil, "whoops"),216		WithMessage(io.EOF, "whoops"),217		WithStack(io.EOF),218		WithStack(nil),219	}220	for i := range vals {221		for j := range vals {222			_ = vals[i] == vals[j] // mustn't panic223		}224	}225}...

Full Screen

Full Screen

Read

Using AI Code Generation

copy

Full Screen

1import (2func main() {3	fmt.Println("Hello, playground")4	f, err := os.Open("test.txt")5	if err != nil {6		fmt.Println(err)7	}8	defer f.Close()9	buf := make([]byte, 1024)10	n, err := f.Read(buf)11	if err != nil {12		fmt.Println(err)13	}14	fmt.Println(string(buf[:n]))15}16import (17func main() {18	fmt.Println("Hello, playground")19	f, err := os.Open("test.txt")20	if err != nil {21		fmt.Println(err)22	}23	defer f.Close()24	buf := make([]byte, 1024)25	n, err := f.ReadAt(buf, 0)26	if err != nil {27		fmt.Println(err)28	}29	fmt.Println(string(buf[:n]))30}31import (32func main() {33	fmt.Println("Hello, playground")34	f, err := os.OpenFile("test.txt", os.O_RDWR, 0)35	if err != nil {36		fmt.Println(err)37	}38	defer f.Close()39	n, err := f.Write([]byte("Hello"))40	if err != nil {41		fmt.Println(err)42	}43	fmt.Println(n)44}45import (46func main() {47	fmt.Println("Hello, playground")48	f, err := os.OpenFile("test.txt", os.O_RDWR, 0)49	if err != nil {50		fmt.Println(err)51	}52	defer f.Close()53	n, err := f.WriteAt([]byte("Hello"), 0)54	if err != nil {55		fmt.Println(err)56	}57	fmt.Println(n)58}59import (60func main() {61	fmt.Println("Hello, playground")62	f, err := os.OpenFile("test.txt", os.O_RDWR, 0)63	if err != nil {64		fmt.Println(err)

Full Screen

Full Screen

Read

Using AI Code Generation

copy

Full Screen

1func main() {2    fmt.Println("Hello World")3    got.Read()4}5func main() {6    fmt.Println("Hello World")7    got.Write()8}9func main() {10    fmt.Println("Hello World")11    got.Read()12}13func main() {14    fmt.Println("Hello World")15    got.Write()16}17func main() {18    fmt.Println("Hello World")19    got.Read()20}21func main() {22    fmt.Println("Hello World")23    got.Write()24}25func main() {26    fmt.Println("Hello World")27    got.Read()28}29func main() {30    fmt.Println("Hello World")31    got.Write()32}33func main() {34    fmt.Println("Hello World")35    got.Read()36}37func main() {38    fmt.Println("Hello World")39    got.Write()40}41func main() {42    fmt.Println("Hello World")43    got.Read()44}45func main() {46    fmt.Println("Hello World")47    got.Write()48}49func main() {50    fmt.Println("Hello World")51    got.Read()52}53func main() {

Full Screen

Full Screen

Read

Using AI Code Generation

copy

Full Screen

1import (2func main() {3	fmt.Println(got.Read())4}5import (6func Read() string {7	file, err := ioutil.ReadFile("2.go")8	if err != nil {9		fmt.Println("error")10	}11	return string(file)12}

Full Screen

Full Screen

Read

Using AI Code Generation

copy

Full Screen

1func main() {2    got := got.NewGot()3    got.Read()4}5func main() {6    got := got.NewGot()7    got.Write()8}9func main() {10    got := got.NewGot()11    got.Read()12}13func main() {14    got := got.NewGot()15    got.Write()16}17func main() {18    got := got.NewGot()19    got.Read()20}21func main() {22    got := got.NewGot()23    got.Write()24}25func main() {26    got := got.NewGot()27    got.Read()28}29func main() {30    got := got.NewGot()31    got.Write()32}33func main() {34    got := got.NewGot()35    got.Read()36}37func main() {38    got := got.NewGot()39    got.Write()40}41func main() {

Full Screen

Full Screen

Read

Using AI Code Generation

copy

Full Screen

1import "fmt"2func main(){3    fmt.Println("Enter an integer:")4    fmt.Scanln(&a)5    r := got.Read(a)6    fmt.Println("The integer is:", r)7}8func Read(a int) int{9}10import "fmt"11func main() {12    fmt.Println("Hello, World!")13}

Full Screen

Full Screen

Automation Testing Tutorials

Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.

LambdaTest Learning Hubs:

YouTube

You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.

Try LambdaTest Now !!

Get 100 minutes of automation test minutes FREE!!

Next-Gen App & Browser Testing Cloud

Was this article helpful?

Helpful

NotHelpful