konnektoren_core/events/
game_event.rs

1use serde::{Deserialize, Serialize};
2
3use super::{EventType, event::EventTrait};
4
5#[derive(Debug, Clone, Copy, PartialEq, Serialize, Deserialize, Default)]
6pub enum GameEvent {
7    #[default]
8    Started,
9}
10
11impl EventTrait for GameEvent {
12    fn get_type(&self) -> EventType {
13        EventType::Game
14    }
15
16    fn get_action(&self) -> &str {
17        match self {
18            GameEvent::Started => "Started",
19        }
20    }
21}
22
23#[cfg(test)]
24mod tests {
25    use super::*;
26
27    #[test]
28    fn test_default_game_event() {
29        let event = GameEvent::default();
30        assert_eq!(event, GameEvent::Started);
31    }
32
33    #[test]
34    fn test_get_type() {
35        let event = GameEvent::Started;
36        assert_eq!(event.get_type(), EventType::Game);
37    }
38
39    #[test]
40    fn test_get_action() {
41        let event = GameEvent::Started;
42        assert_eq!(event.get_action(), "Started");
43    }
44
45    #[test]
46    fn test_serde_serialization() {
47        let event = GameEvent::Started;
48        let serialized = serde_json::to_string(&event).unwrap();
49        assert_eq!(serialized, "\"Started\"");
50        let deserialized: GameEvent = serde_json::from_str(&serialized).unwrap();
51        assert_eq!(deserialized, GameEvent::Started);
52    }
53}