Skip to content

Commit 6b2b83a

Browse files
committed
Normalize some test inputs rather than lowering precision
1 parent b5d3006 commit 6b2b83a

File tree

5 files changed

+204
-198
lines changed

5 files changed

+204
-198
lines changed

raylib/internal/cmd/genraymath/helper.go.tmpl

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,9 @@
103103
{{ $name }}M3, {{ $name }}M7, {{ $name }}M11, {{ $name }}M15,
104104
)
105105
{{- end -}}
106+
{{- if $param.Normalize }}
107+
{{ testvar $name }} = {{ $param.TypeName}}Normalize({{ testvar $name }})
108+
{{- end -}}
106109
{{- end -}}
107110
{{- end -}}
108111
{{- end -}}

raylib/internal/cmd/genraymath/main.go

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -36,9 +36,8 @@ var (
3636
"Mat2Transpose",
3737
"MatrixNormalize",
3838
"Mat2Set",
39+
"Vector2Cross",
3940

40-
"Vector2Cross", // alias for Vector2CrossProduct
41-
"Vector2LenSqr", // alias for Vector2LengthSqr
4241
"MatrixToFloat", // MatrixToFloatV tested
4342
"Vector3ToFloat", // Vector3ToFloatV tested
4443
}
@@ -51,8 +50,9 @@ var (
5150
"MatrixDecompose",
5251
}
5352

54-
// fuzz testing these functions is flakey unless the test precision is lowered
55-
lowPrecision = []string{
53+
// some outputs can differ a lot when the input is big (especially for rotations) so we need to
54+
// normalize test inputs
55+
normalize = []string{
5656
"Vector3RotateByAxisAngle",
5757
"Vector2Rotate",
5858
"QuaternionSlerp",
@@ -267,6 +267,7 @@ func parseFunc(fn *ast.FuncDecl, fset *token.FileSet, inlineMethods bool) (funcI
267267
ret.Params = append(ret.Params, param{
268268
Names: names,
269269
TypeName: typeName,
270+
Normalize: strings.HasPrefix(fn.Name.Name, typeName) && slices.Contains(normalize, fn.Name.Name),
270271
UseDouble: typeName == "float32" && slices.Contains(useDouble, fn.Name.Name),
271272
})
272273
}
@@ -380,19 +381,15 @@ func (f funcInfo) TestNotEqual(a, b string) string {
380381
}
381382
}
382383

383-
prec := 6
384-
if slices.Contains(lowPrecision, f.Name) {
385-
prec = 1
386-
}
387-
388384
first, size := utf8.DecodeRuneInString(t)
389385
t = string(unicode.ToUpper(first)) + t[size:]
390-
return fmt.Sprintf("!test%sEquals(%s, %s, 1e-%d)", t, a, b, prec)
386+
return fmt.Sprintf("!test%sEquals(%s, %s)", t, a, b)
391387
}
392388

393389
type param struct {
394390
Names []string
395391
TypeName string
392+
Normalize bool
396393
UseDouble bool
397394
}
398395

raylib/internal/cmd/genraymath/test.go.tmpl

