| | |
| | |
| | |
| |
|
| | 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" |
| | _, err := Open(filename) |
| | if err == nil { |
| | t.Errorf("open %s: succeeded unexpectedly", filename) |
| | } |
| | } |
| |
|