public void auto_set_mode() { var subDevice = Substitute.For <IHOTASDevice>(); var buttonMap = new ObservableCollection <IHotasBaseMap>(); buttonMap.Add(new HOTASButton() { ShiftModePage = 43 }); subDevice.IsDeviceLoaded.Returns(true); subDevice.ButtonMap.Returns(buttonMap); subDevice.GetButtonState(Arg.Any <int>()).Returns(true); var subDeviceFactory = Substitute.For <HOTASDeviceFactory>(); subDeviceFactory.CreateHOTASDevice(Arg.Any <IDirectInput>(), Arg.Any <Guid>(), Arg.Any <Guid>(), Arg.Any <string>(), Arg.Any <IHOTASQueue>()).Returns(subDevice); var list = new HOTASCollection(Substitute.For <DirectInputFactory>(), Substitute.For <JoystickFactory>(), Substitute.For <HOTASQueueFactory>(Substitute.For <IKeyboard>()), subDeviceFactory); list.Mode = 1; list.AddDevice(subDevice); list.ListenToAllDevices(); list.AutoSetMode(); Assert.Equal(43, list.Mode); }