// 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) } }) }