diff --git a/internal/zenutil/unescape_test.go b/internal/zenutil/unescape_test.go index e5ebc93..b9bad79 100644 --- a/internal/zenutil/unescape_test.go +++ b/internal/zenutil/unescape_test.go @@ -1,6 +1,8 @@ package zenutil -import "testing" +import ( + "testing" +) func TestUnescape(t *testing.T) { tests := []struct { @@ -31,3 +33,33 @@ func TestUnescape(t *testing.T) { } } } + +func FuzzUnescape(f *testing.F) { + f.Add(`abc`) + f.Add(`ab\c`) + f.Add(`a\bc`) + f.Add(`abc\f`) + f.Add(`abc\n`) + f.Add(`abc\r`) + f.Add(`abc\t`) + f.Add(`abc\v`) + f.Add(`a\1c`) + f.Add(`a\12c`) + f.Add(`a\123c`) + f.Add(`a\1\b`) + f.Add(`a\12\b`) + f.Add(`a\123\b`) + f.Add(`abc\1`) + f.Add(`abc\12`) + f.Add(`abc\123`) + f.Fuzz(func(t *testing.T, e string) { + u := Unescape(e) + switch { + case u == e: + return + case len(u) < len(e): + return + } + t.Errorf("Unescape(%q) = %q", e, u) + }) +}