mirror of
https://github.com/gopl-zh/gopl-zh.github.com.git
synced 2024-11-19 21:03:43 +00:00
46 lines
1023 B
Go
46 lines
1023 B
Go
// Copyright © 2016 Alan A. A. Donovan & Brian W. Kernighan.
|
|
// License: https://creativecommons.org/licenses/by-nc-sa/4.0/
|
|
|
|
// Test of echo command. Run with: go test gopl.io/ch11/echo
|
|
|
|
//!+
|
|
package main
|
|
|
|
import (
|
|
"bytes"
|
|
"fmt"
|
|
"testing"
|
|
)
|
|
|
|
func TestEcho(t *testing.T) {
|
|
var tests = []struct {
|
|
newline bool
|
|
sep string
|
|
args []string
|
|
want string
|
|
}{
|
|
{true, "", []string{}, "\n"},
|
|
{false, "", []string{}, ""},
|
|
{true, "\t", []string{"one", "two", "three"}, "one\ttwo\tthree\n"},
|
|
{true, ",", []string{"a", "b", "c"}, "a,b,c\n"},
|
|
{false, ":", []string{"1", "2", "3"}, "1:2:3"},
|
|
}
|
|
|
|
for _, test := range tests {
|
|
descr := fmt.Sprintf("echo(%v, %q, %q)",
|
|
test.newline, test.sep, test.args)
|
|
|
|
out = new(bytes.Buffer) // captured output
|
|
if err := echo(test.newline, test.sep, test.args); err != nil {
|
|
t.Errorf("%s failed: %v", descr, err)
|
|
continue
|
|
}
|
|
got := out.(*bytes.Buffer).String()
|
|
if got != test.want {
|
|
t.Errorf("%s = %q, want %q", descr, got, test.want)
|
|
}
|
|
}
|
|
}
|
|
|
|
//!-
|