mirror of
https://github.com/autc04/Retro68.git
synced 2024-09-08 20:55:01 +00:00
82 lines
1.7 KiB
Go
82 lines
1.7 KiB
Go
// Copyright 2014 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 plan9obj
|
|
|
|
import (
|
|
"reflect"
|
|
"testing"
|
|
)
|
|
|
|
type fileTest struct {
|
|
file string
|
|
hdr FileHeader
|
|
sections []*SectionHeader
|
|
}
|
|
|
|
var fileTests = []fileTest{
|
|
{
|
|
"testdata/386-plan9-exec",
|
|
FileHeader{Magic386, 0x324, 0x14, 4, 0x1000, 32},
|
|
[]*SectionHeader{
|
|
{"text", 0x4c5f, 0x20},
|
|
{"data", 0x94c, 0x4c7f},
|
|
{"syms", 0x2c2b, 0x55cb},
|
|
{"spsz", 0x0, 0x81f6},
|
|
{"pcsz", 0xf7a, 0x81f6},
|
|
},
|
|
},
|
|
{
|
|
"testdata/amd64-plan9-exec",
|
|
FileHeader{MagicAMD64, 0x618, 0x13, 8, 0x200000, 40},
|
|
[]*SectionHeader{
|
|
{"text", 0x4213, 0x28},
|
|
{"data", 0xa80, 0x423b},
|
|
{"syms", 0x2c8c, 0x4cbb},
|
|
{"spsz", 0x0, 0x7947},
|
|
{"pcsz", 0xca0, 0x7947},
|
|
},
|
|
},
|
|
}
|
|
|
|
func TestOpen(t *testing.T) {
|
|
for i := range fileTests {
|
|
tt := &fileTests[i]
|
|
|
|
f, err := Open(tt.file)
|
|
if err != nil {
|
|
t.Error(err)
|
|
continue
|
|
}
|
|
if !reflect.DeepEqual(f.FileHeader, tt.hdr) {
|
|
t.Errorf("open %s:\n\thave %#v\n\twant %#v\n", tt.file, f.FileHeader, tt.hdr)
|
|
continue
|
|
}
|
|
|
|
for i, sh := range f.Sections {
|
|
if i >= len(tt.sections) {
|
|
break
|
|
}
|
|
have := &sh.SectionHeader
|
|
want := tt.sections[i]
|
|
if !reflect.DeepEqual(have, want) {
|
|
t.Errorf("open %s, section %d:\n\thave %#v\n\twant %#v\n", tt.file, i, have, want)
|
|
}
|
|
}
|
|
tn := len(tt.sections)
|
|
fn := len(f.Sections)
|
|
if tn != fn {
|
|
t.Errorf("open %s: len(Sections) = %d, want %d", tt.file, fn, tn)
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestOpenFailure(t *testing.T) {
|
|
filename := "file.go" // not a Plan 9 a.out file
|
|
_, err := Open(filename) // don't crash
|
|
if err == nil {
|
|
t.Errorf("open %s: succeeded unexpectedly", filename)
|
|
}
|
|
}
|