public static Task<List<string>> TestData(string carDir, double weight) {
return Task.Run(() => {
var errors = new List<string>();
try {
var acdFile = Path.Combine(carDir, "data.acd");
var acd = File.Exists(acdFile) ? Acd.FromFile(acdFile) : null;
var aeroIni = new IniFile(carDir, "aero.ini", acd);
if (aeroIni.ContainsKey("DATA")) {
errors.Add("acd-obsolete-aero-data");
}
if (weight > 0) {
var carIni = new IniFile(carDir, "car.ini", acd);
if (Math.Abs(weight + 75.0 - carIni["BASIC"].GetDouble("TOTALMASS", 0d)) > 90.0) {
errors.Add("acd-invalid-weight");
}
}
} catch (Exception) {
errors.Add("acd-test-error");
}
GC.Collect();
return errors;
});
}