aa8901e9bb
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/193497 From-SVN: r275473
80 lines
1.7 KiB
Go
80 lines
1.7 KiB
Go
// Copyright 2018 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 xcoff
|
|
|
|
import (
|
|
"reflect"
|
|
"testing"
|
|
)
|
|
|
|
type archiveTest struct {
|
|
file string
|
|
hdr ArchiveHeader
|
|
members []*MemberHeader
|
|
membersFileHeader []FileHeader
|
|
}
|
|
|
|
var archTest = []archiveTest{
|
|
{
|
|
"testdata/bigar-ppc64",
|
|
ArchiveHeader{AIAMAGBIG},
|
|
[]*MemberHeader{
|
|
{"printbye.o", 836},
|
|
{"printhello.o", 860},
|
|
},
|
|
[]FileHeader{
|
|
{U64_TOCMAGIC},
|
|
{U64_TOCMAGIC},
|
|
},
|
|
},
|
|
{
|
|
"testdata/bigar-empty",
|
|
ArchiveHeader{AIAMAGBIG},
|
|
[]*MemberHeader{},
|
|
[]FileHeader{},
|
|
},
|
|
}
|
|
|
|
func TestOpenArchive(t *testing.T) {
|
|
for i := range archTest {
|
|
tt := &archTest[i]
|
|
arch, err := OpenArchive(tt.file)
|
|
if err != nil {
|
|
t.Error(err)
|
|
continue
|
|
}
|
|
if !reflect.DeepEqual(arch.ArchiveHeader, tt.hdr) {
|
|
t.Errorf("open archive %s:\n\thave %#v\n\twant %#v\n", tt.file, arch.ArchiveHeader, tt.hdr)
|
|
continue
|
|
}
|
|
|
|
for i, mem := range arch.Members {
|
|
if i >= len(tt.members) {
|
|
break
|
|
}
|
|
have := &mem.MemberHeader
|
|
want := tt.members[i]
|
|
if !reflect.DeepEqual(have, want) {
|
|
t.Errorf("open %s, member %d:\n\thave %#v\n\twant %#v\n", tt.file, i, have, want)
|
|
}
|
|
|
|
f, err := arch.GetFile(mem.Name)
|
|
if err != nil {
|
|
t.Error(err)
|
|
continue
|
|
}
|
|
if !reflect.DeepEqual(f.FileHeader, tt.membersFileHeader[i]) {
|
|
t.Errorf("open %s, member file header %d:\n\thave %#v\n\twant %#v\n", tt.file, i, f.FileHeader, tt.membersFileHeader[i])
|
|
}
|
|
}
|
|
tn := len(tt.members)
|
|
an := len(arch.Members)
|
|
if tn != an {
|
|
t.Errorf("open %s: len(Members) = %d, want %d", tt.file, an, tn)
|
|
}
|
|
|
|
}
|
|
}
|