public void FindUnreferencedAssemblies_UnreferencedAssemblies_WithNullInUnrefList() { var catalog = Substitute.For <IApiCatalogLookup>(); catalog.IsFrameworkAssembly(GetAssemblyIdentityWithoutCultureAndVersion(s_unreferencedAssemblies[0])).Returns(true); var recommendations = Substitute.For <IApiRecommendations>(); var engine = new AnalysisEngine(catalog, recommendations); var specifiedUserAssemblies = new List <AssemblyInfo>() { new AssemblyInfo() { FileVersion = "", AssemblyIdentity = "MyAssembly" } }; var listWithNulls = s_unreferencedAssemblies.Concat(new List <string>() { null }).ToList(); var unreferencedAssms = engine.FindUnreferencedAssemblies(listWithNulls, specifiedUserAssemblies).ToList(); // 0 missing assembly since Microsoft.CSharp is a fx assembly and we specified MyAssembly Assert.Empty(unreferencedAssms); }
public static void ComputeAssembliesToRemove_PackageFound() { // Arrange var userNuGetPackage = GetAssemblyInfo("NugetPackageAssembly", "2.0.5.0", isExplicitlySpecified: false); var inputAssemblies = new[] { GetAssemblyInfo("TestUserAssembly", "2.0.5.0", isExplicitlySpecified: true), userNuGetPackage, GetAssemblyInfo("TestUserLibrary", "5.0.0", isExplicitlySpecified: true), }; var targets = new[] { Windows81, NetStandard16 }; var packageId = "SomeNuGetPackage"; var packageVersion = "2.0.1"; var engine = new AnalysisEngine(Substitute.For <IApiCatalogLookup>(), Substitute.For <IApiRecommendations>(), Substitute.For <IPackageFinder>()); var nugetPackageResult = new[] { new NuGetPackageInfo(packageId, new Dictionary <FrameworkName, string>() { { Windows81, packageVersion }, { NetStandard16, packageVersion } }, userNuGetPackage.AssemblyIdentity) }; // Act var assemblies = engine.ComputeAssembliesToRemove(inputAssemblies, targets, nugetPackageResult); // Assert Assert.Single(assemblies); Assert.Equal(assemblies.First(), userNuGetPackage.AssemblyIdentity); }
public async Task TestDiffFileComparePerformance(int maxBytesScan) { var file1 = "./Asset/Autoruns.zip"; var file2 = "./Asset/VMMap.zip"; const int iterations = 100; var engine = new AnalysisEngine(null, null) { MaxBytesScan = maxBytesScan }; var total = 0L; for (var i = 0; i < iterations; i++) { var stopwatch = Stopwatch.StartNew(); var result = await engine.AreFilesEqualAsync(file1, file2); stopwatch.Stop(); total += stopwatch.ElapsedMilliseconds; Assert.False(result); } _output.WriteLine($"MaxBytesScan={maxBytesScan}: in average it took {total / iterations}ms."); }
private static async Task OnDocumentAnalyzed(AnalysisEngine engine, Options options, DocumentConditionalRegionInfo info, CancellationToken cancellationToken) { if (options.Edit) { var fileInfo = new FileInfo(info.Document.FilePath); if (fileInfo.IsReadOnly || !fileInfo.Exists) { Console.WriteLine("warning: skipping document '{0}' because it {1}.", info.Document.FilePath, fileInfo.IsReadOnly ? "is read-only" : "does not exist"); return; } var document = await engine.RemoveUnnecessaryRegions(info, cancellationToken); document = await engine.SimplifyVaryingPreprocessorExpressions(document, cancellationToken); var text = await document.GetTextAsync(cancellationToken); using (var file = File.Open(document.FilePath, FileMode.Truncate, FileAccess.Write)) { var writer = new StreamWriter(file, text.Encoding); text.Write(writer, cancellationToken); await writer.FlushAsync(); } } }
private static void PrintSymbolInfo(AnalysisEngine engine) { Console.WriteLine("Symbols"); Console.WriteLine(" {0,5} unique symbol(s) specified: {1}", engine.SpecifiedSymbols.Count(), string.Join(";", engine.SpecifiedSymbols)); Console.WriteLine(" {0,5} unique symbol(s) visited: {1}", engine.VisitedSymbols.Count(), string.Join(";", engine.VisitedSymbols)); Console.WriteLine(" {0,5} specified symbol(s) unvisited: {1}", engine.UnvisitedSymbols.Count(), string.Join(";", engine.UnvisitedSymbols)); }
private void Process() { AnalysisEngine engine = new AnalysisEngine(selectedVehicle.Model, EngineFinished, OnError); engine.Start(); }
static void Analyze() { using (Operation programOp = L.Begin("File and analysis operations")) { using (Operation engineOp = L.Begin("Initialising analysis engine")) { Engine = new AnalysisEngine(EngineOptions, Console.Out); if (!Engine.Initialised) { Exit(ExitResult.ANALYSIS_ENGINE_INIT_ERROR); } else { engineOp.Complete(); } } if (Engine.Analyze()) { programOp.Complete(); Exit(ExitResult.SUCCESS); } else { Exit(ExitResult.ANALYSIS_ERROR); } } }
public void ShowRetargettingIssuesTrueShouldReturnRuntimeAndRetargettingIssues() { var catalog = Substitute.For <IApiCatalogLookup>(); var recommendations = GenerateTestRecommendationsForShowRetargetting(2, 3); var testData = GenerateTestData(catalog); var engine = new AnalysisEngine(catalog, recommendations); var framework = new FrameworkName(".NET Framework, Version = v4.5"); // ShowRetargettingIssues IEnumerable <BreakingChangeDependency> result = engine.FindBreakingChanges(targets: new[] { framework }, dependencies: testData, assembliesToIgnore: null, breakingChangesToSuppress: null, submittedAssemblies: Array.Empty <string>(), showRetargettingIssues: true); Assert.Equal(5, result.Count()); //verify 1, 2, 3, 4 and 5 are in the list int expectedID = 1; foreach (BreakingChangeDependency bcd in result) { Assert.Equal(expectedID.ToString(), bcd.Break.Id); expectedID++; } }
public static void ComputeAssembliesToRemove_AssemblyFlagNotSet() { // Arrange var userNuGetPackage = GetAssemblyInfo("NugetPackageAssembly", "2.0.5.0"); var inputAssemblies = new[] { userNuGetPackage }; var targets = new[] { Windows81, NetStandard16 }; var packageId = "SomeNuGetPackage"; var packageVersion = "2.0.1"; var engine = new AnalysisEngine(Substitute.For <IApiCatalogLookup>(), Substitute.For <IApiRecommendations>(), Substitute.For <IPackageFinder>()); var nugetPackageResult = new[] { new NuGetPackageInfo(packageId, new Dictionary <FrameworkName, string>() { { Windows81, packageVersion }, { NetStandard16, packageVersion } }, userNuGetPackage.AssemblyIdentity) }; var assemblies = engine.ComputeAssembliesToRemove(inputAssemblies, targets, nugetPackageResult); Assert.Empty(assemblies); }
public static AnalysisResult Analyze(string testClassString) { Compilation compilation = CompilationHelper.Create(testClassString); AnalysisEngine engine = new AnalysisEngine(); return engine.Analyze(compilation.SyntaxTrees[0],compilation.GetSemanticModel(compilation.SyntaxTrees[0])); }
void _barlisttracker_GotNewBar(string sym, int interval) { //int idx = Array.IndexOf(_symbols, sym); int idx = _symbols.IndexOf(sym); if (_isactive && _issymbolactive[idx]) { BarList bl = _barlisttracker[sym, interval]; double[] closes = Calc.Decimal2Double(bl.Close()); // when NewBar is triggered, the latest bar only has one tick closes = closes.Take(closes.Length - 1).ToArray(); SMAResult result = AnalysisEngine.SMA(closes, _barslookback); if (result.Values.Count == 0) // Not enough bars { return; } // check if (!_waittobefilled[idx]) { double sma = result.Values.Last(); if (_positiontracker[sym].isFlat) { // if our current price is above SMA if (closes.Last() > sma) { SendDebug("Cross above SMA, buy"); SendOrder(new MarketOrder(sym, _tradesize)); _waittobefilled[idx] = true; } // if our current price is below SMA else if (closes.Last() < sma) { SendDebug("Cross below SMA, sell"); SendOrder(new MarketOrder(sym, -_tradesize)); _waittobefilled[idx] = true; } } else if ((_positiontracker[sym].isLong && (closes.Last() < sma)) || (_positiontracker[sym].isShort && (closes.Last() > sma))) { SendDebug("Counter trend, exit."); SendOrder(new MarketOrderFlat(_positiontracker[sym])); _waittobefilled[idx] = true; } // this way we can debug our indicators during development // indicators are sent in the same order as they are named above if (_waittobefilled[idx]) { SendIndicators(new string[] { "Time: " + _currenttime.ToString(), " SMA:" + sma.ToString("F2", System.Globalization.CultureInfo.InvariantCulture) }); } } } }
private static void FindDifferences(TraceFile traceFileA, TraceFile traceFileB) { if (traceFileA != null && traceFileB != null) { traceFileA.LoadTraceFile(); traceFileB.LoadTraceFile(); AnalysisEngine.FindDifferences(traceFileA, traceFileB); AnalysisEngine.FindDifferences(traceFileB, traceFileA); } }
public void FindUnreferencedAssemblies_SpecifiedAssembliesNull() { var catalog = Substitute.For<IApiCatalogLookup>(); var recommendations = Substitute.For<IApiRecommendations>(); var engine = new AnalysisEngine(catalog, recommendations); var result = engine.FindUnreferencedAssemblies(s_unreferencedAssemblies, null).ToList(); Assert.NotNull(result); }
public void FindUnreferencedAssemblies_SpecifiedAssembliesNull() { var catalog = Substitute.For <IApiCatalogLookup>(); var recommendations = Substitute.For <IApiRecommendations>(); var engine = new AnalysisEngine(catalog, recommendations); var result = engine.FindUnreferencedAssemblies(s_unreferencedAssemblies, null).ToList(); Assert.NotNull(result); }
protected void Verify(string source, string expected, bool runFormatter = true) { var inputSolution = CreateSolution(new[] { source }); var expectedSolution = CreateSolution(new[] { expected }); var engine = AnalysisEngine.FromProjects(inputSolution.Projects, alwaysIgnoredSymbols: new[] { "VARYING" }); var regionInfo = engine.GetConditionalRegionInfo().Result.Single(); var actualSolution = engine.RemoveUnnecessaryRegions(regionInfo).Result.Project.Solution; AssertSolutionEqual(expectedSolution, actualSolution); }
public void FindUnreferencedAssemblies_NoUnreferencedAssemblies() { var catalog = Substitute.For<IApiCatalogLookup>(); var recommendations = Substitute.For<IApiRecommendations>(); var engine = new AnalysisEngine(catalog, recommendations); var specifiedUserAssemblies = s_unreferencedAssemblies.Select(ua => new AssemblyInfo() { AssemblyIdentity = ua, FileVersion = "0.0.0.0" }).ToList(); var unreferencedAssms = engine.FindUnreferencedAssemblies(s_unreferencedAssemblies, specifiedUserAssemblies).ToList(); // We don't expect to have any unreferenced assemblies. Assert.Empty(unreferencedAssms); }
protected void Verify(string source, string expected) { var inputSolution = CreateSolution(new[] { source }); var expectedSolution = CreateSolution(new[] { expected }); var engine = AnalysisEngine.FromProjects(inputSolution.Projects, alwaysIgnoredSymbols: new[] { "varying" }); var document = inputSolution.Projects.Single().Documents.Single(); var actualSolution = engine.SimplifyVaryingPreprocessorExpressions(document).Result.Project.Solution; AssertSolutionEqual(expectedSolution, actualSolution); }
private static async Task RunAsync(AnalysisEngine engine, Options options, CancellationToken cancellationToken) { var regionInfos = await engine.GetConditionalRegionInfo(cancellationToken); PrintConditionalRegionInfo(options, regionInfos); if (options.PrintSymbolInfo) { Console.WriteLine(); PrintSymbolInfo(engine); } }
public void CalculateCorrelationUsingValidValues_returnsExpected() { ITweetProvider tweetProvider = new InMemoryTweetProvider(); IStockProvider stockProvider = new InMemoryStockProvider(); AnalysisEngine engine = new AnalysisEngine(tweetProvider, stockProvider); float expected = 1.0F; var actual = engine.CalculateCorrelation("TEST"); Assert.AreEqual(expected, actual); }
public void FindUnreferencedAssemblies_UnreferencedAssemblies_2() { var catalog = Substitute.For<IApiCatalogLookup>(); catalog.IsFrameworkAssembly(GetAssemblyIdentityWithoutCultureAndVersion(s_unreferencedAssemblies[0])).Returns(true); var recommendations = Substitute.For<IApiRecommendations>(); var engine = new AnalysisEngine(catalog, recommendations); var unreferencedAssms = engine.FindUnreferencedAssemblies(s_unreferencedAssemblies, Enumerable.Empty<AssemblyInfo>()).ToList(); // 1 missing assembly since Microsoft.CSharp is a FX assembly Assert.Equal(1, unreferencedAssms.Count); }
public void BreakingChangesNotFullFramework() { var catalog = Substitute.For <IApiCatalogLookup>(); var recommendations = GenerateTestRecommendationsWithFixedEntry(); var testData = GenerateTestData(catalog); var engine = new AnalysisEngine(catalog, recommendations); var framework = new FrameworkName(".NET Core Framework,Version=4.5.1"); var breakingChanges = engine.FindBreakingChanges(new[] { framework }, testData, null, null, Array.Empty <string>()).ToList(); Assert.Empty(breakingChanges); }
private async Task AnalyzeData(double Temperature, double Cph, double Cdo, double Cbod5, double Ccod, double Cnh4n, double Cno2n, double Cno3n, double Css, double Ccl, double Ccb) { Console.WriteLine("----------------------------------------------------------"); var Is = AnalysisEngine.CalculateSimpleIndices(Temperature, Cph, Cdo, Cbod5, Ccod, Cnh4n, Cno2n, Cno3n, Css, Ccl, Ccb); Console.WriteLine(Is.ToJSONString()); var Ws = AnalysisEngine.GetWeightCoefficients(Temperature, Is); Console.WriteLine(Ws.ToJSONString()); OverallIndex = AnalysisEngine.CalculateOverallIndex(Is, Ws); Console.WriteLine("Overall Index: " + OverallIndex.ToString("F5")); Level = AnalysisEngine.GetLevel(Temperature, OverallIndex); Console.WriteLine("Level: " + Level.ToString("D")); }
public static void TestGetNugetPackageInfo() { // Arrange var nugetPackageAssembly = GetAssemblyInfo("NugetPackageAssembly", "2.0.5.0", isExplicitlySpecified: false); var inputAssemblies = new[] { GetAssemblyInfo("TestUserAssembly", "2.0.5.0", isExplicitlySpecified: true), nugetPackageAssembly, GetAssemblyInfo("TestUserLibrary", "5.0.0", isExplicitlySpecified: true), }; var targets = new[] { Windows80, Net11, NetStandard16 }; var packageFinder = Substitute.For <IPackageFinder>(); var packageId = "TestNuGetPackage"; var nugetPackageWin80Version = "1.3.4"; // supported version of the package var nugetPackageNetStandardVersion = "10.0.8"; var packagesList = new[] { new NuGetPackageInfo(packageId, new Dictionary <FrameworkName, string>() { { Windows80, nugetPackageWin80Version }, { NetStandard16, nugetPackageNetStandardVersion }, }) }; packageFinder.TryFindPackages(nugetPackageAssembly.AssemblyIdentity, targets, out var packages) .Returns(x => { // return this value in `out var packages` x[2] = packagesList.ToImmutableList(); return(true); }); var engine = new AnalysisEngine(Substitute.For <IApiCatalogLookup>(), Substitute.For <IApiRecommendations>(), packageFinder); // Act var nugetPackageResult = engine.GetNuGetPackagesInfoFromAssembly(inputAssemblies.Select(x => x.AssemblyIdentity), targets).ToArray(); // Assert Assert.Single(nugetPackageResult); Assert.Equal(nugetPackageResult[0].SupportedVersions[Windows80], nugetPackageWin80Version); Assert.Equal(nugetPackageResult[0].SupportedVersions[NetStandard16], nugetPackageNetStandardVersion); // We did not have any packages that supported .NET Standard 2.0 Assert.True(!nugetPackageResult[0].SupportedVersions.TryGetValue(Net11, out var value) || string.IsNullOrEmpty(value)); Assert.Equal(nugetPackageResult[0].AssemblyInfo, nugetPackageAssembly.AssemblyIdentity); }
private static void FindAddressFrequency(TraceFile traceFile) { if (traceFile == null) { foreach (var currentTraceFile in traceFiles) { AnalysisEngine.FindAddressFrequency(currentTraceFile); } } else { AnalysisEngine.FindAddressFrequency(traceFile); } }
public void FindUnreferencedAssemblies_UnreferencedAssemblies_2() { var catalog = Substitute.For <IApiCatalogLookup>(); catalog.IsFrameworkAssembly(GetAssemblyIdentityWithoutCultureAndVersion(s_unreferencedAssemblies[0])).Returns(true); var recommendations = Substitute.For <IApiRecommendations>(); var engine = new AnalysisEngine(catalog, recommendations); var unreferencedAssms = engine.FindUnreferencedAssemblies(s_unreferencedAssemblies, Enumerable.Empty <AssemblyInfo>()).ToList(); // 1 missing assembly since Microsoft.CSharp is a FX assembly Assert.Equal(1, unreferencedAssms.Count); }
public void FindUnreferencedAssemblies_UnreferencedAssemblies_1() { var catalog = Substitute.For<IApiCatalogLookup>(); catalog.IsFrameworkAssembly(GetAssemblyIdentityWithoutCultureAndVersion(s_unreferencedAssemblies[0])).Returns(true); var recommendations = Substitute.For<IApiRecommendations>(); var engine = new AnalysisEngine(catalog, recommendations); var specifiedUserAssemblies = new[] { new AssemblyInfo { FileVersion = "", AssemblyIdentity = "MyAssembly" } }; var unreferencedAssms = engine.FindUnreferencedAssemblies(s_unreferencedAssemblies, specifiedUserAssemblies).ToList(); // 0 missing assembly since Microsoft.CSharp is a FX assembly and we specified MyAssembly Assert.Empty(unreferencedAssms); }
public void FindUnreferencedAssemblies_NoUnreferencedAssemblies() { var catalog = Substitute.For <IApiCatalogLookup>(); var recommendations = Substitute.For <IApiRecommendations>(); var engine = new AnalysisEngine(catalog, recommendations); var specifiedUserAssemblies = s_unreferencedAssemblies.Select(ua => new AssemblyInfo() { AssemblyIdentity = ua, FileVersion = "0.0.0.0" }).ToList(); var unreferencedAssms = engine.FindUnreferencedAssemblies(s_unreferencedAssemblies, specifiedUserAssemblies).ToList(); // We don't expect to have any unreferenced assemblies. Assert.Empty(unreferencedAssms); }
public async static void Start() { analysisEngine = new AnalysisEngine(); analysisEngine.CandleRecieved += AnalysisManager_CandleRecieved; analysisEngine.SignalRecieved += AnalysisManager_SignalRecieved; analysisEngine.HeikinAshiRecieved += AnalysisManager_HeikinAshiRecieved; Logger.OnLog += Logger_OnLog; connection = new HubConnectionBuilder() .WithUrl(serverURL, HttpTransportType.WebSockets | HttpTransportType.LongPolling) .Build(); await connection.StartAsync(); analysisEngine.Start(); }
public static void FindUnreferencedAssemblies_UnreferencedAssemblies_1() { var catalog = Substitute.For <IApiCatalogLookup>(); catalog.IsFrameworkAssembly(GetAssemblyIdentityWithoutCultureAndVersion(UnreferencedAssemblies[0])).Returns(true); var recommendations = Substitute.For <IApiRecommendations>(); var engine = new AnalysisEngine(catalog, recommendations, null); var specifiedUserAssemblies = new[] { new AssemblyInfo { FileVersion = string.Empty, AssemblyIdentity = "MyAssembly" } }; var unreferencedAssms = engine.FindUnreferencedAssemblies(UnreferencedAssemblies, specifiedUserAssemblies).ToList(); // 0 missing assembly since Microsoft.CSharp is a FX assembly and we specified MyAssembly Assert.Empty(unreferencedAssms); }
public void FindMembersNotInTargets_2() { // No member information passed through. var testData = new Dictionary <MemberInfo, ICollection <AssemblyInfo> >(); var targets = new List <FrameworkName>() { new FrameworkName("Windows Phone, version=8.1") }; var catalog = Substitute.For <IApiCatalogLookup>(); GenerateTestData(catalog); var recommendations = Substitute.For <IApiRecommendations>(); var engine = new AnalysisEngine(catalog, recommendations); var notInTarget = engine.FindMembersNotInTargets(targets, Array.Empty <string>(), testData); Assert.Equal(0, notInTarget.Count); }
public void BreakingChangeIgnoreSelection() { var catalog = Substitute.For <IApiCatalogLookup>(); var recommendations = GenerateTestRecommendationsWithFixedEntry(); var testData = GenerateTestData(catalog); var engine = new AnalysisEngine(catalog, recommendations); var framework = new FrameworkName(".NET Framework, Version = v4.5.1"); var framework2 = new FrameworkName(".NET Framework, Version = v4.5.2"); // Vanilla var result = engine.FindBreakingChangeSkippedAssemblies(new[] { framework }, testData.SelectMany(kvp => kvp.Value).Distinct(), GenerateIgnoreAssemblies(false, new[] { ".NET Framework,Version=v4.5.1" })); Assert.Equal(1, result.Count()); Assert.Equal("userAsm1, Version=1.0.0.0", result.FirstOrDefault().AssemblyIdentity); // Empty ignore targets result = engine.FindBreakingChangeSkippedAssemblies(new[] { framework }, testData.SelectMany(kvp => kvp.Value).Distinct(), GenerateIgnoreAssemblies(false, new string[0])); Assert.Equal(1, result.Count()); Assert.Equal("userAsm1, Version=1.0.0.0", result.FirstOrDefault().AssemblyIdentity); // Empty ignore targets with multiple targets result = engine.FindBreakingChangeSkippedAssemblies(new[] { framework, framework2 }, testData.SelectMany(kvp => kvp.Value).Distinct(), GenerateIgnoreAssemblies(false, new string[0])); Assert.Equal(1, result.Count()); Assert.Equal("userAsm1, Version=1.0.0.0", result.FirstOrDefault().AssemblyIdentity); // Ignore a different target result = engine.FindBreakingChangeSkippedAssemblies(new[] { framework }, testData.SelectMany(kvp => kvp.Value).Distinct(), GenerateIgnoreAssemblies(false, new[] { ".NET Framework,Version=v4.5.2" })); Assert.Equal(0, result.Count()); // Ignore some but not all targets result = engine.FindBreakingChangeSkippedAssemblies(new[] { framework, framework2 }, testData.SelectMany(kvp => kvp.Value).Distinct(), GenerateIgnoreAssemblies(false, new[] { ".NET Framework,Version=v4.5.1" })); Assert.Equal(0, result.Count()); // Ignore all targets result = engine.FindBreakingChangeSkippedAssemblies(new[] { framework, framework2 }, testData.SelectMany(kvp => kvp.Value).Distinct(), GenerateIgnoreAssemblies(false, new[] { ".NET Framework,Version=v4.5.1", ".NET Framework,Version=v4.5.2" })); Assert.Equal(1, result.Count()); Assert.Equal("userAsm1, Version=1.0.0.0", result.FirstOrDefault().AssemblyIdentity); // Ignore different assembly result = engine.FindBreakingChangeSkippedAssemblies(new[] { framework }, testData.SelectMany(kvp => kvp.Value).Distinct(), GenerateIgnoreAssemblies(true, new string[0])); Assert.Equal(1, result.Count()); Assert.Equal("userAsm2, Version=2.0.0.0", result.FirstOrDefault().AssemblyIdentity); }
public void BreakingChangeIgnoreSelection() { var catalog = Substitute.For<IApiCatalogLookup>(); var recommendations = GenerateTestRecommendationsWithFixedEntry(); var testData = GenerateTestData(catalog); var engine = new AnalysisEngine(catalog, recommendations); var framework = new FrameworkName(".NET Framework, Version = v4.5.1"); var framework2 = new FrameworkName(".NET Framework, Version = v4.5.2"); // Vanilla var result = engine.FindBreakingChangeSkippedAssemblies(new[] { framework }, testData.SelectMany(kvp => kvp.Value).Distinct(), GenerateIgnoreAssemblies(false, new[] { ".NET Framework,Version=v4.5.1" })); Assert.Equal(1, result.Count()); Assert.Equal("userAsm1, Version=1.0.0.0", result.FirstOrDefault().AssemblyIdentity); // Empty ignore targets result = engine.FindBreakingChangeSkippedAssemblies(new[] { framework }, testData.SelectMany(kvp => kvp.Value).Distinct(), GenerateIgnoreAssemblies(false, new string[0])); Assert.Equal(1, result.Count()); Assert.Equal("userAsm1, Version=1.0.0.0", result.FirstOrDefault().AssemblyIdentity); // Empty ignore targets with multiple targets result = engine.FindBreakingChangeSkippedAssemblies(new[] { framework, framework2 }, testData.SelectMany(kvp => kvp.Value).Distinct(), GenerateIgnoreAssemblies(false, new string[0])); Assert.Equal(1, result.Count()); Assert.Equal("userAsm1, Version=1.0.0.0", result.FirstOrDefault().AssemblyIdentity); // Ignore a different target result = engine.FindBreakingChangeSkippedAssemblies(new[] { framework }, testData.SelectMany(kvp => kvp.Value).Distinct(), GenerateIgnoreAssemblies(false, new[] { ".NET Framework,Version=v4.5.2" })); Assert.Equal(0, result.Count()); // Ignore some but not all targets result = engine.FindBreakingChangeSkippedAssemblies(new[] { framework, framework2 }, testData.SelectMany(kvp => kvp.Value).Distinct(), GenerateIgnoreAssemblies(false, new[] { ".NET Framework,Version=v4.5.1" })); Assert.Equal(0, result.Count()); // Ignore all targets result = engine.FindBreakingChangeSkippedAssemblies(new[] { framework, framework2 }, testData.SelectMany(kvp => kvp.Value).Distinct(), GenerateIgnoreAssemblies(false, new[] { ".NET Framework,Version=v4.5.1", ".NET Framework,Version=v4.5.2" })); Assert.Equal(1, result.Count()); Assert.Equal("userAsm1, Version=1.0.0.0", result.FirstOrDefault().AssemblyIdentity); // Ignore different assembly result = engine.FindBreakingChangeSkippedAssemblies(new[] { framework }, testData.SelectMany(kvp => kvp.Value).Distinct(), GenerateIgnoreAssemblies(true, new string[0])); Assert.Equal(1, result.Count()); Assert.Equal("userAsm2, Version=2.0.0.0", result.FirstOrDefault().AssemblyIdentity); }
private async Task TestEngine() { // January Console.WriteLine("----------------------January----------------------"); double Temperature = 10.0, PH = 7.1, DO = 13.86, BOD5 = 3.42, COD = 2.68, NH4N = 0.27, NO2N = 0.03, NO3N = 6.7, SS = 24.67, CL = 15.33, CB = 235; var Is = AnalysisEngine.CalculateSimpleIndices(Temperature, PH, DO, BOD5, COD, NH4N, NO2N, NO3N, SS, CL, CB); Console.WriteLine(Is.ToJSONString()); var Ws = AnalysisEngine.GetWeightCoefficients(Temperature, Is); Console.WriteLine(Ws.ToJSONString()); var OverallIndex = AnalysisEngine.CalculateOverallIndex(Is, Ws); Console.WriteLine("Overall Index: " + OverallIndex.ToString("F5")); var Level = AnalysisEngine.GetLevel(Temperature, OverallIndex); Console.WriteLine("Level: " + Level.ToString("D")); // May Console.WriteLine("----------------------May----------------------"); Temperature = 20.0; PH = 7.27; DO = 9.95; BOD5 = 2.41; COD = 2.18; NH4N = 0.35; NO2N = 0.02; NO3N = 07.9; SS = 21.33; CL = 24.67; CB = 796.67; Is = AnalysisEngine.CalculateSimpleIndices(Temperature, PH, DO, BOD5, COD, NH4N, NO2N, NO3N, SS, CL, CB); Console.WriteLine(Is.ToJSONString()); Ws = AnalysisEngine.GetWeightCoefficients(Temperature, Is); Console.WriteLine(Ws.ToJSONString()); OverallIndex = AnalysisEngine.CalculateOverallIndex(Is, Ws); Console.WriteLine("Overall Index: " + OverallIndex.ToString("F5")); Level = AnalysisEngine.GetLevel(Temperature, OverallIndex); Console.WriteLine("Level: " + Level.ToString("D")); // July Console.WriteLine("----------------------July----------------------"); Temperature = 30.0; PH = 7.23; DO = 8.69; BOD5 = 2.37; COD = 2.4; NH4N = 0.28; NO2N = 0.04; NO3N = 9; SS = 27.33; CL = 23.33; CB = 773.33; Is = AnalysisEngine.CalculateSimpleIndices(Temperature, PH, DO, BOD5, COD, NH4N, NO2N, NO3N, SS, CL, CB); Console.WriteLine(Is.ToJSONString()); Ws = AnalysisEngine.GetWeightCoefficients(Temperature, Is); Console.WriteLine(Ws.ToJSONString()); OverallIndex = AnalysisEngine.CalculateOverallIndex(Is, Ws); Console.WriteLine("Overall Index: " + OverallIndex.ToString("F5")); Level = AnalysisEngine.GetLevel(Temperature, OverallIndex); Console.WriteLine("Level: " + Level.ToString("D")); }
internal ControlFlowGraphVertex(AnalysisEngine engine, SourceRoutineSymbol routine, BoundBlock block) { this.Engine = engine; this.routine = routine; this.block = block; this.File = routine.ContainingFile.SyntaxTree.FilePath; this.Vid = this.block.Ordinal + this.File.GetHashCode(); this.BlockName = this.block.DebugDisplay; this.Kind = this.block.Kind.ToString(); this.RoutineName = this.routine.Name; this.Statements = this.block.Statements != null ? block.Statements.Count : 0; LangElement l = PhylDiagnosingVisitor.PickFirstSyntaxNode(this.block); if (l != null) { Tuple <int, int> pos = engine.GetLineFromTokenPosition(l.Span.Start, this.File); this.Line = pos.Item1; this.Column = pos.Item2; } }
private static void TestBreakingChange(Version version, IApiRecommendations recommendations, bool noBreakingChangesExpected, IEnumerable <AssemblyInfo> assembliesToIgnore, IEnumerable <string> breakingChangesToSuppress) { var catalog = Substitute.For <IApiCatalogLookup>(); var testData = GenerateTestData(catalog); var engine = new AnalysisEngine(catalog, recommendations); var framework = new FrameworkName(AnalysisEngine.FullFrameworkIdentifier + ",Version=" + version); var breakingChanges = engine.FindBreakingChanges(new[] { framework }, testData, assembliesToIgnore, breakingChangesToSuppress, Array.Empty <string>()).ToList(); if (noBreakingChangesExpected) { Assert.Empty(breakingChanges); } else { Assert.Equal(1, breakingChanges.Count); Assert.Equal("5", breakingChanges.First().Break.Id); } }
private void Verify(string source, Tristate[] expectedStates, string[] preprocessorSymbolsA = null, string[] preprocessorSymbolsB = null) { if (preprocessorSymbolsA == null) { preprocessorSymbolsA = s_defaultPreprocessorSymbolsA; } if (preprocessorSymbolsB == null) { preprocessorSymbolsB = s_defaultPreprocessorSymbolsB; } var projectA = CreateSolution(new[] { source }).Projects.Single(); var engine = AnalysisEngine.FromProjects( new[] { projectA }, symbolConfigurations: new[] { preprocessorSymbolsA, preprocessorSymbolsB }); var regionInfo = engine.GetConditionalRegionInfo().Result.Single(); var regions = regionInfo.Chains.SelectMany(c => c.Regions).ToArray(); Array.Sort(regions); Assert.Equal(expectedStates.Length, regions.Length); // Make sure the state of each region is what we expect for (int i = 0; i < expectedStates.Length; i++) { var expectedState = expectedStates[i]; var region = regions[i]; if (expectedState != region.State) { Assert.False(true, string.Format("The state of the region on line {0} is {1}, expected {2}: {3}", region.Location.GetLineSpan().StartLinePosition.Line, region.State, expectedState, region.StartDirective.ToFullString())); } } }
public void FindMembersNotInTargets_AllNull() { var engine = new AnalysisEngine(null, null); engine.FindMembersNotInTargets(null, null, null); }
public void FindMembersNotInTargetsWithSuppliedAssembly() { var testData = new Dictionary<MemberInfo, ICollection<AssemblyInfo>>(); var userAsm1 = new AssemblyInfo() { AssemblyIdentity = "userAsm1, Version=1.0.0.0", FileVersion = "1.0.0.0" }; var userAsm2 = new AssemblyInfo() { AssemblyIdentity = "userAsm2, Version=2.0.0.0", FileVersion = "2.0.0.0" }; var userAsm3 = new AssemblyInfo() { AssemblyIdentity = "userAsm3, Version=3.0.0.0", FileVersion = "3.0.0.0" }; var mi1 = new MemberInfo() { DefinedInAssemblyIdentity = "System.Drawing, Version=1.0.136.0, PublicKeyToken=b03f5f7f11d50a3a", MemberDocId = "T:System.Drawing.Color" }; var mi2 = new MemberInfo() { DefinedInAssemblyIdentity = "System.Data, Version=1.0.136.0, PublicKeyToken=b77a5c561934e089", MemberDocId = "T:System.Data.SqlTypes.SqlBoolean" }; var mi3 = new MemberInfo() { DefinedInAssemblyIdentity = "userAsm1, Version=1.0.0.0", MemberDocId = "T:MyType" }; var usedIn1 = new HashSet<AssemblyInfo>() { userAsm1, userAsm2 }; testData.Add(mi1, usedIn1); var usedIn2 = new HashSet<AssemblyInfo>() { userAsm2, userAsm3 }; testData.Add(mi2, usedIn2); testData.Add(mi3, usedIn2); var targets = new List<FrameworkName>() { new FrameworkName("Windows Phone, version=8.1") }; var catalog = Substitute.For<IApiCatalogLookup>(); catalog.IsFrameworkAssembly(GetAssemblyIdentityWithoutCultureAndVersion(mi1.DefinedInAssemblyIdentity)).Returns(true); catalog.IsFrameworkAssembly(GetAssemblyIdentityWithoutCultureAndVersion(mi2.DefinedInAssemblyIdentity)).Returns(true); catalog.IsFrameworkMember(mi1.MemberDocId).Returns(true); catalog.IsFrameworkMember(mi2.MemberDocId).Returns(true); var recommendations = Substitute.For<IApiRecommendations>(); var engine = new AnalysisEngine(catalog, recommendations); var notInTarget = engine.FindMembersNotInTargets(targets, new[] { mi1.DefinedInAssemblyIdentity }, testData); Assert.Equal(1, notInTarget.Count); }
public void FindMembersNotInTargets_2() { // No member information passed through. var testData = new Dictionary<MemberInfo, ICollection<AssemblyInfo>>(); var targets = new List<FrameworkName>() { new FrameworkName("Windows Phone, version=8.1") }; var catalog = Substitute.For<IApiCatalogLookup>(); GenerateTestData(catalog); var recommendations = Substitute.For<IApiRecommendations>(); var engine = new AnalysisEngine(catalog, recommendations); var notInTarget = engine.FindMembersNotInTargets(targets, Array.Empty<string>(), testData); Assert.Equal(0, notInTarget.Count); }
public void FindUnreferencedAssemblies_AllNulls() { var engine = new AnalysisEngine(null, null); engine.FindUnreferencedAssemblies(null, null).ToList(); }
public void BreakingChangesNotFullFramework() { var catalog = Substitute.For<IApiCatalogLookup>(); var recommendations = GenerateTestRecommendationsWithFixedEntry(); var testData = GenerateTestData(catalog); var engine = new AnalysisEngine(catalog, recommendations); var framework = new FrameworkName(".NET Core Framework,Version=4.5.1"); var breakingChanges = engine.FindBreakingChanges(new[] { framework }, testData, null, null, Array.Empty<string>()).ToList(); Assert.Empty(breakingChanges); }
public void ShowRetargettingIssuesTrueShouldReturnRuntimeAndRetargettingIssues() { var catalog = Substitute.For<IApiCatalogLookup>(); var recommendations = GenerateTestRecommendationsForShowRetargetting(2, 3); var testData = GenerateTestData(catalog); var engine = new AnalysisEngine(catalog, recommendations); var framework = new FrameworkName(".NET Framework, Version = v4.5"); // ShowRetargettingIssues IEnumerable<BreakingChangeDependency> result = engine.FindBreakingChanges(targets: new[] { framework }, dependencies: testData, assembliesToIgnore: null, breakingChangesToSuppress: null, submittedAssemblies: Array.Empty<string>(), showRetargettingIssues: true); Assert.Equal(5, result.Count()); //verify 1, 2, 3, 4 and 5 are in the list int expectedID = 1; foreach (BreakingChangeDependency bcd in result) { Assert.Equal(expectedID.ToString(), bcd.Break.Id); expectedID++; } }
private static void TestBreakingChange(Version version, IApiRecommendations recommendations, bool noBreakingChangesExpected, IEnumerable<AssemblyInfo> assembliesToIgnore, IEnumerable<string> breakingChangesToSuppress) { var catalog = Substitute.For<IApiCatalogLookup>(); var testData = GenerateTestData(catalog); var engine = new AnalysisEngine(catalog, recommendations); var framework = new FrameworkName(AnalysisEngine.FullFrameworkIdentifier + ",Version=" + version); var breakingChanges = engine.FindBreakingChanges(new[] { framework }, testData, assembliesToIgnore, breakingChangesToSuppress, Array.Empty<string>()).ToList(); if (noBreakingChangesExpected) { Assert.Empty(breakingChanges); } else { Assert.Equal(1, breakingChanges.Count); Assert.Equal("5", breakingChanges.First().Break.Id); } }