public void OpRRITest() { var Results = new Queue<int>(); var InstructionNames = new[] { "addi", "addiu", "andi", "ori", "xori" }; var Numbers = new int[] { 0, 0, 1, -99999, 77777, -1, 0x12345678, unchecked((int)0x87654321), int.MaxValue, int.MaxValue - 1, int.MinValue, int.MinValue + 1 }; int ResultOffset = 17; int InputOffset = 0; foreach (var instructionName in InstructionNames) { for (int n = 0; n < Numbers.Length; n++) { string Assembly = ""; for (int m = 0; m < Numbers.Length; m++) { CpuThreadState.GPR[InputOffset + m] = Numbers[m]; Assembly += String.Format( "{0} r{1}, r{2}, {3}\n", instructionName, m + ResultOffset, n + InputOffset, (Numbers[m] & 0xFFFF) ); } //Console.WriteLine("{0}", Assembly); ExecuteAssembly(Assembly); for (int m = 0; m < Numbers.Length; m++) { Results.Enqueue(CpuThreadState.GPR[m + ResultOffset]); } } } var ExpectedLines = new Queue<string>(stringToLines(@" addi.0: 0,0,1,31073,12241,-1,22136,17185,-1,-2,0,1, addi.0: 0,0,1,31073,12241,-1,22136,17185,-1,-2,0,1, addi.1: 1,1,2,31074,12242,0,22137,17186,0,-1,1,2, addi.-99999: -99999,-99999,-99998,-68926,-87758,-100000,-77863,-82814,-100000,-100001,-99999,-99998, addi.77777: 77777,77777,77778,108850,90018,77776,99913,94962,77776,77775,77777,77778, addi.-1: -1,-1,0,31072,12240,-2,22135,17184,-2,-3,-1,0, addi.305419896: 305419896,305419896,305419897,305450969,305432137,305419895,305442032,305437081,305419895,305419894,305419896,305419897, addi.-2023406815: -2023406815,-2023406815,-2023406814,-2023375742,-2023394574,-2023406816,-2023384679,-2023389630,-2023406816,-2023406817,-2023406815,-2023406814, addi.2147483647: 2147483647,2147483647,-2147483648,-2147452576,-2147471408,2147483646,-2147461513,-2147466464,2147483646,2147483645,2147483647,-2147483648, addi.2147483646: 2147483646,2147483646,2147483647,-2147452577,-2147471409,2147483645,-2147461514,-2147466465,2147483645,2147483644,2147483646,2147483647, addi.-2147483648: -2147483648,-2147483648,-2147483647,-2147452575,-2147471407,2147483647,-2147461512,-2147466463,2147483647,2147483646,-2147483648,-2147483647, addi.-2147483647: -2147483647,-2147483647,-2147483646,-2147452574,-2147471406,-2147483648,-2147461511,-2147466462,-2147483648,2147483647,-2147483647,-2147483646, addiu.0: 0,0,1,31073,12241,-1,22136,17185,-1,-2,0,1, addiu.0: 0,0,1,31073,12241,-1,22136,17185,-1,-2,0,1, addiu.1: 1,1,2,31074,12242,0,22137,17186,0,-1,1,2, addiu.-99999: -99999,-99999,-99998,-68926,-87758,-100000,-77863,-82814,-100000,-100001,-99999,-99998, addiu.77777: 77777,77777,77778,108850,90018,77776,99913,94962,77776,77775,77777,77778, addiu.-1: -1,-1,0,31072,12240,-2,22135,17184,-2,-3,-1,0, addiu.305419896: 305419896,305419896,305419897,305450969,305432137,305419895,305442032,305437081,305419895,305419894,305419896,305419897, addiu.-2023406815: -2023406815,-2023406815,-2023406814,-2023375742,-2023394574,-2023406816,-2023384679,-2023389630,-2023406816,-2023406817,-2023406815,-2023406814, addiu.2147483647: 2147483647,2147483647,-2147483648,-2147452576,-2147471408,2147483646,-2147461513,-2147466464,2147483646,2147483645,2147483647,-2147483648, addiu.2147483646: 2147483646,2147483646,2147483647,-2147452577,-2147471409,2147483645,-2147461514,-2147466465,2147483645,2147483644,2147483646,2147483647, addiu.-2147483648: -2147483648,-2147483648,-2147483647,-2147452575,-2147471407,2147483647,-2147461512,-2147466463,2147483647,2147483646,-2147483648,-2147483647, addiu.-2147483647: -2147483647,-2147483647,-2147483646,-2147452574,-2147471406,-2147483648,-2147461511,-2147466462,-2147483648,2147483647,-2147483647,-2147483646, andi.0: 0,0,0,0,0,0,0,0,0,0,0,0, andi.0: 0,0,0,0,0,0,0,0,0,0,0,0, andi.1: 0,0,1,1,1,1,0,1,1,0,0,1, andi.-99999: 0,0,1,31073,10561,31073,20576,16673,31073,31072,0,1, andi.77777: 0,0,1,10561,12241,12241,1616,769,12241,12240,0,1, andi.-1: 0,0,1,31073,12241,65535,22136,17185,65535,65534,0,1, andi.305419896: 0,0,0,20576,1616,22136,22136,16928,22136,22136,0,0, andi.-2023406815: 0,0,1,16673,769,17185,16928,17185,17185,17184,0,1, andi.2147483647: 0,0,1,31073,12241,65535,22136,17185,65535,65534,0,1, andi.2147483646: 0,0,0,31072,12240,65534,22136,17184,65534,65534,0,0, andi.-2147483648: 0,0,0,0,0,0,0,0,0,0,0,0, andi.-2147483647: 0,0,1,1,1,1,0,1,1,0,0,1, ori.0: 0,0,1,31073,12241,65535,22136,17185,65535,65534,0,1, ori.0: 0,0,1,31073,12241,65535,22136,17185,65535,65534,0,1, ori.1: 1,1,1,31073,12241,65535,22137,17185,65535,65535,1,1, ori.-99999: -99999,-99999,-99999,-99999,-98319,-65537,-98439,-99487,-65537,-65537,-99999,-99999, ori.77777: 77777,77777,77777,98289,77777,131071,98297,94193,131071,131071,77777,77777, ori.-1: -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, ori.305419896: 305419896,305419896,305419897,305430393,305430521,305463295,305419896,305420153,305463295,305463294,305419896,305419897, ori.-2023406815: -2023406815,-2023406815,-2023406815,-2023392415,-2023395343,-2023358465,-2023401607,-2023406815,-2023358465,-2023358465,-2023406815,-2023406815, ori.2147483647: 2147483647,2147483647,2147483647,2147483647,2147483647,2147483647,2147483647,2147483647,2147483647,2147483647,2147483647,2147483647, ori.2147483646: 2147483646,2147483646,2147483647,2147483647,2147483647,2147483647,2147483646,2147483647,2147483647,2147483646,2147483646,2147483647, ori.-2147483648: -2147483648,-2147483648,-2147483647,-2147452575,-2147471407,-2147418113,-2147461512,-2147466463,-2147418113,-2147418114,-2147483648,-2147483647, ori.-2147483647: -2147483647,-2147483647,-2147483647,-2147452575,-2147471407,-2147418113,-2147461511,-2147466463,-2147418113,-2147418113,-2147483647,-2147483647, xori.0: 0,0,1,31073,12241,65535,22136,17185,65535,65534,0,1, xori.0: 0,0,1,31073,12241,65535,22136,17185,65535,65534,0,1, xori.1: 1,1,0,31072,12240,65534,22137,17184,65534,65535,1,0, xori.-99999: -99999,-99999,-100000,-131072,-108880,-96610,-119015,-116160,-96610,-96609,-99999,-100000, xori.77777: 77777,77777,77776,87728,65536,118830,96681,93424,118830,118831,77777,77776, xori.-1: -1,-1,-2,-31074,-12242,-65536,-22137,-17186,-65536,-65535,-1,-2, xori.305419896: 305419896,305419896,305419897,305409817,305428905,305441159,305397760,305403225,305441159,305441158,305419896,305419897, xori.-2023406815: -2023406815,-2023406815,-2023406816,-2023409088,-2023396112,-2023375650,-2023418535,-2023424000,-2023375650,-2023375649,-2023406815,-2023406816, xori.2147483647: 2147483647,2147483647,2147483646,2147452574,2147471406,2147418112,2147461511,2147466462,2147418112,2147418113,2147483647,2147483646, xori.2147483646: 2147483646,2147483646,2147483647,2147452575,2147471407,2147418113,2147461510,2147466463,2147418113,2147418112,2147483646,2147483647, xori.-2147483648: -2147483648,-2147483648,-2147483647,-2147452575,-2147471407,-2147418113,-2147461512,-2147466463,-2147418113,-2147418114,-2147483648,-2147483647, xori.-2147483647: -2147483647,-2147483647,-2147483648,-2147452576,-2147471408,-2147418114,-2147461511,-2147466464,-2147418114,-2147418113,-2147483647,-2147483648, ")); foreach (var instructionName in InstructionNames) { foreach (var LeftNumber in Numbers) { var Line = String.Format("{0}.{1}: ", instructionName, LeftNumber); foreach (var RightNumber in Numbers) { Line += String.Format("{0},", Results.Dequeue()); } //Console.WriteLine(Line); Assert.AreEqual(ExpectedLines.Dequeue(), Line); } } }
public void BranchFullTest() { var RegsV = new[] { "r10, r10", "r10, r11", "r10, r12", "r11, r10", "r11, r11", "r11, r12", "r12, r10", "r12, r11", "r12, r12", }; var Regs0 = new[] { "r10", "r11", "r12", }; Func<String, String[], IEnumerable<int>> Generator = (String Branch, String[] RegsList) => { var Results = new List<int>(); foreach (var Regs in RegsList) { ExecuteAssembly( @" li r10, -1 li r11, 0 li r12, +1 %BRANCH% %REGS%, label_yes li r1, 2 b label_no nop label_yes: li r1, 1 b label_end nop label_no: li r1, 0 b label_end nop label_end: nop " .Replace("%BRANCH%", Branch) .Replace("%REGS%", Regs) ); Results.Add(CpuThreadState.GPR[1]); } return Results; }; Assert.AreEqual("[1,0,0,0,1,0,0,0,1]", Generator("beq", RegsV).ToJson()); Assert.AreEqual("[0,1,1,1,0,1,1,1,0]", Generator("bne", RegsV).ToJson()); Assert.AreEqual("[1,0,0]", Generator("bltz", Regs0).ToJson()); Assert.AreEqual("[1,1,0]", Generator("blez", Regs0).ToJson()); Assert.AreEqual("[0,0,1]", Generator("bgtz", Regs0).ToJson()); Assert.AreEqual("[0,1,1]", Generator("bgez", Regs0).ToJson()); //Assert.AreEqual("[0,0,1]", Generator("bgtzl", Regs0).ToJson()); }
public void OpRRRTest() { var Results = new Queue<int>(); var InstructionNames = new[] { "add", "addu", "sub", "subu", "and", "or", "xor", "nor" }; var Numbers = new int[] { 0, 0, 1, -99999, 77777, -1, 0x12345678, unchecked((int)0x87654321), int.MaxValue, int.MaxValue - 1, int.MinValue, int.MinValue + 1 }; int ResultOffset = 17; int InputOffset = 0; foreach (var instructionName in InstructionNames) { for (int n = 0; n < Numbers.Length; n++) { string Assembly = ""; for (int m = 0; m < Numbers.Length; m++) { CpuThreadState.GPR[InputOffset + m] = Numbers[m]; Assembly += String.Format( "{0} r{1}, r{2}, r{3}\n", instructionName, m + ResultOffset, n + InputOffset, m + InputOffset ); } //Console.WriteLine("{0}", Assembly); ExecuteAssembly(Assembly); for (int m = 0; m < Numbers.Length; m++) { Results.Enqueue(CpuThreadState.GPR[m + ResultOffset]); } } } var ExpectedLines = new Queue<string>(stringToLines(@" add.0: 0,0,1,-99999,77777,-1,305419896,-2023406815,2147483647,2147483646,-2147483648,-2147483647, add.0: 0,0,1,-99999,77777,-1,305419896,-2023406815,2147483647,2147483646,-2147483648,-2147483647, add.1: 1,1,2,-99998,77778,0,305419897,-2023406814,-2147483648,2147483647,-2147483647,-2147483646, add.-99999: -99999,-99999,-99998,-199998,-22222,-100000,305319897,-2023506814,2147383648,2147383647,2147383649,2147383650, add.77777: 77777,77777,77778,-22222,155554,77776,305497673,-2023329038,-2147405872,-2147405873,-2147405871,-2147405870, add.-1: -1,-1,0,-100000,77776,-2,305419895,-2023406816,2147483646,2147483645,2147483647,-2147483648, add.305419896: 305419896,305419896,305419897,305319897,305497673,305419895,610839792,-1717986919,-1842063753,-1842063754,-1842063752,-1842063751, add.-2023406815: -2023406815,-2023406815,-2023406814,-2023506814,-2023329038,-2023406816,-1717986919,248153666,124076832,124076831,124076833,124076834, add.2147483647: 2147483647,2147483647,-2147483648,2147383648,-2147405872,2147483646,-1842063753,124076832,-2,-3,-1,0, add.2147483646: 2147483646,2147483646,2147483647,2147383647,-2147405873,2147483645,-1842063754,124076831,-3,-4,-2,-1, add.-2147483648: -2147483648,-2147483648,-2147483647,2147383649,-2147405871,2147483647,-1842063752,124076833,-1,-2,0,1, add.-2147483647: -2147483647,-2147483647,-2147483646,2147383650,-2147405870,-2147483648,-1842063751,124076834,0,-1,1,2, addu.0: 0,0,1,-99999,77777,-1,305419896,-2023406815,2147483647,2147483646,-2147483648,-2147483647, addu.0: 0,0,1,-99999,77777,-1,305419896,-2023406815,2147483647,2147483646,-2147483648,-2147483647, addu.1: 1,1,2,-99998,77778,0,305419897,-2023406814,-2147483648,2147483647,-2147483647,-2147483646, addu.-99999: -99999,-99999,-99998,-199998,-22222,-100000,305319897,-2023506814,2147383648,2147383647,2147383649,2147383650, addu.77777: 77777,77777,77778,-22222,155554,77776,305497673,-2023329038,-2147405872,-2147405873,-2147405871,-2147405870, addu.-1: -1,-1,0,-100000,77776,-2,305419895,-2023406816,2147483646,2147483645,2147483647,-2147483648, addu.305419896: 305419896,305419896,305419897,305319897,305497673,305419895,610839792,-1717986919,-1842063753,-1842063754,-1842063752,-1842063751, addu.-2023406815: -2023406815,-2023406815,-2023406814,-2023506814,-2023329038,-2023406816,-1717986919,248153666,124076832,124076831,124076833,124076834, addu.2147483647: 2147483647,2147483647,-2147483648,2147383648,-2147405872,2147483646,-1842063753,124076832,-2,-3,-1,0, addu.2147483646: 2147483646,2147483646,2147483647,2147383647,-2147405873,2147483645,-1842063754,124076831,-3,-4,-2,-1, addu.-2147483648: -2147483648,-2147483648,-2147483647,2147383649,-2147405871,2147483647,-1842063752,124076833,-1,-2,0,1, addu.-2147483647: -2147483647,-2147483647,-2147483646,2147383650,-2147405870,-2147483648,-1842063751,124076834,0,-1,1,2, sub.0: 0,0,-1,99999,-77777,1,-305419896,2023406815,-2147483647,-2147483646,-2147483648,2147483647, sub.0: 0,0,-1,99999,-77777,1,-305419896,2023406815,-2147483647,-2147483646,-2147483648,2147483647, sub.1: 1,1,0,100000,-77776,2,-305419895,2023406816,-2147483646,-2147483645,-2147483647,-2147483648, sub.-99999: -99999,-99999,-100000,0,-177776,-99998,-305519895,2023306816,2147383650,2147383651,2147383649,2147383648, sub.77777: 77777,77777,77776,177776,0,77778,-305342119,2023484592,-2147405870,-2147405869,-2147405871,-2147405872, sub.-1: -1,-1,-2,99998,-77778,0,-305419897,2023406814,-2147483648,-2147483647,2147483647,2147483646, sub.305419896: 305419896,305419896,305419895,305519895,305342119,305419897,0,-1966140585,-1842063751,-1842063750,-1842063752,-1842063753, sub.-2023406815: -2023406815,-2023406815,-2023406816,-2023306816,-2023484592,-2023406814,1966140585,0,124076834,124076835,124076833,124076832, sub.2147483647: 2147483647,2147483647,2147483646,-2147383650,2147405870,-2147483648,1842063751,-124076834,0,1,-1,-2, sub.2147483646: 2147483646,2147483646,2147483645,-2147383651,2147405869,2147483647,1842063750,-124076835,-1,0,-2,-3, sub.-2147483648: -2147483648,-2147483648,2147483647,-2147383649,2147405871,-2147483647,1842063752,-124076833,1,2,0,-1, sub.-2147483647: -2147483647,-2147483647,-2147483648,-2147383648,2147405872,-2147483646,1842063753,-124076832,2,3,1,0, subu.0: 0,0,-1,99999,-77777,1,-305419896,2023406815,-2147483647,-2147483646,-2147483648,2147483647, subu.0: 0,0,-1,99999,-77777,1,-305419896,2023406815,-2147483647,-2147483646,-2147483648,2147483647, subu.1: 1,1,0,100000,-77776,2,-305419895,2023406816,-2147483646,-2147483645,-2147483647,-2147483648, subu.-99999: -99999,-99999,-100000,0,-177776,-99998,-305519895,2023306816,2147383650,2147383651,2147383649,2147383648, subu.77777: 77777,77777,77776,177776,0,77778,-305342119,2023484592,-2147405870,-2147405869,-2147405871,-2147405872, subu.-1: -1,-1,-2,99998,-77778,0,-305419897,2023406814,-2147483648,-2147483647,2147483647,2147483646, subu.305419896: 305419896,305419896,305419895,305519895,305342119,305419897,0,-1966140585,-1842063751,-1842063750,-1842063752,-1842063753, subu.-2023406815: -2023406815,-2023406815,-2023406816,-2023306816,-2023484592,-2023406814,1966140585,0,124076834,124076835,124076833,124076832, subu.2147483647: 2147483647,2147483647,2147483646,-2147383650,2147405870,-2147483648,1842063751,-124076834,0,1,-1,-2, subu.2147483646: 2147483646,2147483646,2147483645,-2147383651,2147405869,2147483647,1842063750,-124076835,-1,0,-2,-3, subu.-2147483648: -2147483648,-2147483648,2147483647,-2147383649,2147405871,-2147483647,1842063752,-124076833,1,2,0,-1, subu.-2147483647: -2147483647,-2147483647,-2147483648,-2147383648,2147405872,-2147483646,1842063753,-124076832,2,3,1,0, and.0: 0,0,0,0,0,0,0,0,0,0,0,0, and.0: 0,0,0,0,0,0,0,0,0,0,0,0, and.1: 0,0,1,1,1,1,0,1,1,0,0,1, and.-99999: 0,0,1,-99999,10561,-99999,305418336,-2023472863,2147383649,2147383648,-2147483648,-2147483647, and.77777: 0,0,1,10561,77777,77777,1616,66305,77777,77776,0,1, and.-1: 0,0,1,-99999,77777,-1,305419896,-2023406815,2147483647,2147483646,-2147483648,-2147483647, and.305419896: 0,0,0,305418336,1616,305419896,305419896,35930656,305419896,305419896,0,0, and.-2023406815: 0,0,1,-2023472863,66305,-2023406815,35930656,-2023406815,124076833,124076832,-2147483648,-2147483647, and.2147483647: 0,0,1,2147383649,77777,2147483647,305419896,124076833,2147483647,2147483646,0,1, and.2147483646: 0,0,0,2147383648,77776,2147483646,305419896,124076832,2147483646,2147483646,0,0, and.-2147483648: 0,0,0,-2147483648,0,-2147483648,0,-2147483648,0,0,-2147483648,-2147483648, and.-2147483647: 0,0,1,-2147483647,1,-2147483647,0,-2147483647,1,0,-2147483648,-2147483647, or.0: 0,0,1,-99999,77777,-1,305419896,-2023406815,2147483647,2147483646,-2147483648,-2147483647, or.0: 0,0,1,-99999,77777,-1,305419896,-2023406815,2147483647,2147483646,-2147483648,-2147483647, or.1: 1,1,1,-99999,77777,-1,305419897,-2023406815,2147483647,2147483647,-2147483647,-2147483647, or.-99999: -99999,-99999,-99999,-99999,-32783,-1,-98439,-33951,-1,-1,-99999,-99999, or.77777: 77777,77777,77777,-32783,77777,-1,305496057,-2023395343,2147483647,2147483647,-2147405871,-2147405871, or.-1: -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, or.305419896: 305419896,305419896,305419897,-98439,305496057,-1,305419896,-1753917575,2147483647,2147483646,-1842063752,-1842063751, or.-2023406815: -2023406815,-2023406815,-2023406815,-33951,-2023395343,-1,-1753917575,-2023406815,-1,-1,-2023406815,-2023406815, or.2147483647: 2147483647,2147483647,2147483647,-1,2147483647,-1,2147483647,-1,2147483647,2147483647,-1,-1, or.2147483646: 2147483646,2147483646,2147483647,-1,2147483647,-1,2147483646,-1,2147483647,2147483646,-2,-1, or.-2147483648: -2147483648,-2147483648,-2147483647,-99999,-2147405871,-1,-1842063752,-2023406815,-1,-2,-2147483648,-2147483647, or.-2147483647: -2147483647,-2147483647,-2147483647,-99999,-2147405871,-1,-1842063751,-2023406815,-1,-1,-2147483647,-2147483647, xor.0: 0,0,1,-99999,77777,-1,305419896,-2023406815,2147483647,2147483646,-2147483648,-2147483647, xor.0: 0,0,1,-99999,77777,-1,305419896,-2023406815,2147483647,2147483646,-2147483648,-2147483647, xor.1: 1,1,0,-100000,77776,-2,305419897,-2023406816,2147483646,2147483647,-2147483647,-2147483648, xor.-99999: -99999,-99999,-100000,0,-43344,99998,-305516775,2023438912,-2147383650,-2147383649,2147383649,2147383648, xor.77777: 77777,77777,77776,-43344,0,-77778,305494441,-2023461648,2147405870,2147405871,-2147405871,-2147405872, xor.-1: -1,-1,-2,99998,-77778,0,-305419897,2023406814,-2147483648,-2147483647,2147483647,2147483646, xor.305419896: 305419896,305419896,305419897,-305516775,305494441,-305419897,0,-1789848231,1842063751,1842063750,-1842063752,-1842063751, xor.-2023406815: -2023406815,-2023406815,-2023406816,2023438912,-2023461648,2023406814,-1789848231,0,-124076834,-124076833,124076833,124076832, xor.2147483647: 2147483647,2147483647,2147483646,-2147383650,2147405870,-2147483648,1842063751,-124076834,0,1,-1,-2, xor.2147483646: 2147483646,2147483646,2147483647,-2147383649,2147405871,-2147483647,1842063750,-124076833,1,0,-2,-1, xor.-2147483648: -2147483648,-2147483648,-2147483647,2147383649,-2147405871,2147483647,-1842063752,124076833,-1,-2,0,1, xor.-2147483647: -2147483647,-2147483647,-2147483648,2147383648,-2147405872,2147483646,-1842063751,124076832,-2,-1,1,0, nor.0: -1,-1,-2,99998,-77778,0,-305419897,2023406814,-2147483648,-2147483647,2147483647,2147483646, nor.0: -1,-1,-2,99998,-77778,0,-305419897,2023406814,-2147483648,-2147483647,2147483647,2147483646, nor.1: -2,-2,-2,99998,-77778,0,-305419898,2023406814,-2147483648,-2147483648,2147483646,2147483646, nor.-99999: 99998,99998,99998,99998,32782,0,98438,33950,0,0,99998,99998, nor.77777: -77778,-77778,-77778,32782,-77778,0,-305496058,2023395342,-2147483648,-2147483648,2147405870,2147405870, nor.-1: 0,0,0,0,0,0,0,0,0,0,0,0, nor.305419896: -305419897,-305419897,-305419898,98438,-305496058,0,-305419897,1753917574,-2147483648,-2147483647,1842063751,1842063750, nor.-2023406815: 2023406814,2023406814,2023406814,33950,2023395342,0,1753917574,2023406814,0,0,2023406814,2023406814, nor.2147483647: -2147483648,-2147483648,-2147483648,0,-2147483648,0,-2147483648,0,-2147483648,-2147483648,0,0, nor.2147483646: -2147483647,-2147483647,-2147483648,0,-2147483648,0,-2147483647,0,-2147483648,-2147483647,1,0, nor.-2147483648: 2147483647,2147483647,2147483646,99998,2147405870,0,1842063751,2023406814,0,1,2147483647,2147483646, nor.-2147483647: 2147483646,2147483646,2147483646,99998,2147405870,0,1842063750,2023406814,0,0,2147483646,2147483646, ")); foreach (var instructionName in InstructionNames) { foreach (var LeftNumber in Numbers) { var Line = String.Format("{0}.{1}: ", instructionName, LeftNumber); foreach (var RightNumber in Numbers) { Line += String.Format("{0},", Results.Dequeue()); } Console.WriteLine(Line); //Assert.AreEqual(ExpectedLines.Dequeue(), Line); } } }