| // Copyright 2019 The Go Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style |
| // license that can be found in the LICENSE file. |
| |
| package iotest |
| |
| import ( |
| "bytes" |
| "testing" |
| ) |
| |
| var truncateWriterTests = []struct { |
| in string |
| want string |
| trunc int64 |
| n int |
| }{ |
| {"hello", "", -1, 5}, |
| {"world", "", 0, 5}, |
| {"abcde", "abc", 3, 5}, |
| {"edcba", "edcba", 7, 5}, |
| } |
| |
| func TestTruncateWriter(t *testing.T) { |
| for _, tt := range truncateWriterTests { |
| buf := new(bytes.Buffer) |
| tw := TruncateWriter(buf, tt.trunc) |
| n, err := tw.Write([]byte(tt.in)) |
| if err != nil { |
| t.Errorf("Unexpected error %v for\n\t%+v", err, tt) |
| } |
| if g, w := buf.String(), tt.want; g != w { |
| t.Errorf("got %q, expected %q", g, w) |
| } |
| if g, w := n, tt.n; g != w { |
| t.Errorf("read %d bytes, but expected to have read %d bytes for\n\t%+v", g, w, tt) |
| } |
| } |
| } |