public async Task resolve_optional() { var env = new TestEnvironment(); await env.Build(); await env.CreateTest <ResolveOptionalTest, TestOptions>(); }
public async Task mark_setup() { var env = new TestEnvironment(); env.Add <Block>("mark", block => { block.Should().BeOfType <Block>(); block.Should().NotBeNull(); block.Property = "a"; }); env.IndexOf <Block>().Should().Be(-1); env.IndexOf <Block>("mark").Should().Be(0); var reg = env.registrations.FirstOrDefault(); reg.Should().NotBeNull(); reg.BlockType.Should().Be <Block>(); reg.Mark.Should().Be("mark"); await env.Build(); var inst = (Block)env.blocks.FirstOrDefault(); inst.Should().NotBeNull(); inst.Property.Should().Be("a"); }
public async Task resolve_ITestEnvironment_from_custom_test() { var env = new TestEnvironment(); await env.Build(); await env.CreateTest <ResolveEnvironmentTest, TestOptions>(); }
public async Task mark_idx_1_setup() { var env = new TestEnvironment(); env.Add <Block>(); env.InsertAt <Block2>(1, "mark", block2 => { block2.Should().BeOfType <Block2>(); block2.Should().NotBeNull(); block2.Property = "a"; }); var reg = env.registrations.SingleOrDefault(e => e.BlockType == typeof(Block2)); reg.Should().NotBeNull(); reg.BlockType.Should().Be <Block2>(); reg.Mark.Should().Be("mark"); (env.registrations.ToArray()[1].BlockType == typeof(Block2)).Should().BeTrue(); await env.Build(); var inst = (Block2)env.blocks.SingleOrDefault(e => e is Block2); inst.Should().NotBeNull(); inst.Property.Should().Be("a"); }
public async Task setup() { var env = new TestEnvironment(); env.Add <Block>(); env.Insert <Block, Block2>(InsertMode.Before, block2 => { block2.Should().BeOfType <Block2>(); block2.Should().NotBeNull(); block2.Property = "a"; }); var reg = env.registrations.SingleOrDefault(e => e.BlockType == typeof(Block2)); reg.Should().NotBeNull(); reg.BlockType.Should().Be <Block2>(); reg.Mark.Should().BeNull(); await env.Build(); var inst = (Block2)env.blocks.SingleOrDefault(e => e is Block2); inst.Should().NotBeNull(); inst.Property.Should().Be("a"); }
public async Task setup_env() { var env = new TestEnvironment(); env.Add <Block>(); env.Update <Block>((block, testEnv) => { block.Should().BeOfType <Block>(); block.Should().NotBeNull(); testEnv.Should().NotBeNull(); block.Property = "a"; }); var reg = env.registrations.FirstOrDefault(); reg.Should().NotBeNull(); reg.BlockType.Should().Be <Block>(); reg.Mark.Should().BeNull(); await env.Build(); var inst = (Block)env.blocks.FirstOrDefault(); inst.Should().NotBeNull(); inst.Property.Should().Be("a"); }
public async Task setup_markToAdd() { var env = new TestEnvironment(); env.Add <Block>(); env.Replace <Block>(block => { block.Should().BeOfType <Block>(); block.Should().NotBeNull(); block.Property = "a"; }, markToAdd: "mark"); var reg = env.registrations.SingleOrDefault(e => e.BlockType == typeof(Block)); reg.Should().NotBeNull(); reg.BlockType.Should().Be <Block>(); reg.Mark.Should().Be("mark"); await env.Build(); var inst = (Block)env.blocks.SingleOrDefault(e => e is Block); inst.Should().NotBeNull(); inst.Property.Should().Be("a"); }
public async Task with_extra_data() { var env = new TestEnvironment(); env.Add <BlockWithData>(); await env.Build("hello"); var block = (BlockWithData)env.blocks.Single(e => e is BlockWithData); block.Data.Should().Be("hello"); }
public async Task Test() { await using var env = new TestEnvironment(); env.Add <InitializeIoc>(block => { block.AddSingleton <IUserRepository, MockedUserRepository>(); block.AddTransient <IGetUserById, GetUserById>(); }); await env.Build(); await SampleTest(env); }
public async Task block_consume_data_produced_by_executed_block() { var env = new TestEnvironment(); env.Add <BlockProducesDateTime>(); env.Add <BlockConsumeDateTime>(); await env.Build(); var block = (BlockConsumeDateTime)env.blocks.Single(e => e is BlockConsumeDateTime); block.Time.Should().Be(DateTime.Today); }
public void Designtime_builds_of_NXPorts_enabled_projects_do_not_error() { using (var testEnv = new TestEnvironment()) { testEnv.SetupNXPortsProject("./sdknet48.csproj").Save(); testEnv.CopyFileFromTestFiles("Simple.cs"); var(AnalyzerResults, _) = testEnv.Build("./sdknet48.csproj", true); Assert.IsTrue(AnalyzerResults.OverallSuccess, "The designtime build failed."); } }
public void Projects_with_empty_PlatformTarget_throw_an_error_during_build() { using (var testEnv = new TestEnvironment()) { testEnv.SetupNXPortsProject("./sdknet48.csproj").Property("PlatformTarget", "").Save(); testEnv.CopyFileFromTestFiles("SimpleWithoutExports.cs"); var(AnalyzerResults, Log) = testEnv.Build("./sdknet48.csproj"); Log.Errors.Should().HaveCountGreaterOrEqualTo(1); Log.ErrorEvents.Should().Contain( x => x.Message.Contains("Cannot use NXPorts without specifying the 'PlatformTarget'") ); } }
public void Projects_without_any_exports_annotated_method_produce_a_warning() { using (var testEnv = new TestEnvironment()) { testEnv.SetupNXPortsProject("./sdknet48.csproj").Save(); testEnv.CopyFileFromTestFiles("SimpleWithoutExports.cs"); var(AnalyzerResults, Log) = testEnv.Build("./sdknet48.csproj"); Log.Warnings.Should().HaveCountGreaterOrEqualTo(1); Log.WarningEvents.Should().Contain( x => x.Message.Equals("No method annotations for export reweaving were found.") ); } }
public async Task block_access_to_executed_block() { var env = new TestEnvironment(); env.Add <BlockWithData>(); env.Add <BlockAccesToBlock>(); await env.Build("hello"); var block = (BlockAccesToBlock)env.blocks.Single(e => e is BlockAccesToBlock); block.Block.Should().NotBeNull(); block.Block.Data.Should().Be("hello"); }
public async Task check_wrapper_execution() { var env = new TestEnvironment(); env.Wrap(typeof(Wrapper)); await env.Build(); using (await env.CreateTest()) { Wrapper.Counter.Should().Be(1); } Wrapper.Counter.Should().Be(0); }
public async Task break_pipeline() { var output = new List <string>(); var env = new TestEnvironment(); env.Add <ExecuteLogic>((block, builder) => { block.Logic = () => { output.Add("1 message"); }; }) .Add <BreakBlock>() .Add <ExecuteLogic>(Guid.NewGuid().ToString(), (block, builder) => { block.Logic = () => { output.Add("2 message"); }; }); await env.Build(); await env.CreateTest(); output.Contains("1 message").Should().BeTrue(); output.Contains("2 message").Should().BeFalse(); }
public async Task resolve_not_registered_non_optional_FORBIDDEN() { try { var env = new TestEnvironment(); await env.Build(); await env.CreateTest <ResolveNonRegisteredNonOptionalTest, TestOptions>(); } catch (ArgumentException) { return; } throw new Exception("Missing exception."); }
public async Task private_blocks_are_not_supported_FORBIDDEN() { try { var env = new TestEnvironment(); env.Add <PrivBlock>(); await env.Build(); } catch (AggregateException e) { e.InnerException.Should().BeOfType <RuntimeBinderException>(); return; } throw new Exception("Missing exception."); }
public async Task insert_into_pipeline() { var output = new List <string>(); var mark = Guid.NewGuid().ToString(); var env = new TestEnvironment(); env.Add <ExecuteLogic>((block, builder) => { block.Logic = () => { output.Add("1 message"); }; }) .Add <ExecuteLogic>(mark, (block, builder) => { block.Logic = () => { output.Add("2 message"); }; }); env.Insert <ExecuteLogic, BreakBlock>(InsertMode.Before, mark); await env.Build(); await env.CreateTest(); output.Contains("1 message").Should().BeTrue(); output.Contains("2 message").Should().BeFalse(); }
public async Task empty_idx_0() { var env = new TestEnvironment(); env.InsertAt <Block2>(0); var reg = env.registrations.SingleOrDefault(e => e.BlockType == typeof(Block2)); reg.Should().NotBeNull(); reg.BlockType.Should().Be <Block2>(); reg.Mark.Should().BeNull(); (env.registrations.First().BlockType == typeof(Block2)).Should().BeTrue(); await env.Build(); var inst = (Block2)env.blocks.SingleOrDefault(e => e is Block2); inst.Should().NotBeNull(); inst.Property.Should().BeNull(); }
public void The_attributes_assembly_file_does_not_end_up_in_the_build_output() { using (var testEnv = new TestEnvironment()) { testEnv.SetupNXPortsProject("./sdknet48.csproj").Save(); testEnv.CopyFileFromTestFiles("Simple.cs"); var(AnalyzerResults, _) = testEnv.Build("./sdknet48.csproj"); Assert.IsTrue(AnalyzerResults.OverallSuccess, "The build failed."); if (AnalyzerResults.TryGetTargetFramework("net48", out var net48results)) { Assert.IsFalse( File.Exists(Path.Combine(Path.GetDirectoryName(net48results.Properties["TargetDir"]), "NXPorts.Attributes.dll")), "NXPorts wasn't removed the from the build output." ); } else { Assert.Inconclusive("Failed to retrieve build results"); } } }
public void Building_a_simple_SDK_based_project_with_exports_succeeds() { using (var testEnv = new TestEnvironment()) { testEnv.SetupNXPortsProject("./sdknet48.csproj").Save(); testEnv.CopyFileFromTestFiles("Simple.cs"); var(AnalyzerResults, _) = testEnv.Build("./sdknet48.csproj"); Assert.IsTrue(AnalyzerResults.OverallSuccess, "The build failed."); if (AnalyzerResults.TryGetTargetFramework("net48", out var net48results)) { var buildOutputFile = new PeFile(net48results.Properties["TargetPath"]); Assert.AreEqual(1, buildOutputFile.ExportedFunctions.Length, "There is more or less than one export function listed in the resulting dll."); Assert.AreEqual("DoSomething", buildOutputFile.ExportedFunctions[0].Name); } else { Assert.Inconclusive("Failed to retrieve build results"); } } }