konnektoren_core/events/
game_event.rs1use 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}