示例#1
0
        public void WhileLoop_Should_Have4BasicBlocks()
        {
            var cfg = new CilControlFlowGraph(
                module: "sample-cil/common_constructs.exe",
                type: "common_constructs",
                method: "WhileLoop");

            // A simple while loop has 4 basic blocks.
            Assert.AreEqual(cfg.BasicBlocks.Count, 4);
        }
示例#2
0
        public void Ternary_Should_HaveSpecificCfg()
        {
            var cfg = new CilControlFlowGraph(
                module: "sample-cil/common_constructs.exe",
                type: "common_constructs",
                method: "Ternary");

            // Ternary has a specific cfg.
            Assert.AreEqual(cfg.BasicBlocks.Count, 4);
            Assert.AreEqual(cfg.EntryBasicBlock.OutBasicBlocks.First(),
                            cfg.BasicBlocks[1]);
            Assert.AreEqual(cfg.EntryBasicBlock.OutBasicBlocks.Last(),
                            cfg.BasicBlocks[2]);
            Assert.AreEqual(cfg.BasicBlocks[1].OutBasicBlocks.First(),
                            cfg.BasicBlocks[2].OutBasicBlocks.First());
            Assert.AreEqual(cfg.BasicBlocks[1].OutBasicBlocks.First(),
                            cfg.ExitBasicBlocks.First());
        }