public void DisposeWillNotFailIfHookWasNeverInstalled()
        {
            // Arrange
            var dummyLowLevelKeyboardWindowsHook = new DummyLowLevelKeyboardWindowsHook((identifier, kbdllhookstruct) => { });

            // Act, Assert
            dummyLowLevelKeyboardWindowsHook.Invoking(h => h.Dispose()).Should().NotThrow <ObjectDisposedException>();
        }
        public void UninstallWillFailIfHookAlreadyUninstalled()
        {
            // Arrange
            var dummyLowLevelKeyboardWindowsHook = new DummyLowLevelKeyboardWindowsHook((identifier, kbdllhookstruct) => { });

            dummyLowLevelKeyboardWindowsHook.Install();

            // Act
            dummyLowLevelKeyboardWindowsHook.Uninstall();

            // Assert
            dummyLowLevelKeyboardWindowsHook.Invoking(h => h.Uninstall()).Should().Throw <ObjectDisposedException>();
        }