diff options
Diffstat (limited to 'src/runtime/print_test.go')
| -rw-r--r-- | src/runtime/print_test.go | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/src/runtime/print_test.go b/src/runtime/print_test.go new file mode 100644 index 0000000000..cfc27ed95b --- /dev/null +++ b/src/runtime/print_test.go @@ -0,0 +1,65 @@ +// Copyright 2026 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package runtime_test + +import ( + "math" + "runtime" + "testing" +) + +func FuzzPrintFloat64(f *testing.F) { + f.Add(math.SmallestNonzeroFloat64) + f.Add(math.MaxFloat64) + f.Add(-1.7976931348623157e+308) // requires 24 digits + + f.Fuzz(func(t *testing.T, v float64) { + s := runtime.DumpPrint(v) + if len(s) > runtime.Float64Bytes { + t.Errorf("print(%f) got %s (len %d) want len <= %d", v, s, len(s), runtime.Float64Bytes) + } + }) +} + +func FuzzPrintFloat32(f *testing.F) { + f.Add(float32(math.SmallestNonzeroFloat32)) + f.Add(float32(math.MaxFloat32)) + f.Add(float32(-1.06338233e+37)) // requires 15 digits + + f.Fuzz(func(t *testing.T, v float32) { + s := runtime.DumpPrint(v) + if len(s) > runtime.Float32Bytes { + t.Errorf("print(%f) got %s (len %d) want len <= %d", v, s, len(s), runtime.Float32Bytes) + } + }) +} + +func FuzzPrintComplex128(f *testing.F) { + f.Add(math.SmallestNonzeroFloat64, math.SmallestNonzeroFloat64) + f.Add(math.MaxFloat64, math.MaxFloat64) + f.Add(-1.7976931348623157e+308, -1.7976931348623157e+308) // requires 51 digits + + f.Fuzz(func(t *testing.T, r, i float64) { + v := complex(r, i) + s := runtime.DumpPrint(v) + if len(s) > runtime.Complex128Bytes { + t.Errorf("print(%f) got %s (len %d) want len <= %d", v, s, len(s), runtime.Complex128Bytes) + } + }) +} + +func FuzzPrintComplex64(f *testing.F) { + f.Add(float32(math.SmallestNonzeroFloat32), float32(math.SmallestNonzeroFloat32)) + f.Add(float32(math.MaxFloat32), float32(math.MaxFloat32)) + f.Add(float32(-1.06338233e+37), float32(-1.06338233e+37)) // requires 33 digits + + f.Fuzz(func(t *testing.T, r, i float32) { + v := complex(r, i) + s := runtime.DumpPrint(v) + if len(s) > runtime.Complex64Bytes { + t.Errorf("print(%f) got %s (len %d) want len <= %d", v, s, len(s), runtime.Complex64Bytes) + } + }) +} |
