public void TestImplementationRegister()
        {
            //Arrange
            var reg = new DynamicRegistrantWithoutResolver(r => r.Register <IDummy, Dummy>());

            //Act
            var res = reg.GetRegisteredTypeAssociation().ToArray();

            //Assert
            res.Should().AllBeOfType <ImplementationRegisteredElement>().And.HaveCount(1);
            var elem = (ImplementationRegisteredElement)res.Single();

            elem.RegisteredType.Should().Be <IDummy>();
            elem.ImplementationType.Should().Be <Dummy>();
            elem.Name.Should().BeNullOrEmpty();
            elem.Factory.Should().BeNull();
            elem.IsSingleton.Should().BeFalse();
        }
        public void TestSimpleRegisterWithFactorySingleton()
        {
            //Arrange
            Dummy CreatFunc(IResolverService resolver) => new Dummy();

            var reg = new DynamicRegistrantWithoutResolver(r => r.Register(CreatFunc, true));

            //Act
            var res = reg.GetRegisteredTypeAssociation().ToArray();

            //Assert
            res.Should().AllBeOfType <SimpleRegisteredElement>().And.HaveCount(1);
            var elem = (SimpleRegisteredElement)res.Single();

            elem.RegisteredType.Should().Be <Dummy>();
            elem.IsSingleton.Should().BeTrue();
            //elem.Factory.Should().Be((Func<Dummy>) CreatFunc); Todo: Check that !
        }
        public void TestImplementationRegisterNamedSingleton()
        {
            //Arrange
            const string NAME = "MyName";
            var          reg  = new DynamicRegistrantWithoutResolver(r => r.Register <IDummy, Dummy>(NAME, isSingleton: true));

            //Act
            var res = reg.GetRegisteredTypeAssociation().ToArray();

            //Assert
            res.Should().AllBeOfType <ImplementationRegisteredElement>().And.HaveCount(1);
            var elem = (ImplementationRegisteredElement)res.Single();

            elem.RegisteredType.Should().Be <IDummy>();
            elem.ImplementationType.Should().Be <Dummy>();
            elem.Name.Should().Be(NAME);
            elem.Factory.Should().BeNull();
            elem.IsSingleton.Should().BeTrue();
        }
        public void TestImplementationRegisterWithFactory()
        {
            //Arrange
            Dummy CreatFunc(IResolverService resolver) => new Dummy();

            var reg = new DynamicRegistrantWithoutResolver(r => r.Register <IDummy, Dummy>(factory: CreatFunc));

            //Act
            var res = reg.GetRegisteredTypeAssociation().ToArray();

            //Assert
            res.Should().AllBeOfType <ImplementationRegisteredElement>().And.HaveCount(1);
            var elem = (ImplementationRegisteredElement)res.Single();

            elem.RegisteredType.Should().Be <IDummy>();
            elem.ImplementationType.Should().Be <Dummy>();
            elem.Name.Should().BeNullOrEmpty();
            elem.IsSingleton.Should().BeFalse();
            //elem.Factory.Should().Be((Func<Dummy>)CreatFunc); Todo: Check that !
        }
        public void TestImplementationRegisterNamedWithFactorySingleton()
        {
            //Arrange
            const string NAME = "MyName";

            Dummy CreatFunc(IResolverService resolver) => new Dummy();

            var reg = new DynamicRegistrantWithoutResolver(r => r.Register <IDummy, Dummy>(NAME, CreatFunc, true));

            //Act
            var res = reg.GetRegisteredTypeAssociation().ToArray();

            //Assert
            res.Should().AllBeOfType <ImplementationRegisteredElement>().And.HaveCount(1);
            var elem = (ImplementationRegisteredElement)res.Single();

            elem.RegisteredType.Should().Be <IDummy>();
            elem.ImplementationType.Should().Be <Dummy>();
            elem.Name.Should().Be(NAME);
            elem.IsSingleton.Should().BeTrue();
            //elem.Factory.Should().Be((Func<Dummy>)CreatFunc); Todo: Check that !
        }