using System; using System.Collections.Generic; using System.Linq; using System.Text; using UnitTestSharp; using ModuleManager; namespace ModuleManager.UnitTests { public class ModuleManagerTests : TestFixture { interface INothingModule { bool Flag { get; set; } } public class Nothing : INothingModule { public bool Flag { get; set; } } public class ListModulesInAssembly : TestFixture { public void Works() { var types = ModuleManager.ListModulesInAssembly( System.Reflection.Assembly.GetExecutingAssembly()); CheckEqual(1, types.Count); CheckEqual(typeof(Nothing), types[0]); } } public class AddModule : TestFixture { public void Works() { var manager = new ModuleManager(); manager.AddModuleType(typeof(Nothing)); string name = typeof(Nothing).Namespace + "." + typeof(Nothing).Name; CheckEqual(1, manager.Modules.Count); CheckEqual(name, manager.Modules[0]); } public void AlreadyInList() { var manager = new ModuleManager(); manager.AddModuleType(typeof(Nothing)); CheckThrow(typeof(Exception)); manager.AddModuleType(typeof(Nothing)); } } public class ExtractModulesFromAssembly : TestFixture { public void Works() { var manager = new ModuleManager(); manager.ExtractModulesFromAssembly( System.Reflection.Assembly.GetExecutingAssembly()); string name = typeof(Nothing).Namespace + "." + typeof(Nothing).Name; CheckEqual(1, manager.Modules.Count); CheckEqual(name, manager.Modules[0]); } } public class GetModule : TestFixture { ModuleManager manager; public override void TestSetup() { manager = new ModuleManager(); manager.ExtractModulesFromAssembly( System.Reflection.Assembly.GetExecutingAssembly()); } public void Works() { INothingModule module = manager.GetModule(manager.Modules.First()); Check(module != null); CheckEqual(typeof(Nothing), module.GetType()); } public void NoSuchModule() { var manager = new ModuleManager(); manager.ExtractModulesFromAssembly( System.Reflection.Assembly.GetExecutingAssembly()); CheckThrow(typeof(Exception)); INothingModule module = manager.GetModule("Your mom"); } public void DoesntRecreate() { var manager = new ModuleManager(); manager.ExtractModulesFromAssembly( System.Reflection.Assembly.GetExecutingAssembly()); var module = manager.GetModule(manager.Modules.First()); module.Flag = true; manager.GetModule(manager.Modules.First()); Check(module.Flag); } } } }