virtual-input 0.2.0

API for interacting with virtual input devices
Documentation
use crate::keyboard::KeyboardKeys;
use serde::{Serialize, Serializer};

impl Serialize for KeyboardKeys {
    fn serialize<S: Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
        serializer.serialize_str(&self.to_string())
    }
}

#[cfg(test)]
mod tests {
    use crate::keyboard::{KeyboardKey, KeyboardKeys};
    use serde_test::{assert_ser_tokens, Token};

    #[test]
    fn test_keyboard_keys_serialize() {
        let keys1 = KeyboardKeys::new().add_key(KeyboardKey::L);

        let keys2 = KeyboardKeys::new()
            .add_key(KeyboardKey::RightShift)
            .add_key(KeyboardKey::H);

        let keys3 = KeyboardKeys::new()
            .add_key(KeyboardKey::H)
            .add_key(KeyboardKey::E)
            .add_key(KeyboardKey::L);

        assert_ser_tokens(&keys1, &[Token::String("l")]);
        assert_ser_tokens(&keys2, &[Token::String("right-shift+h")]);
        assert_ser_tokens(&keys3, &[Token::String("h+e+l")]);
    }
}