From 4d2a5d3bca3a8fb01c08a735c142169617b07544 Mon Sep 17 00:00:00 2001 From: dadhi Date: Thu, 14 Nov 2024 11:16:30 +0100 Subject: [PATCH] added failing test for #667 --- ...iceKey_does_not_invoke_factory_selector.cs | 45 +++++++++++++++++++ test/DryIoc.TestRunner/Program.cs | 3 +- 2 files changed, 47 insertions(+), 1 deletion(-) create mode 100644 test/DryIoc.IssuesTests/GHIssue667_Resolve_with_serviceKey_does_not_invoke_factory_selector.cs diff --git a/test/DryIoc.IssuesTests/GHIssue667_Resolve_with_serviceKey_does_not_invoke_factory_selector.cs b/test/DryIoc.IssuesTests/GHIssue667_Resolve_with_serviceKey_does_not_invoke_factory_selector.cs new file mode 100644 index 000000000..1246f7745 --- /dev/null +++ b/test/DryIoc.IssuesTests/GHIssue667_Resolve_with_serviceKey_does_not_invoke_factory_selector.cs @@ -0,0 +1,45 @@ +using NUnit.Framework; + +using System; +using System.Text; +using DryIoc.FastExpressionCompiler.LightExpression; +using System.Linq; +using System.Diagnostics; +using DryIoc.ImTools; + +namespace DryIoc.IssuesTests; + +[TestFixture] +public class GHIssue667_Resolve_with_serviceKey_does_not_invoke_factory_selector : ITest +{ + public int Run() + { + // Original_case(); //todo: @fixme @wip + return 1; + } + + public interface IFoo { } + public class Foo : IFoo { } + + [Test] + public void Original_case() + { + var count = 0; + var container = new Container(rules => + rules.WithFactorySelector( + (request, single, many) => + { + ++count; + return single + ?? many.FindFirst(request.ServiceKey, static (sk, f) => f.Key.Equals(sk))?.Value; + })); + + container.Register(); // Default + container.Register(serviceKey: "my"); // Keyed + _ = container.Resolve(); // Custom factory selector invoked + Assert.AreEqual(1, count); + + _ = container.Resolve("my"); // Custom factory selector NOT invoked + Assert.AreEqual(2, count); + } +} diff --git a/test/DryIoc.TestRunner/Program.cs b/test/DryIoc.TestRunner/Program.cs index 998a61024..c427c9121 100644 --- a/test/DryIoc.TestRunner/Program.cs +++ b/test/DryIoc.TestRunner/Program.cs @@ -9,7 +9,8 @@ public class Program { public static void Main() { - new GHIssue503_Compile_time_container().Run(); + new GHIssue667_Resolve_with_serviceKey_does_not_invoke_factory_selector().Run(); + // new GHIssue503_Compile_time_container().Run(); // new GHIssue659_Can_I_inspect_a_scope_for_all_the_dependencies_resolved_in_the_scope().Run(); // new GHIssue191_Optional_IResolverContext_argument_in_Func_of_service().Run(); // new GHIssue619_FaultySingletonDependency().Run();