// Copyright 2015 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 exec import ( "io" "testing" ) func TestPrefixSuffixSaver(t *testing.T) { tests := []struct { N int writes []string want string }{ { N: 2, writes: nil, want: "", }, { N: 2, writes: []string{"a"}, want: "a", }, { N: 2, writes: []string{"abc", "d"}, want: "abcd", }, { N: 2, writes: []string{"abc", "d", "e"}, want: "ab\n... omitting 1 bytes ...\nde", }, { N: 2, writes: []string{"ab______________________yz"}, want: "ab\n... omitting 22 bytes ...\nyz", }, { N: 2, writes: []string{"ab_______________________y", "z"}, want: "ab\n... omitting 23 bytes ...\nyz", }, } for i, tt := range tests { w := &prefixSuffixSaver{N: tt.N} for _, s := range tt.writes { n, err := io.WriteString(w, s) if err != nil || n != len(s) { t.Errorf("%d. WriteString(%q) = %v, %v; want %v, %v", i, s, n, err, len(s), nil) } } if got := string(w.Bytes()); got != tt.want { t.Errorf("%d. Bytes = %q; want %q", i, got, tt.want) } } }