@ -35,30 +35,86 @@ func TestReplacer(t *testing.T) {
input : "{" ,
input : "{" ,
expect : "{" ,
expect : "{" ,
} ,
} ,
{
input : ` \ { ` ,
expect : ` { ` ,
} ,
{
{
input : "foo{" ,
input : "foo{" ,
expect : "foo{" ,
expect : "foo{" ,
} ,
} ,
{
input : ` foo\ { ` ,
expect : ` foo { ` ,
} ,
{
{
input : "foo{bar" ,
input : "foo{bar" ,
expect : "foo{bar" ,
expect : "foo{bar" ,
} ,
} ,
{
input : ` foo\ { bar ` ,
expect : ` foo { bar ` ,
} ,
{
{
input : "foo{bar}" ,
input : "foo{bar}" ,
expect : "foo" ,
expect : "foo" ,
} ,
} ,
{
input : ` foo\ { bar\} ` ,
expect : ` foo { bar} ` ,
} ,
{
{
input : "}" ,
input : "}" ,
expect : "}" ,
expect : "}" ,
} ,
} ,
{
input : ` \} ` ,
expect : ` \} ` ,
} ,
{
{
input : "{}" ,
input : "{}" ,
expect : "" ,
expect : "" ,
} ,
} ,
{
input : ` \ { \} ` ,
expect : ` { } ` ,
} ,
{
{
input : ` { "json": "object"} ` ,
input : ` { "json": "object"} ` ,
expect : "" ,
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 : ` {{ ` ,
input : ` {{ ` ,
expect : "{{" ,
expect : "{{" ,
@ -67,11 +123,39 @@ func TestReplacer(t *testing.T) {
input : ` {{ } ` ,
input : ` {{ } ` ,
expect : "" ,
expect : "" ,
} ,
} ,
{
input : ` { "json": "object"\} ` ,
expect : "" ,
} ,
{
{
input : ` { unknown} ` ,
input : ` { unknown} ` ,
empty : "-" ,
empty : "-" ,
expect : "-" ,
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 )
actual := rep . ReplaceAll ( tc . input , tc . empty )
if actual != tc . expect {
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 ) {
func TestReplacerSet ( t * testing . T ) {
rep := testReplacer ( )
rep := testReplacer ( )