private static string CheckOffsetTranslatation(string swcName, byte[] original, AbcFile abc) { byte[] result; int index; foreach (var body in abc.MethodBodies) { var code = body.IL; code.TranslateOffsets(); code.TranslateIndicesEnabled = true; code.TranslateIndices(); } try { result = abc.ToByteArray(); } catch (Exception e) { return(string.Format("Unable to serialize ABC file.\nException: {0}", e)); } string err = CompareTools.CompareByteArrays(original, result, out index); if (!string.IsNullOrEmpty(err)) { return("SWC: " + swcName + ". ABC: " + abc.Name + "." + err); } return(err); }
static string Test(string swcName, byte[] original) { AbcFile abc; try { abc = new AbcFile(original); } catch (Exception e) { return(string.Format("Unable to load ABC file.\nException: {0}", e)); } byte[] result; try { result = abc.ToByteArray(); } catch (Exception e) { return(string.Format("Unable to serialize ABC file.\nException: {0}", e)); } int index; string err = CompareTools.CompareByteArrays(original, result, out index); if (!string.IsNullOrEmpty(err)) { return("SWC: " + swcName + ". ABC: " + abc.Name + "." + err); } //NOTE: Test below is not passed //err = CheckOffsetTranslatation(swcName, original, abc); return(err); }