using System; using System.Collections.Generic; using NUnit.Framework; using TINK.Services; namespace TestShareeLib.Services { [TestFixture] public class TestServicesContainerMutable { [Test] public void TestCtor() { var typeA = new MyTypeA(); var typeB = new MyTypeB(); var serviceContainer = new ServicesContainerMutableT( new List { typeA, typeB, typeB }, typeA.GetType().FullName); Assert.That( serviceContainer, Is.EqualTo(new List { typeA, typeB }).AsCollection); Assert.That( serviceContainer.Active, Is.EqualTo(typeA)); } [Test] public void TestSetActive() { var typeA = new MyTypeA(); var typeB = new MyTypeB(); var serviceContainer = new ServicesContainerMutableT( new List { typeA, typeB }, typeA.GetType().FullName); serviceContainer.SetActive(typeB.GetType().FullName); Assert.That( serviceContainer.Active, Is.EqualTo(typeB)); } [Test] public void TestSetActiveNotExists() { var typeA = new MyTypeA(); var typeB = new MyTypeB(); var serviceContainer = new ServicesContainerMutableT( new List { typeA, typeB }, typeA.GetType().FullName); Assert.That( () => serviceContainer.SetActive(new MyTypeC().GetType().FullName), Throws.TypeOf()); } private class MyTypeA { } private class MyTypeB { } private class MyTypeC { } [Test] public void TestCtor2() { var container = new ServicesContainerMutableT(new List { new MyTypeA(), new MyTypeB() }, typeof(MyTypeB).FullName); Assert.That(container.Active.GetType().FullName, Is.EqualTo("TestShareeLib.Services.TestServicesContainerMutable+MyTypeB")); } [Test] public void TestCtorExceptionDupes() { Assert.That(() => new ServicesContainerMutableT(new List { new MyTypeA(), new MyTypeB(), new MyTypeA() }, typeof(MyTypeB).FullName), Throws.InstanceOf()); } [Test] public void TestCtorExceptionActiveNotFound() { Assert.That(() => new ServicesContainerMutableT(new List { new MyTypeA(), new MyTypeB() }, "MyTypeF"), Throws.InstanceOf()); } [Test] public void TestSetActive2() { var container = new ServicesContainerMutableT(new List { new MyTypeA(), new MyTypeB() }, typeof(MyTypeB).FullName); container.SetActive(typeof(MyTypeA).FullName); Assert.That(container.Active.GetType().FullName, Is.EqualTo("TestShareeLib.Services.TestServicesContainerMutable+MyTypeA")); } } }