summaryrefslogtreecommitdiff
path: root/replacer_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'replacer_test.go')
-rw-r--r--replacer_test.go113
1 files changed, 113 insertions, 0 deletions
diff --git a/replacer_test.go b/replacer_test.go
index 4b56194..66bb537 100644
--- a/replacer_test.go
+++ b/replacer_test.go
@@ -36,30 +36,86 @@ func TestReplacer(t *testing.T) {
expect: "{",
},
{
+ input: `\{`,
+ expect: `{`,
+ },
+ {
input: "foo{",
expect: "foo{",
},
{
+ input: `foo\{`,
+ expect: `foo{`,
+ },
+ {
input: "foo{bar",
expect: "foo{bar",
},
{
+ input: `foo\{bar`,
+ expect: `foo{bar`,
+ },
+ {
input: "foo{bar}",
expect: "foo",
},
{
+ input: `foo\{bar\}`,
+ expect: `foo{bar}`,
+ },
+ {
input: "}",
expect: "}",
},
{
+ input: `\}`,
+ expect: `\}`,
+ },
+ {
input: "{}",
expect: "",
},
{
+ input: `\{\}`,
+ expect: `{}`,
+ },
+ {
input: `{"json": "object"}`,
expect: "",
},
{
+ input: `\{"json": "object"}`,
+ expect: `{"json": "object"}`,
+ },
+ {
+ input: `\{"json": "object"\}`,
+ expect: `{"json": "object"}`,
+ },
+ {
+ input: `\{"json": "object{bar}"\}`,
+ expect: `{"json": "object"}`,
+ },
+ {
+ input: `\{"json": \{"nested": "object"\}\}`,
+ expect: `{"json": {"nested": "object"}}`,
+ },
+ {
+ input: `\{"json": \{"nested": "{bar}"\}\}`,
+ expect: `{"json": {"nested": ""}}`,
+ },
+ {
+ input: `pre \{"json": \{"nested": "{bar}"\}\}`,
+ expect: `pre {"json": {"nested": ""}}`,
+ },
+ {
+ input: `\{"json": \{"nested": "{bar}"\}\} post`,
+ expect: `{"json": {"nested": ""}} post`,
+ },
+ {
+ input: `pre \{"json": \{"nested": "{bar}"\}\} post`,
+ expect: `pre {"json": {"nested": ""}} post`,
+ },
+ {
input: `{{`,
expect: "{{",
},
@@ -68,10 +124,38 @@ func TestReplacer(t *testing.T) {
expect: "",
},
{
+ input: `{"json": "object"\}`,
+ expect: "",
+ },
+ {
input: `{unknown}`,
empty: "-",
expect: "-",
},
+ {
+ input: `back\slashes`,
+ expect: `back\slashes`,
+ },
+ {
+ input: `double back\\slashes`,
+ expect: `double back\\slashes`,
+ },
+ {
+ input: `placeholder {with \{ brace} in name`,
+ expect: `placeholder in name`,
+ },
+ {
+ input: `placeholder {with \} brace} in name`,
+ expect: `placeholder in name`,
+ },
+ {
+ input: `placeholder {with \} \} braces} in name`,
+ expect: `placeholder in name`,
+ },
+ {
+ input: `\{'group':'default','max_age':3600,'endpoints':[\{'url':'https://some.domain.local/a/d/g'\}],'include_subdomains':true\}`,
+ expect: `{'group':'default','max_age':3600,'endpoints':[{'url':'https://some.domain.local/a/d/g'}],'include_subdomains':true}`,
+ },
} {
actual := rep.ReplaceAll(tc.input, tc.empty)
if actual != tc.expect {
@@ -81,6 +165,35 @@ func TestReplacer(t *testing.T) {
}
}
+func BenchmarkReplacer(b *testing.B) {
+ type testCase struct {
+ name, input, empty string
+ }
+
+ rep := testReplacer()
+
+ for _, bm := range []testCase{
+ {
+ name: "no placeholder",
+ input: `simple string`,
+ },
+ {
+ name: "placeholder",
+ input: `{"json": "object"}`,
+ },
+ {
+ name: "escaped placeholder",
+ input: `\{"json": \{"nested": "{bar}"\}\}`,
+ },
+ } {
+ b.Run(bm.name, func(b *testing.B) {
+ for i := 0; i < b.N; i++ {
+ rep.ReplaceAll(bm.input, bm.empty)
+ }
+ })
+ }
+}
+
func TestReplacerSet(t *testing.T) {
rep := testReplacer()