// Copyright 2025 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 scan_test import ( "internal/goarch" "internal/runtime/gc" "internal/runtime/gc/scan" "testing" ) type expandFunc func(sizeClass int, packed *gc.ObjMask, unpacked *gc.PtrMask) func testExpand(t *testing.T, expF expandFunc) { expR := scan.ExpandReference testObjs(t, func(t *testing.T, sizeClass int, objs *gc.ObjMask) { var want, got gc.PtrMask expR(sizeClass, objs, &want) expF(sizeClass, objs, &got) for i := range want { if got[i] != want[i] { t.Errorf("expansion differs from reference at bit %d", i*goarch.PtrSize) if goarch.PtrSize == 4 { t.Logf("got: %032b", got[i]) t.Logf("want: %032b", want[i]) } else { t.Logf("got: %064b", got[i]) t.Logf("want: %064b", want[i]) } } } }) }