public void TestMethod6()
        {
            var data          = Initialize();
            var host          = data.Item1;
            var assembly      = data.Item2;
            var refAssemblies = data.Item3;

            var scopeAnalysis = new ScopeAnalysis(host, assembly, refAssemblies, null);

            scopeAnalysis.Analyze();
            var results            = scopeAnalysis.Results;
            var interestingResults = results.Where(r => r.Interesting && !r.Failed).ToList();

            //Check that all reducers in PeriScope.dll have been analyzed successfuly.
            Assert.AreEqual(interestingResults.Count(), 11);
        }
        public void TestMethod5()
        {
            var data               = Initialize();
            var host               = data.Item1;
            var assembly           = data.Item2;
            var refAssemblies      = data.Item3;
            var interestingReducer = new HashSet <string>()
            {
            };

            var scopeAnalysis = new ScopeAnalysis(host, assembly, refAssemblies, interestingReducer);

            scopeAnalysis.Analyze();
            var results            = scopeAnalysis.Results;
            var interestingResults = results.Where(r => r.Interesting).ToList();

            Assert.AreEqual(interestingResults.Count(), 0);
        }
        public void TestMethod2()
        {
            var data               = Initialize();
            var host               = data.Item1;
            var assembly           = data.Item2;
            var refAssemblies      = data.Item3;
            var interestingReducer = new HashSet <string>()
            {
                "PeriScope.FineNoEscapeByField2"
            };

            var scopeAnalysis = new ScopeAnalysis(host, assembly, refAssemblies, interestingReducer);

            scopeAnalysis.Analyze();
            var results = scopeAnalysis.Results;

            var interestingResults = results.Where(r => r.Interesting).ToList();

            Assert.AreEqual(interestingResults.Count, interestingReducer.Count);

            var result = interestingResults.ElementAt(0);

            Assert.IsFalse(result.EscapeSummary.IsTop);
            Assert.IsFalse(result.UsedColumnsSummary.IsBottom);
            Assert.IsFalse(result.UsedColumnsSummary.IsTop);

            var columns = ColumnIndicesAsStrings(result.UsedColumnsSummary);

            Assert.IsTrue(columns.Count == 1);

            var expected = new HashSet <string>()
            {
                "count"
            };

            Assert.IsTrue(columns.SetEquals(expected));
        }
        public void TestMethod7()
        {
            var data               = Initialize();
            var host               = data.Item1;
            var assembly           = data.Item2;
            var refAssemblies      = data.Item3;
            var interestingReducer = new HashSet <string>()
            {
                "PeriScope.BadCallIEnumerableRowMethod", "PeriScope.BadSetOutterField",
                "PeriScope.BadSetStaticField", "PeriScope.BadEscapeByCall", "PeriScope.BadEscapeByRecursion"
            };

            var scopeAnalysis = new ScopeAnalysis(host, assembly, refAssemblies, interestingReducer);

            scopeAnalysis.Analyze();
            var results            = scopeAnalysis.Results;
            var interestingResults = results.Where(r => r.Interesting).ToList();

            Assert.AreEqual(interestingResults.Count(), interestingReducer.Count);
            foreach (var r in interestingResults)
            {
                Assert.IsTrue(r.EscapeSummary.IsTop);
            }
        }