#12: update test

pull/43/head
Simon G 5 years ago
parent af65b7fd46
commit f58e5f1254
  1. 42
      Test.LightweightIocContainer/OpenGenericRegistrationTest.cs

@ -2,7 +2,9 @@
// Created: 2020-09-18 // Created: 2020-09-18
// Copyright(c) 2020 SimonG. All Rights Reserved. // Copyright(c) 2020 SimonG. All Rights Reserved.
using JetBrains.Annotations;
using LightweightIocContainer; using LightweightIocContainer;
using LightweightIocContainer.Exceptions;
using LightweightIocContainer.Interfaces; using LightweightIocContainer.Interfaces;
using NUnit.Framework; using NUnit.Framework;
@ -11,24 +13,56 @@ namespace Test.LightweightIocContainer
[TestFixture] [TestFixture]
public class OpenGenericRegistrationTest public class OpenGenericRegistrationTest
{ {
private IIocContainer _iocContainer;
[UsedImplicitly]
public interface ITest<T> public interface ITest<T>
{ {
} }
[UsedImplicitly]
public class Test<T> : ITest<T> public class Test<T> : ITest<T>
{ {
} }
[SetUp]
public void SetUp() => _iocContainer = new IocContainer();
[TearDown]
public void TearDown() => _iocContainer.Dispose();
[Test] [Test]
public void TestRegisterOpenGenericType() public void TestRegisterOpenGenericType()
{ {
IIocContainer iocContainer = new IocContainer(); _iocContainer.RegisterOpenGenerics(typeof(ITest<>), typeof(Test<>));
iocContainer.Register(typeof(ITest<>), typeof(Test<>));
ITest<int> test = iocContainer.Resolve<ITest<int>>(); ITest<int> test = _iocContainer.Resolve<ITest<int>>();
Assert.NotNull(test); Assert.NotNull(test);
} }
[Test]
public void TestRegisterOpenGenericTypeAsSingleton()
{
_iocContainer.RegisterOpenGenerics(typeof(ITest<>), typeof(Test<>), Lifestyle.Singleton);
ITest<int> test = _iocContainer.Resolve<ITest<int>>();
Assert.NotNull(test);
ITest<int> secondTest = _iocContainer.Resolve<ITest<int>>();
Assert.NotNull(secondTest);
Assert.AreEqual(test, secondTest);
Assert.AreSame(test, secondTest);
}
[Test]
public void TestRegisterOpenGenericTypeAsMultitonThrowsException()
=> Assert.Throws<InvalidRegistrationException>(() => _iocContainer.RegisterOpenGenerics(typeof(ITest<>), typeof(Test<>), Lifestyle.Multiton));
[Test]
public void TestRegisterNonOpenGenericTypeWithOpenGenericsFunctionThrowsException()
=> Assert.Throws<InvalidRegistrationException>(() => _iocContainer.RegisterOpenGenerics(typeof(int), typeof(int)));
} }
} }
Loading…
Cancel
Save