public void Multiple_shortcuts_observer_should_be_notified_about_different_events()
        {
            //Arrange
            var shortcutObserver = new MultipleShortcutsObserver();

            Fixture.ShortcutDetector.RegisterShortcut(new CtrlAltDel());
            Fixture.ShortcutDetector.RegisterShortcut(new CtrlAltDigitPermutation());
            Fixture.ShortcutDetector.Subscribe(shortcutObserver);

            //Act
            Fixture.Press(Key.LeftCtrl);
            Fixture.Press(Key.LeftAlt);
            Fixture.Press(Key.Delete);

            Fixture.Release(Key.Delete);
            Fixture.Press(Key.D7);

            Fixture.Release(Key.D7);

            //Assert
            shortcutObserver.CtrlAltDelPressedCounter.Should().Be(1);
            shortcutObserver.CtrlAltDelReleasedCounter.Should().Be(1);

            shortcutObserver.CtrlAltDigitPressedCounter.Should().Be(1);
            shortcutObserver.CtrlAltDigitReleasedCounter.Should().Be(1);
            shortcutObserver.LastPressedDigitKey[0].Should().Be(Key.D7);
            shortcutObserver.LastReleasedDigitKey[0].Should().Be(Key.D7);
        }
        public void Should_throw_on_subscribing_observer_when_shortcut_is_not_registered()
        {
            //Arrange
            var shortcutObserver = new MultipleShortcutsObserver();

            Fixture.ShortcutDetector.RegisterShortcut(new CtrlAltDel());

            //Act & Assert
            Action subscription = () => Fixture.ShortcutDetector.Subscribe(shortcutObserver);

            subscription.ShouldThrow <Exception>();
        }