using Microsoft.VisualStudio.TestTools.UnitTesting; using Proxy; using Rhino.Mocks; using System.ComponentModel.Composition; using System.ComponentModel.Composition.Hosting; using Util; namespace MEFDemo.unittest { [TestClass] public class MEFDemoProxyIntegrationTest { private CompositionContainer CreateIsolatedContainer(INetwork fakeNetwork = null) { if (fakeNetwork == null) fakeNetwork = MockRepository.GenerateMock(); //slower, but more robust: //var catalog = new AggregateCatalog(); //var assemblyDirectory = "."; //catalog.Catalogs.Add(new DirectoryCatalog(assemblyDirectory)); var catalog = new TypeCatalog(typeof(INetwork), typeof(MachineChecker)); var container = new CompositionContainer(catalog); container.ComposeExportedValue(fakeNetwork); return container; } [TestMethod] public void Isolate_from_Network() { var fakeNetwork = MockRepository.GenerateMock(); var container = CreateIsolatedContainer(fakeNetwork); Program.Run(container); fakeNetwork.AssertWasCalled(x => x.IsLocalMachine(Arg.Is.Anything)); } [TestMethod] public void OnLocalMachine_Run_returns_Local() { var fakseLocalMachineNetwork = MockRepository.GenerateMock(); fakseLocalMachineNetwork.Stub(x => x.IsLocalMachine(Arg.Is.Anything)).Return(true); var container = CreateIsolatedContainer(fakseLocalMachineNetwork); var result = Program.Run(container); Assert.IsTrue(result.ToLower().Contains("local")); } [TestMethod] public void OnUnknownMachine_Run_returns_Foreign() { var container = CreateIsolatedContainer(); var result = Program.Run(container); Assert.IsTrue(result.ToLower().Contains("foreign")); } } }