using Developpez.Dotnet.ComponentModel; using NUnit.Framework; namespace Developpez.Dotnet.Tests.ComponentModel { [TestFixture(Description="Tests de la classe Singleton")] public class SingletonTests { private class Foo { public static int InstanceCount { get; private set; } protected Foo() { InstanceCount++; } } private class Bar { public static int InstanceCount { get; private set; } protected Bar() { InstanceCount++; } } [Test(Description = "Vérifie qu'une instance unique existe pour un type donné")] public void Check_SingletonUniqueInstance() { Assert.AreEqual(Foo.InstanceCount, 0); Assert.AreEqual(Bar.InstanceCount, 0); Foo foo1 = Singleton.Instance; Foo foo2 = Singleton.Instance; Assert.AreSame(foo1, foo2); Assert.AreEqual(Foo.InstanceCount, 1); Assert.AreEqual(Bar.InstanceCount, 0); Bar bar1 = Singleton.Instance; Bar bar2 = Singleton.Instance; Assert.AreSame(bar1, bar2); Assert.AreEqual(Foo.InstanceCount, 1); Assert.AreEqual(Bar.InstanceCount, 1); } } }