CSPspEmu.Core.Tests.CpuEmitterTest.BranchFullTest C# (CSharp) Method

BranchFullTest() private method

private BranchFullTest ( ) : void
return void
        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());
        }