示例#1
0
        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);
        }
示例#2
0
        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);
        }