blob: b8623cfcee995df25915dabe6147b7128654e00c [file]
// 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.
//go:build goexperiment.simd
package simd_test
import (
"internal/testenv"
"os"
"strings"
"testing"
)
func common(t *testing.T, dir, what, failWith string) {
t.Helper()
t.Logf("subprocess test in testdata")
testenv.MustHaveGoRun(t)
args := []string{"test", "-C", dir}
if testing.Verbose() {
args = append(args, "-v")
}
args = append(args, what)
cmd := testenv.Command(t, testenv.GoToolPath(t), args...)
if failWith == "" {
cmd.Stdout = os.Stdout
cmd.Stderr = os.Stderr
if err := cmd.Run(); err != nil {
t.Error(err)
}
} else {
combined, err := cmd.CombinedOutput()
combinedString := string(combined)
sawFailure := strings.Contains(combinedString, failWith)
if err == nil && !sawFailure {
t.Errorf("Saw no error and did not see expected failure string '%s' in '%s'", failWith, combinedString)
} else if err == nil && sawFailure {
t.Errorf("Saw no error but did see expected failure string '%s'", failWith)
} else if err != nil && !sawFailure {
t.Errorf("Saw error %v but did see expected failure string '%s' in '%s'", err, failWith, combinedString)
} else /* err != nil && sawFailure */ {
t.Logf("Saw error %v and expected failure string '%s'", err, failWith)
}
}
}
func TestIFace(t *testing.T) {
common(t, "testdata", "iface_test.go", "")
}
func TestSizeof(t *testing.T) {
common(t, "testdata", "sizeof_test.go", "")
}
func TestCompileOk(t *testing.T) {
common(t, "testdata", "compiles_test.go", "")
}
func TestCompileError(t *testing.T) {
common(t, "testdata", "errors_test.go",
"array length unsafe.Sizeof(v_from_simd) (value of type uintptr) must be constant")
}