TDT Table-driven tests
2.3. 標準パッケージから学ぶ - テスト
package strings_test
type SplitTest struct {
s string
sep string
n int
a []string
}
var splittests = []SplitTest{
{"", "", -1, []string{}},
{abcd, "", 2, []string{"a", "bcd"}},
{abcd, "", 4, []string{"a", "b", "c", "d"}},
{faces, "", -1, []string{"☺", "☻", "☹"}},
{faces, "", 17, []string{"☺", "☻", "☹"}},
{"☺�☹", "", -1, []string{"☺", "�", "☹"}},
{abcd, "a", 0, nil},
{faces, "☹", -1, []string{"☺☻", ""}},
{faces, "~", -1, []string{faces}},
}
strings
func TestSplit(t *testing.T) {
for _, tt := range splittests {
a := SplitN(tt.s, tt.sep, tt.n)
if !eq(a, tt.a) {
t.Errorf("Split(%q, %q, %d) = %v;
want %v", tt.s, tt.sep, tt.n, a, tt.a)
Continue
}
if tt.n == 0 {
Continue
}
// 省略
}
}
テストに利用する構造体を定義
テストケースを配列で用意
配列をfor文で回して実行
場合によってt.Runを利用してsubtests