rust-switcher 1.0.9

Windows keyboard layout switcher and text conversion utility
Documentation
use windows::Win32::Foundation::WPARAM;

use crate::{
    input::hotkeys::{
        HK_CONVERT_LAST_WORD_ID, HK_CONVERT_SELECTION_ID, HK_PAUSE_TOGGLE_ID, HK_SWITCH_LAYOUT_ID,
        HotkeyAction, action_from_id,
    },
    platform::win::{hotkey_action_from_wparam, hotkey_id_from_wparam},
};

#[test]
fn hotkey_id_from_wparam_roundtrip() {
    assert_eq!(
        hotkey_id_from_wparam(WPARAM(HK_CONVERT_LAST_WORD_ID as usize)),
        HK_CONVERT_LAST_WORD_ID
    );
    assert_eq!(
        hotkey_id_from_wparam(WPARAM(HK_PAUSE_TOGGLE_ID as usize)),
        HK_PAUSE_TOGGLE_ID
    );
    assert_eq!(
        hotkey_id_from_wparam(WPARAM(HK_CONVERT_SELECTION_ID as usize)),
        HK_CONVERT_SELECTION_ID
    );
    assert_eq!(
        hotkey_id_from_wparam(WPARAM(HK_SWITCH_LAYOUT_ID as usize)),
        HK_SWITCH_LAYOUT_ID
    );
}

#[test]
fn action_from_id_known_values() {
    assert_eq!(
        action_from_id(HK_CONVERT_LAST_WORD_ID),
        Some(HotkeyAction::ConvertLastWord)
    );
    assert_eq!(
        action_from_id(HK_PAUSE_TOGGLE_ID),
        Some(HotkeyAction::PauseToggle)
    );
    assert_eq!(
        action_from_id(HK_CONVERT_SELECTION_ID),
        Some(HotkeyAction::ConvertSelection)
    );
    assert_eq!(
        action_from_id(HK_SWITCH_LAYOUT_ID),
        Some(HotkeyAction::SwitchLayout)
    );
}

#[test]
fn action_from_id_unknown_is_none() {
    assert_eq!(action_from_id(0), None);
    assert_eq!(action_from_id(19999), None);
    assert_eq!(action_from_id(29999), None);
}

#[test]
fn hotkey_action_from_wparam_known_values() {
    assert_eq!(
        hotkey_action_from_wparam(WPARAM(HK_CONVERT_LAST_WORD_ID as usize)),
        Some(HotkeyAction::ConvertLastWord)
    );
    assert_eq!(
        hotkey_action_from_wparam(WPARAM(HK_PAUSE_TOGGLE_ID as usize)),
        Some(HotkeyAction::PauseToggle)
    );
    assert_eq!(
        hotkey_action_from_wparam(WPARAM(HK_CONVERT_SELECTION_ID as usize)),
        Some(HotkeyAction::ConvertSelection)
    );
    assert_eq!(
        hotkey_action_from_wparam(WPARAM(HK_SWITCH_LAYOUT_ID as usize)),
        Some(HotkeyAction::SwitchLayout)
    );
}

#[test]
fn hotkey_action_from_wparam_unknown_is_none() {
    assert_eq!(hotkey_action_from_wparam(WPARAM(0)), None);
    assert_eq!(hotkey_action_from_wparam(WPARAM(19999)), None);
    assert_eq!(hotkey_action_from_wparam(WPARAM(29999)), None);
}