diff options
author | Dave Cheney <dave@cheney.net> | 2014-06-25 03:06:07 +1000 |
---|---|---|
committer | Dave Cheney <dave@cheney.net> | 2014-06-25 03:06:07 +1000 |
commit | e5daff6e7a33e8fa7cc324d1d45ff7654850158c (patch) | |
tree | da211219087a7ebb96d7afe5427c495900eee402 /src/pkg/strings | |
parent | 831959084ff2b786bede82a2dd4dee8c53175460 (diff) | |
download | go-e5daff6e7a33e8fa7cc324d1d45ff7654850158c.tar.gz |
strings: additional tests
This CL re-applies the tests added in CL 101330053 and subsequently rolled back in CL 102610043.
The original author of this change was Rui Ueyama <ruiu@google.com>
LGTM=r, ruiu
R=ruiu, r
CC=golang-codereviews
https://codereview.appspot.com/109170043
Diffstat (limited to 'src/pkg/strings')
-rw-r--r-- | src/pkg/strings/replace_test.go | 42 |
1 files changed, 30 insertions, 12 deletions
diff --git a/src/pkg/strings/replace_test.go b/src/pkg/strings/replace_test.go index 2cb318b69..77e48b988 100644 --- a/src/pkg/strings/replace_test.go +++ b/src/pkg/strings/replace_test.go @@ -308,20 +308,21 @@ func TestReplacer(t *testing.T) { } } +var algorithmTestCases = []struct { + r *Replacer + want string +}{ + {capitalLetters, "*strings.byteReplacer"}, + {htmlEscaper, "*strings.byteStringReplacer"}, + {NewReplacer("12", "123"), "*strings.singleStringReplacer"}, + {NewReplacer("1", "12"), "*strings.byteStringReplacer"}, + {NewReplacer("", "X"), "*strings.genericReplacer"}, + {NewReplacer("a", "1", "b", "12", "cde", "123"), "*strings.genericReplacer"}, +} + // TestPickAlgorithm tests that NewReplacer picks the correct algorithm. func TestPickAlgorithm(t *testing.T) { - testCases := []struct { - r *Replacer - want string - }{ - {capitalLetters, "*strings.byteReplacer"}, - {htmlEscaper, "*strings.byteStringReplacer"}, - {NewReplacer("12", "123"), "*strings.singleStringReplacer"}, - {NewReplacer("1", "12"), "*strings.byteStringReplacer"}, - {NewReplacer("", "X"), "*strings.genericReplacer"}, - {NewReplacer("a", "1", "b", "12", "cde", "123"), "*strings.genericReplacer"}, - } - for i, tc := range testCases { + for i, tc := range algorithmTestCases { got := fmt.Sprintf("%T", tc.r.Replacer()) if got != tc.want { t.Errorf("%d. algorithm = %s, want %s", i, got, tc.want) @@ -329,6 +330,23 @@ func TestPickAlgorithm(t *testing.T) { } } +type errWriter struct{} + +func (errWriter) Write(p []byte) (n int, err error) { + return 0, fmt.Errorf("unwritable") +} + +// TestWriteStringError tests that WriteString returns an error +// received from the underlying io.Writer. +func TestWriteStringError(t *testing.T) { + for i, tc := range algorithmTestCases { + n, err := tc.r.WriteString(errWriter{}, "abc") + if n != 0 || err == nil || err.Error() != "unwritable" { + t.Errorf("%d. WriteStringError = %d, %v, want 0, unwritable", i, n, err) + } + } +} + // TestGenericTrieBuilding verifies the structure of the generated trie. There // is one node per line, and the key ending with the current line is in the // trie if it ends with a "+". |