package erf import ( "bytes" "testing" ) func TestArchiveRoundTrip(t *testing.T) { archive := New("MOD ", []Resource{ {Name: "module", Type: 0x07DE, Data: []byte("ifo")}, {Name: "start", Type: 0x07DC, Data: []byte("are")}, }) var buf bytes.Buffer if err := Write(&buf, archive); err != nil { t.Fatalf("write: %v", err) } decoded, err := Read(bytes.NewReader(buf.Bytes())) if err != nil { t.Fatalf("read: %v", err) } if len(decoded.Resources) != 2 { t.Fatalf("expected 2 resources, got %d", len(decoded.Resources)) } if decoded.Resources[0].Name != "module" || string(decoded.Resources[0].Data) != "ifo" { t.Fatalf("unexpected first resource: %#v", decoded.Resources[0]) } } func TestExtensionMappingsKeep2DAAndTLKDistinct(t *testing.T) { resourceType, ok := ResourceTypeForExtension("2da") if !ok { t.Fatal("expected 2da resource type") } if resourceType != 0x07E1 { t.Fatalf("expected 2da type 0x07E1, got 0x%04X", resourceType) } extension, ok := ExtensionForResourceType(resourceType) if !ok { t.Fatal("expected canonical extension for 2da type") } if extension != "2da" { t.Fatalf("expected 2da extension, got %q", extension) } tlkType, ok := ResourceTypeForExtension("tlk") if !ok { t.Fatal("expected tlk resource type") } if tlkType != 0x07E2 { t.Fatalf("expected tlk type 0x07E2, got 0x%04X", tlkType) } if tlkType == resourceType { t.Fatal("expected 2da and tlk resource types to stay distinct") } }