2019-11-08 01:37:21 -05:00
|
|
|
package tests
|
|
|
|
|
|
|
|
import (
|
2019-11-08 19:52:49 -05:00
|
|
|
"log"
|
2019-11-08 01:37:21 -05:00
|
|
|
"path"
|
|
|
|
"strings"
|
|
|
|
"testing"
|
|
|
|
|
2019-11-08 19:52:49 -05:00
|
|
|
"github.com/OpenDiablo2/OpenDiablo2/core"
|
|
|
|
|
2019-11-08 01:37:21 -05:00
|
|
|
"github.com/OpenDiablo2/OpenDiablo2/mpq"
|
|
|
|
|
|
|
|
"github.com/OpenDiablo2/OpenDiablo2/common"
|
|
|
|
)
|
|
|
|
|
|
|
|
func TestMPQScanPerformance(t *testing.T) {
|
2019-11-08 19:52:49 -05:00
|
|
|
log.SetFlags(log.Ldate | log.LUTC | log.Lmicroseconds | log.Llongfile)
|
2019-11-08 01:37:21 -05:00
|
|
|
mpq.InitializeCryptoBuffer()
|
|
|
|
common.ConfigBasePath = "../"
|
|
|
|
config := common.LoadConfiguration()
|
2019-11-08 19:52:49 -05:00
|
|
|
engine := core.CreateEngine()
|
2019-11-08 01:37:21 -05:00
|
|
|
for _, fileName := range config.MpqLoadOrder {
|
|
|
|
mpqFile := path.Join(config.MpqPath, fileName)
|
|
|
|
archive, _ := mpq.Load(mpqFile)
|
|
|
|
files, err := archive.GetFileList()
|
|
|
|
if err != nil {
|
|
|
|
continue
|
|
|
|
}
|
|
|
|
for _, archiveFile := range files {
|
|
|
|
// Temporary until all audio formats are supported
|
|
|
|
if strings.Contains(archiveFile, ".wav") || strings.Contains(archiveFile, ".pif") {
|
|
|
|
continue
|
|
|
|
}
|
2019-11-08 19:52:49 -05:00
|
|
|
parts := strings.Split(archiveFile, ".")
|
|
|
|
switch strings.ToLower(parts[len(parts)-1]) {
|
|
|
|
case "coff":
|
|
|
|
_ = common.LoadCof(archiveFile, engine)
|
|
|
|
case "dcc":
|
|
|
|
if strings.ContainsAny(archiveFile, "common") {
|
|
|
|
continue
|
|
|
|
}
|
|
|
|
_ = common.LoadDCC(archiveFile, engine)
|
|
|
|
}
|
|
|
|
|
2019-11-08 01:37:21 -05:00
|
|
|
_, _ = archive.ReadFile(archiveFile)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|