1 // Copyright 2011 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.
13 var writeTests
= []struct {
18 {Input
: [][]string{{"abc"}}, Output
: "abc\n"},
19 {Input
: [][]string{{"abc"}}, Output
: "abc\r\n", UseCRLF
: true},
20 {Input
: [][]string{{`"abc"`}}, Output
: `"""abc"""` + "\n"},
21 {Input
: [][]string{{`a"b`}}, Output
: `"a""b"` + "\n"},
22 {Input
: [][]string{{`"a"b"`}}, Output
: `"""a""b"""` + "\n"},
23 {Input
: [][]string{{" abc"}}, Output
: `" abc"` + "\n"},
24 {Input
: [][]string{{"abc,def"}}, Output
: `"abc,def"` + "\n"},
25 {Input
: [][]string{{"abc", "def"}}, Output
: "abc,def\n"},
26 {Input
: [][]string{{"abc"}, {"def"}}, Output
: "abc\ndef\n"},
27 {Input
: [][]string{{"abc\ndef"}}, Output
: "\"abc\ndef\"\n"},
28 {Input
: [][]string{{"abc\ndef"}}, Output
: "\"abc\r\ndef\"\r\n", UseCRLF
: true},
29 {Input
: [][]string{{"abc\rdef"}}, Output
: "\"abcdef\"\r\n", UseCRLF
: true},
30 {Input
: [][]string{{"abc\rdef"}}, Output
: "\"abc\rdef\"\n", UseCRLF
: false},
33 func TestWrite(t
*testing
.T
) {
34 for n
, tt
:= range writeTests
{
37 f
.UseCRLF
= tt
.UseCRLF
38 err
:= f
.WriteAll(tt
.Input
)
40 t
.Errorf("Unexpected error: %s\n", err
)
44 t
.Errorf("#%d: out=%q want %q", n
, out
, tt
.Output
)
49 type errorWriter
struct{}
51 func (e errorWriter
) Write(b
[]byte) (int, error
) {
52 return 0, errors
.New("Test")
55 func TestError(t
*testing
.T
) {
58 f
.Write([]string{"abc"})
63 t
.Errorf("Unexpected error: %s\n", err
)
66 f
= NewWriter(errorWriter
{})
67 f
.Write([]string{"abc"})
72 t
.Error("Error should not be nil")