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 00000000..1246f774 --- /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 998a6102..c427c912 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();