aboutsummaryrefslogtreecommitdiff
path: root/src/runtime/print_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'src/runtime/print_test.go')
-rw-r--r--src/runtime/print_test.go65
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)
+ }
+ })
+}