Lines changed: 32 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ func Test{{ .Name }}(t *testing.T) {
5959

6060
// helpers
6161

62-
func testFloat32Equals(a, b float32, epsilon float64) bool {
62+
func testFloat32Equals(a, b float32) bool {
6363
if math.IsNaN(float64(a)) && math.IsNaN(float64(b)) {
6464
return true
6565
}
@@ -72,51 +72,51 @@ func testFloat32Equals(a, b float32, epsilon float64) bool {
7272
return math.Abs(float64(a-b)) <= epsilon*math.Max(1.0, math.Max(math.Abs(float64(a)), math.Abs(float64(b))))
7373
}
7474

75-
func testFloat32SliceEquals(a, b []float32, epsilon float64) bool {
75+
func testFloat32SliceEquals(a, b []float32) bool {
7676
if len(a) != len(b) {
7777
return false
7878
}
7979
for i := range a {
80-
if !testFloat32Equals(a[i], b[i], epsilon) {
80+
if !testFloat32Equals(a[i], b[i]) {
8181
return false
8282
}
8383
}
8484
return true
8585
}
8686

87-
func testVector2Equals(a, b Vector2, epsilon float64) bool {
88-
return testFloat32Equals(a.X, b.X, epsilon) &&
89-
testFloat32Equals(a.Y, b.Y, epsilon)
87+
func testVector2Equals(a, b Vector2) bool {
88+
return testFloat32Equals(a.X, b.X) &&
89+
testFloat32Equals(a.Y, b.Y)
9090
}
9191

92-
func testVector3Equals(a, b Vector3, epsilon float64) bool {
93-
return testFloat32Equals(a.X, b.X, epsilon) &&
94-
testFloat32Equals(a.Y, b.Y, epsilon) &&
95-
testFloat32Equals(a.Z, b.Z, epsilon)
92+
func testVector3Equals(a, b Vector3) bool {
93+
return testFloat32Equals(a.X, b.X) &&
94+
testFloat32Equals(a.Y, b.Y) &&
95+
testFloat32Equals(a.Z, b.Z)
9696
}
9797

98-
func testQuaternionEquals(a, b Quaternion, epsilon float64) bool {
99-
return testFloat32Equals(a.X, b.X, epsilon) &&
100-
testFloat32Equals(a.Y, b.Y, epsilon) &&
101-
testFloat32Equals(a.Z, b.Z, epsilon) &&
102-
testFloat32Equals(a.W, b.W, epsilon)
98+
func testQuaternionEquals(a, b Quaternion) bool {
99+
return testFloat32Equals(a.X, b.X) &&
100+
testFloat32Equals(a.Y, b.Y) &&
101+
testFloat32Equals(a.Z, b.Z) &&
102+
testFloat32Equals(a.W, b.W)
103103
}
104104

105-
func testMatrixEquals(a, b Matrix, epsilon float64) bool {
106-
return testFloat32Equals(a.M0, b.M0, epsilon) &&
107-
testFloat32Equals(a.M1, b.M1, epsilon) &&
108-
testFloat32Equals(a.M2, b.M2, epsilon) &&
109-
testFloat32Equals(a.M3, b.M3, epsilon) &&
110-
testFloat32Equals(a.M4, b.M4, epsilon) &&
111-
testFloat32Equals(a.M5, b.M5, epsilon) &&
112-
testFloat32Equals(a.M6, b.M6, epsilon) &&
113-
testFloat32Equals(a.M7, b.M7, epsilon) &&
114-
testFloat32Equals(a.M8, b.M8, epsilon) &&
115-
testFloat32Equals(a.M9, b.M9, epsilon) &&
116-
testFloat32Equals(a.M10, b.M10, epsilon) &&
117-
testFloat32Equals(a.M11, b.M11, epsilon) &&
118-
testFloat32Equals(a.M12, b.M12, epsilon) &&
119-
testFloat32Equals(a.M13, b.M13, epsilon) &&
120-
testFloat32Equals(a.M14, b.M14, epsilon) &&
121-
testFloat32Equals(a.M15, b.M15, epsilon)
105+
func testMatrixEquals(a, b Matrix) bool {
106+
return testFloat32Equals(a.M0, b.M0) &&
107+
testFloat32Equals(a.M1, b.M1) &&
108+
testFloat32Equals(a.M2, b.M2) &&
109+
testFloat32Equals(a.M3, b.M3) &&
110+
testFloat32Equals(a.M4, b.M4) &&
111+
testFloat32Equals(a.M5, b.M5) &&
112+
testFloat32Equals(a.M6, b.M6) &&
113+
testFloat32Equals(a.M7, b.M7) &&
114+
testFloat32Equals(a.M8, b.M8) &&
115+
testFloat32Equals(a.M9, b.M9) &&
116+
testFloat32Equals(a.M10, b.M10) &&
117+
testFloat32Equals(a.M11, b.M11) &&
118+
testFloat32Equals(a.M12, b.M12) &&
119+
testFloat32Equals(a.M13, b.M13) &&
120+
testFloat32Equals(a.M14, b.M14) &&
121+
testFloat32Equals(a.M15, b.M15)
122122
}

0 commit comments

Comments
 (0)