diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/ICSharpCode.Reports.Core.csproj b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/ICSharpCode.Reports.Core.csproj index d3c92910f3..e51980a584 100644 --- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/ICSharpCode.Reports.Core.csproj +++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/ICSharpCode.Reports.Core.csproj @@ -244,6 +244,7 @@ + diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Globals/ServiceContainer.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Globals/ServiceContainer.cs new file mode 100644 index 0000000000..1f9918dfd3 --- /dev/null +++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Globals/ServiceContainer.cs @@ -0,0 +1,54 @@ +/* + * Created by SharpDevelop. + * User: Peter Forstmeier + * Date: 11.02.2011 + * Time: 20:15 + * + * To change this template use Tools | Options | Coding | Edit Standard Headers. + */ +using System; +using System.Collections.Generic; + +namespace ICSharpCode.Reports.Core.Globals +{ + /// + /// Description of . + /// + public static class ServiceContainer + + { + private static Dictionary services = new Dictionary(); + + public static void InitializeServiceContainer() + { + + } + + public static void AddService(T service) + { + services.Add(typeof(T), service); + } + + + public static bool Contains (Type serviceType) + { + object service; + + services.TryGetValue(serviceType, out service); + if (service != null) { + return true; + } + return false; + } + + + public static object GetService(Type serviceType) + { + object service; + + services.TryGetValue(serviceType, out service); + + return service; + } + } +} diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Test/ICSharpCode.Reports.Core.Test/Globals/ServiceContainerFixture.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Test/ICSharpCode.Reports.Core.Test/Globals/ServiceContainerFixture.cs new file mode 100644 index 0000000000..bc4aec79a3 --- /dev/null +++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Test/ICSharpCode.Reports.Core.Test/Globals/ServiceContainerFixture.cs @@ -0,0 +1,84 @@ +/* + * Created by SharpDevelop. + * User: Peter Forstmeier + * Date: 11.02.2011 + * Time: 20:26 + * + * To change this template use Tools | Options | Coding | Edit Standard Headers. + */ +using System; +using NUnit.Framework; +using ICSharpCode.Reports.Core.Globals; + + +namespace ICSharpCode.Reports.Core.Test.Globals +{ + + public interface ITestInterface + { + bool Test(); + } + + + public class MyTestImplementation : ITestInterface + { + + + public bool Test() + { + throw new NotImplementedException(); + } + } + + + [TestFixture] + public class ServiceContainerFixture + { + [Test] + public void GetServiceFromContainer() + { + var service = ServiceContainer.GetService(typeof(ITestInterface)); + Assert.That (service,Is.Not.Null); + Assert.That (service,Is.AssignableFrom(typeof(MyTestImplementation))); + Assert.That (service,Is.AssignableTo (typeof(ITestInterface))); + } + + + [Test] + [ExpectedException(typeof(System.ArgumentException))] + public void ShouldNotAddServiceMoreThanOneTime() + { + ServiceContainer.AddService(new MyTestImplementation()); + } + + + [Test] + public void ContainsService() + { + bool contains = ServiceContainer.Contains(typeof(ITestInterface)); + Assert.That(contains,Is.True); + } + + + [Test] + public void DosNotContainsService() + { + bool contains = ServiceContainer.Contains(typeof(IServiceProvider)); + Assert.That(contains,Is.False); + } + + + [TestFixtureSetUp] + public void Init() + { + ServiceContainer.InitializeServiceContainer(); + ServiceContainer.AddService(new MyTestImplementation()); + } + + [TestFixtureTearDown] + public void Dispose() + { + // TODO: Add tear down code. + } + } +} diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Test/ICSharpCode.Reports.Core.Test/ICSharpCode.Reports.Core.Test.csproj b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Test/ICSharpCode.Reports.Core.Test/ICSharpCode.Reports.Core.Test.csproj index 54df47fb98..ac0605e97a 100644 --- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Test/ICSharpCode.Reports.Core.Test/ICSharpCode.Reports.Core.Test.csproj +++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Test/ICSharpCode.Reports.Core.Test/ICSharpCode.Reports.Core.Test.csproj @@ -80,6 +80,7 @@ + @@ -121,6 +122,7 @@ +