github.com/fluhus/gostuff@v0.4.1-0.20240331134726-be71864f2b5d/repeat/repeat_test.go (about) 1 package repeat 2 3 import ( 4 "io" 5 "testing" 6 ) 7 8 func TestReader(t *testing.T) { 9 r := NewReader([]byte("amit"), 2) 10 buf := make([]byte, 3) 11 12 n, err := r.Read(buf) 13 if err != nil { 14 t.Fatalf("Read() failed: %v", err) 15 } 16 if n != 3 { 17 t.Fatalf("Read() n=%v, want 3", n) 18 } 19 if string(buf) != "ami" { 20 t.Fatalf("Read()=%q, want %q", buf, "ami") 21 } 22 23 n, err = r.Read(buf) 24 if err != nil { 25 t.Fatalf("Read() failed: %v", err) 26 } 27 if n != 3 { 28 t.Fatalf("Read() n=%v, want 3", n) 29 } 30 if string(buf) != "tam" { 31 t.Fatalf("Read()=%q, want %q", buf, "tam") 32 } 33 34 n, err = r.Read(buf) 35 if err != nil { 36 t.Fatalf("Read() failed: %v", err) 37 } 38 if n != 2 { 39 t.Fatalf("Read() n=%v, want 2", n) 40 } 41 if string(buf[:n]) != "it" { 42 t.Fatalf("Read()=%q, want %q", buf[:n], "it") 43 } 44 45 _, err = r.Read(buf) 46 if err != io.EOF { 47 t.Fatalf("Read() err=%v, want EOF", err) 48 } 49 } 50 51 func TestReader_infinite(t *testing.T) { 52 r := NewReader([]byte("amit"), -1) 53 buf := make([]byte, 3) 54 55 n, err := r.Read(buf) 56 if err != nil { 57 t.Fatalf("Read() failed: %v", err) 58 } 59 if n != 3 { 60 t.Fatalf("Read() n=%v, want 3", n) 61 } 62 if string(buf) != "ami" { 63 t.Fatalf("Read()=%q, want %q", buf, "ami") 64 } 65 66 n, err = r.Read(buf) 67 if err != nil { 68 t.Fatalf("Read() failed: %v", err) 69 } 70 if n != 3 { 71 t.Fatalf("Read() n=%v, want 3", n) 72 } 73 if string(buf) != "tam" { 74 t.Fatalf("Read()=%q, want %q", buf, "tam") 75 } 76 77 n, err = r.Read(buf) 78 if err != nil { 79 t.Fatalf("Read() failed: %v", err) 80 } 81 if n != 3 { 82 t.Fatalf("Read() n=%v, want 3", n) 83 } 84 if string(buf[:n]) != "ita" { 85 t.Fatalf("Read()=%q, want %q", buf[:n], "ita") 86 } 87 }