Fix Windows Wrappers and Extensions
This commit is contained in:
+60
-4
@@ -114,13 +114,69 @@ var extensionTypes = map[string]uint16{
|
||||
"png": 0x083E,
|
||||
}
|
||||
|
||||
var typeExtensions map[uint16]string
|
||||
var typeExtensions = map[uint16]string{
|
||||
0x0000: "res",
|
||||
0x0001: "bmp",
|
||||
0x0002: "mve",
|
||||
0x0003: "tga",
|
||||
0x0004: "wav",
|
||||
0x0006: "plt",
|
||||
0x0007: "ini",
|
||||
0x000A: "txt",
|
||||
0x07D2: "mdl",
|
||||
0x07D9: "nss",
|
||||
0x07DA: "ncs",
|
||||
0x07DC: "are",
|
||||
0x07DD: "set",
|
||||
0x07DE: "ifo",
|
||||
0x07DF: "bic",
|
||||
0x07E1: "wok",
|
||||
0x07E2: "2da",
|
||||
0x07E3: "tlk",
|
||||
0x07E6: "txi",
|
||||
0x07E7: "git",
|
||||
0x07E9: "uti",
|
||||
0x07EA: "utt",
|
||||
0x07EB: "utc",
|
||||
0x07ED: "dlg",
|
||||
0x07EE: "itp",
|
||||
0x07F0: "uts",
|
||||
0x07F1: "dds",
|
||||
0x07F6: "fac",
|
||||
0x07F7: "gff",
|
||||
0x07F9: "ute",
|
||||
0x07FB: "utd",
|
||||
0x07FC: "utp",
|
||||
0x07FD: "dfa",
|
||||
0x07FE: "gic",
|
||||
0x07FF: "gui",
|
||||
0x0800: "utm",
|
||||
0x0804: "dwk",
|
||||
0x0805: "pwk",
|
||||
0x0808: "jrl",
|
||||
0x080A: "utw",
|
||||
0x080C: "ssf",
|
||||
0x080D: "hak",
|
||||
0x080E: "nwm",
|
||||
0x080F: "bik",
|
||||
0x0810: "ndb",
|
||||
0x0811: "ptm",
|
||||
0x0812: "ptt",
|
||||
0x0813: "ltr",
|
||||
0x0815: "shd",
|
||||
0x0818: "mtr",
|
||||
0x081E: "lod",
|
||||
0x083E: "png",
|
||||
}
|
||||
|
||||
func init() {
|
||||
typeExtensions = make(map[uint16]string, len(extensionTypes))
|
||||
for ext, resourceType := range extensionTypes {
|
||||
if _, exists := typeExtensions[resourceType]; !exists {
|
||||
typeExtensions[resourceType] = ext
|
||||
canonicalExt, ok := typeExtensions[resourceType]
|
||||
if !ok {
|
||||
panic(fmt.Sprintf("missing canonical extension for resource type 0x%04X", resourceType))
|
||||
}
|
||||
if canonicalExt == ext {
|
||||
continue
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -28,3 +28,31 @@ func TestArchiveRoundTrip(t *testing.T) {
|
||||
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 != 0x07E2 {
|
||||
t.Fatalf("expected 2da type 0x07E2, 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 != 0x07E3 {
|
||||
t.Fatalf("expected tlk type 0x07E3, got 0x%04X", tlkType)
|
||||
}
|
||||
if tlkType == resourceType {
|
||||
t.Fatal("expected 2da and tlk resource types to stay distinct")
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user