summaryrefslogtreecommitdiff
path: root/src/pkg/bytes/bytes_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'src/pkg/bytes/bytes_test.go')
-rw-r--r--src/pkg/bytes/bytes_test.go36
1 files changed, 36 insertions, 0 deletions
diff --git a/src/pkg/bytes/bytes_test.go b/src/pkg/bytes/bytes_test.go
index 2bea1737f..26ff2d16f 100644
--- a/src/pkg/bytes/bytes_test.go
+++ b/src/pkg/bytes/bytes_test.go
@@ -645,3 +645,39 @@ func TestTrimFunc(t *testing.T) {
}
}
}
+
+type ReplaceTest struct {
+ in string
+ old, new string
+ n int
+ out string
+}
+
+var ReplaceTests = []ReplaceTest{
+ ReplaceTest{"hello", "l", "L", 0, "heLLo"},
+ ReplaceTest{"hello", "x", "X", 0, "hello"},
+ ReplaceTest{"", "x", "X", 0, ""},
+ ReplaceTest{"radar", "r", "<r>", 0, "<r>ada<r>"},
+ ReplaceTest{"", "", "<>", 0, "<>"},
+ ReplaceTest{"banana", "a", "<>", 0, "b<>n<>n<>"},
+ ReplaceTest{"banana", "a", "<>", 1, "b<>nana"},
+ ReplaceTest{"banana", "a", "<>", 1000, "b<>n<>n<>"},
+ ReplaceTest{"banana", "an", "<>", 0, "b<><>a"},
+ ReplaceTest{"banana", "ana", "<>", 0, "b<>na"},
+ ReplaceTest{"banana", "", "<>", 0, "<>b<>a<>n<>a<>n<>a<>"},
+ ReplaceTest{"banana", "", "<>", 10, "<>b<>a<>n<>a<>n<>a<>"},
+ ReplaceTest{"banana", "", "<>", 6, "<>b<>a<>n<>a<>n<>a"},
+ ReplaceTest{"banana", "", "<>", 5, "<>b<>a<>n<>a<>na"},
+ ReplaceTest{"banana", "", "<>", 1, "<>banana"},
+ ReplaceTest{"banana", "a", "a", 0, "banana"},
+ ReplaceTest{"banana", "a", "a", 1, "banana"},
+ ReplaceTest{"☺☻☹", "", "<>", 0, "<>☺<>☻<>☹<>"},
+}
+
+func TestReplace(t *testing.T) {
+ for _, tt := range ReplaceTests {
+ if s := string(Replace([]byte(tt.in), []byte(tt.old), []byte(tt.new), tt.n)); s != tt.out {
+ t.Errorf("Replace(%q, %q, %q, %d) = %q, want %q", tt.in, tt.old, tt.new, tt.n, s, tt.out)
+ }
+ }
+}