Exemplo n.º 1
0
        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");
        }
Exemplo n.º 3
0
        public async Task resolve_ITestEnvironment_from_custom_test()
        {
            var env = new TestEnvironment();
            await env.Build();

            await env.CreateTest <ResolveEnvironmentTest, TestOptions>();
        }
Exemplo n.º 4
0
        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");
        }
Exemplo n.º 7
0
        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");
        }
Exemplo n.º 8
0
        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);
            }
Exemplo n.º 10
0
        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);
        }
Exemplo n.º 11
0
        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.");
            }
        }
Exemplo n.º 12
0
 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'")
             );
     }
 }
Exemplo n.º 13
0
 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.")
             );
     }
 }
Exemplo n.º 14
0
        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();
        }
Exemplo n.º 17
0
        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.");
        }
Exemplo n.º 18
0
        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();
        }
Exemplo n.º 20
0
        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();
        }
Exemplo n.º 21
0
        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");
                }
            }
        }
Exemplo n.º 22
0
        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");
                }
            }
        }