blob: cfc27ed95bd6cd8f16a1a02e06a985382120505b [file] [log] [blame] [edit]
// 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)
}
})
}