Skip to content
This repository was archived by the owner on Dec 18, 2025. It is now read-only.

Commit 9482210

Browse files
committed
add some fuzzing
1 parent b52b59f commit 9482210

File tree

1 file changed

+39
-0
lines changed

1 file changed

+39
-0
lines changed

refid_test.go

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -268,3 +268,42 @@ func TestJsonUnmarshal(t *testing.T) {
268268
assert.Nil(t, err)
269269
assert.Equal(t, r.String(), testValWoutTag)
270270
}
271+
272+
func FuzzJsonMarshalUnmarshal(f *testing.F) {
273+
f.Add(Must(New()).ToHexString())
274+
f.Add(Must(New()).ToBase32String())
275+
f.Add(Must(New()).ToBase64String())
276+
f.Add(Must(NewTagged(1)).ToHexString())
277+
f.Add(Must(NewTagged(1)).ToBase32String())
278+
f.Add(Must(NewTagged(1)).ToBase64String())
279+
f.Add(Must(NewRandom()).ToHexString())
280+
f.Add(Must(NewRandom()).ToBase32String())
281+
f.Add(Must(NewRandom()).ToBase64String())
282+
f.Add(Must(NewRandomTagged(1)).ToHexString())
283+
f.Add(Must(NewRandomTagged(1)).ToBase32String())
284+
f.Add(Must(NewRandomTagged(1)).ToBase64String())
285+
286+
f.Fuzz(func(t *testing.T, input string) {
287+
p, err := Parse(input)
288+
if err != nil {
289+
t.Skip()
290+
}
291+
292+
j, err := json.Marshal(p)
293+
if err != nil {
294+
t.Fatalf("failed marshal json value: %q", input)
295+
}
296+
297+
var r ID
298+
if err := json.Unmarshal(j, &r); err != nil {
299+
t.Fatalf("failed to unmarshal json: %q => %q", input, string(j))
300+
}
301+
302+
if !p.Equal(r) {
303+
t.Fatalf("bytes were not equal: %v != %v", p.Bytes(), r.Bytes())
304+
}
305+
if p.String() != r.String() {
306+
t.Fatalf("strings were not equal: %q != %q", p.String(), r.String())
307+
}
308+
})
309+
}

0 commit comments

Comments
 (0)