test: increase test coverage

This commit is contained in:
Li Jie
2025-01-09 18:23:51 +08:00
parent a8cb551465
commit 46dc7c3a77
2 changed files with 449 additions and 0 deletions

View File

@@ -0,0 +1,115 @@
package ssatest
import (
"go/types"
"testing"
"github.com/goplus/llgo/compiler/ssa"
"github.com/goplus/llvm"
)
func init() {
llvm.InitializeAllTargets()
llvm.InitializeAllTargetMCs()
llvm.InitializeAllTargetInfos()
llvm.InitializeAllAsmParsers()
llvm.InitializeAllAsmPrinters()
}
type mockImporter struct {
pkgs map[string]*types.Package
}
func newMockImporter() *mockImporter {
return &mockImporter{
pkgs: make(map[string]*types.Package),
}
}
func (m *mockImporter) Import(path string) (*types.Package, error) {
if pkg, ok := m.pkgs[path]; ok {
return pkg, nil
}
pkg := types.NewPackage(path, path)
m.pkgs[path] = pkg
return pkg, nil
}
func TestNewProgram(t *testing.T) {
target := &ssa.Target{
GOOS: "linux",
GOARCH: "amd64",
GOARM: "7",
}
prog := NewProgram(t, target)
if prog == nil {
t.Fatal("NewProgram returned nil")
}
// Set runtime package
rtPkg := types.NewPackage(ssa.PkgRuntime, ssa.PkgRuntime)
prog.SetRuntime(rtPkg)
// Set python package
pyPkg := types.NewPackage(ssa.PkgPython, ssa.PkgPython)
prog.SetRuntime(pyPkg)
}
func TestNewProgramEx(t *testing.T) {
target := &ssa.Target{
GOOS: "linux",
GOARCH: "amd64",
GOARM: "7",
}
imp := newMockImporter()
prog := NewProgramEx(t, target, imp)
if prog == nil {
t.Fatal("NewProgramEx returned nil")
}
// Set runtime package
rtPkg := types.NewPackage(ssa.PkgRuntime, ssa.PkgRuntime)
prog.SetRuntime(rtPkg)
// Set python package
pyPkg := types.NewPackage(ssa.PkgPython, ssa.PkgPython)
prog.SetRuntime(pyPkg)
}
func TestAssert(t *testing.T) {
target := &ssa.Target{
GOOS: "linux",
GOARCH: "amd64",
GOARM: "7",
}
prog := NewProgram(t, target)
if prog == nil {
t.Fatal("NewProgram returned nil")
}
tests := []struct {
name string
pkg ssa.Package
expected string
}{
{
name: "test package path",
pkg: prog.NewPackage("test", "test/path"),
expected: "; ModuleID = 'test/path'\nsource_filename = \"test/path\"\n",
},
{
name: "another package path",
pkg: prog.NewPackage("another", "another/path"),
expected: "; ModuleID = 'another/path'\nsource_filename = \"another/path\"\n",
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
Assert(t, tt.pkg, tt.expected)
})
}
}