From f58e5f12545ce2f654cadcc386d13b4b4496f276 Mon Sep 17 00:00:00 2001 From: Simon G Date: Fri, 23 Oct 2020 14:54:22 +0200 Subject: [PATCH] #12: update test --- .../OpenGenericRegistrationTest.cs | 42 +++++++++++++++++-- 1 file changed, 38 insertions(+), 4 deletions(-) diff --git a/Test.LightweightIocContainer/OpenGenericRegistrationTest.cs b/Test.LightweightIocContainer/OpenGenericRegistrationTest.cs index d5d5ff4..391a96a 100644 --- a/Test.LightweightIocContainer/OpenGenericRegistrationTest.cs +++ b/Test.LightweightIocContainer/OpenGenericRegistrationTest.cs @@ -2,7 +2,9 @@ // Created: 2020-09-18 // Copyright(c) 2020 SimonG. All Rights Reserved. +using JetBrains.Annotations; using LightweightIocContainer; +using LightweightIocContainer.Exceptions; using LightweightIocContainer.Interfaces; using NUnit.Framework; @@ -11,24 +13,56 @@ namespace Test.LightweightIocContainer [TestFixture] public class OpenGenericRegistrationTest { + private IIocContainer _iocContainer; + + [UsedImplicitly] public interface ITest { } + [UsedImplicitly] public class Test : ITest { } - + + [SetUp] + public void SetUp() => _iocContainer = new IocContainer(); + + [TearDown] + public void TearDown() => _iocContainer.Dispose(); + [Test] public void TestRegisterOpenGenericType() { - IIocContainer iocContainer = new IocContainer(); - iocContainer.Register(typeof(ITest<>), typeof(Test<>)); + _iocContainer.RegisterOpenGenerics(typeof(ITest<>), typeof(Test<>)); - ITest test = iocContainer.Resolve>(); + ITest test = _iocContainer.Resolve>(); Assert.NotNull(test); } + + [Test] + public void TestRegisterOpenGenericTypeAsSingleton() + { + _iocContainer.RegisterOpenGenerics(typeof(ITest<>), typeof(Test<>), Lifestyle.Singleton); + + ITest test = _iocContainer.Resolve>(); + Assert.NotNull(test); + + ITest secondTest = _iocContainer.Resolve>(); + Assert.NotNull(secondTest); + + Assert.AreEqual(test, secondTest); + Assert.AreSame(test, secondTest); + } + + [Test] + public void TestRegisterOpenGenericTypeAsMultitonThrowsException() + => Assert.Throws(() => _iocContainer.RegisterOpenGenerics(typeof(ITest<>), typeof(Test<>), Lifestyle.Multiton)); + + [Test] + public void TestRegisterNonOpenGenericTypeWithOpenGenericsFunctionThrowsException() + => Assert.Throws(() => _iocContainer.RegisterOpenGenerics(typeof(int), typeof(int))); } } \ No newline at end of file