コード例 #1
0
        static MemorySizeInfoTestCase ParseLine(string line, int lineNo)
        {
            Static.Assert(MiscInstrInfoTestConstants.MemorySizeElemsPerLine == 6 ? 0 : -1);
            var elems = line.Split(commaSeparator, MiscInstrInfoTestConstants.MemorySizeElemsPerLine);

            if (elems.Length != MiscInstrInfoTestConstants.MemorySizeElemsPerLine)
            {
                throw new Exception($"Expected {MiscInstrInfoTestConstants.MemorySizeElemsPerLine - 1} commas");
            }

            var tc = new MemorySizeInfoTestCase();

            tc.LineNumber   = lineNo;
            tc.MemorySize   = ToEnumConverter.GetMemorySize(elems[0].Trim());
            tc.Size         = NumberConverter.ToInt32(elems[1].Trim());
            tc.ElementSize  = NumberConverter.ToInt32(elems[2].Trim());
            tc.ElementType  = ToEnumConverter.GetMemorySize(elems[3].Trim());
            tc.ElementCount = NumberConverter.ToInt32(elems[4].Trim());
            foreach (var value in elems[5].Split(spaceSeparator, StringSplitOptions.RemoveEmptyEntries))
            {
                if (!InstructionInfoDicts.MemorySizeFlagsTable.TryGetValue(value, out var flags))
                {
                    throw new InvalidOperationException($"Invalid flags value: {value}");
                }
                tc.Flags |= flags;
            }
            return(tc);
        }