public void should_begin_monitoring_when_started_if_mapping_exists()
        {
            var buildMonitor = Substitute.For<IBuildMonitor>();
            var buildMonitorFactory = Substitute.For<IBuildMonitorFactory>();
            buildMonitorFactory.Create(Arg.Any<IInputDevice>()).Returns(buildMonitor);
            var buildMonitorFactories = Substitute.For<IIndex<string, IBuildMonitorFactory>>();
            buildMonitorFactories["key"].ReturnsForAnyArgs(buildMonitorFactory);

            var outputDevice = new OutputDeviceBuilder().Build();

            var inputDevice = new InputDeviceBuilder().Build();

            var mapping = new Mapping { OutputDeviceId = outputDevice.Id };
            mapping.InputGroups.Add(new InputGroup { InputDeviceId = inputDevice.Id, Inputs = { "Build1", "Build2" } });

            var config = new ConfigBuilder()
                .WithOutputDevice(outputDevice)
                .WithInputDevice(inputDevice)
                .WithMapping(mapping)
                .Build();

            var service = new EmanateService(config, buildMonitorFactories);

            service.Start();

            buildMonitor.Received().BeginMonitoring();
        }
        public void should_not_begin_monitoring_when_started_if_no_mapping()
        {
            var buildMonitor = Substitute.For<IBuildMonitor>();
            var buildMonitorFactory = Substitute.For<IBuildMonitorFactory>();
            buildMonitorFactory.Create(Arg.Any<IInputDevice>()).Returns(buildMonitor);
            var buildMonitorFactories = Substitute.For<IIndex<string, IBuildMonitorFactory>>();
            buildMonitorFactories["key"].Returns(buildMonitorFactory);

            var service = new EmanateService(new GlobalConfig(), buildMonitorFactories);

            service.Start();

            buildMonitor.DidNotReceive().BeginMonitoring();
        }
 public void should_populate_string_properties()
 {
     var monitor = new Mock<IBuildMonitor>();
     var output = new Mock<IOutput>();
     var service = new EmanateService(monitor.Object, output.Object);
 }