You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

60 lines
2.0 KiB
C#

3 years ago
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<INetwork>();
//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<INetwork>(fakeNetwork);
return container;
}
[TestMethod]
public void Isolate_from_Network()
{
var fakeNetwork = MockRepository.GenerateMock<INetwork>();
var container = CreateIsolatedContainer(fakeNetwork);
Program.Run(container);
fakeNetwork.AssertWasCalled(x => x.IsLocalMachine(Arg<string>.Is.Anything));
}
[TestMethod]
public void OnLocalMachine_Run_returns_Local()
{
var fakseLocalMachineNetwork = MockRepository.GenerateMock<INetwork>();
fakseLocalMachineNetwork.Stub(x => x.IsLocalMachine(Arg<string>.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"));
}
}
}