github.com/AndrienkoAleksandr/go@v0.0.19/src/testing/iotest/writer_test.go (about)

     1  // Copyright 2019 The Go Authors. All rights reserved.
     2  // Use of this source code is governed by a BSD-style
     3  // license that can be found in the LICENSE file.
     4  
     5  package iotest
     6  
     7  import (
     8  	"strings"
     9  	"testing"
    10  )
    11  
    12  var truncateWriterTests = []struct {
    13  	in    string
    14  	want  string
    15  	trunc int64
    16  	n     int
    17  }{
    18  	{"hello", "", -1, 5},
    19  	{"world", "", 0, 5},
    20  	{"abcde", "abc", 3, 5},
    21  	{"edcba", "edcba", 7, 5},
    22  }
    23  
    24  func TestTruncateWriter(t *testing.T) {
    25  	for _, tt := range truncateWriterTests {
    26  		buf := new(strings.Builder)
    27  		tw := TruncateWriter(buf, tt.trunc)
    28  		n, err := tw.Write([]byte(tt.in))
    29  		if err != nil {
    30  			t.Errorf("Unexpected error %v for\n\t%+v", err, tt)
    31  		}
    32  		if g, w := buf.String(), tt.want; g != w {
    33  			t.Errorf("got %q, expected %q", g, w)
    34  		}
    35  		if g, w := n, tt.n; g != w {
    36  			t.Errorf("read %d bytes, but expected to have read %d bytes for\n\t%+v", g, w, tt)
    37  		}
    38  	}
    39  }