connection_utils/test/
stream_test_message.rs1use serde::{Serialize, Deserialize};
2use std::{fmt::{Debug, self}, cmp::Ordering};
3use cs_utils::{random_number, traits::Random, random_str, random_str_rg};
4
5#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
7pub enum TestStreamMessage {
8 Ping(String),
9 Pong(Option<String>, String),
10 Data(Vec<u8>),
11 Eof,
12}
13
14impl fmt::Display for TestStreamMessage {
15 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
16 match self {
17 TestStreamMessage::Ping(id) => {
18 return f.debug_tuple("TestStreamMessage::Ping")
19 .field(id)
20 .finish();
21 },
22 TestStreamMessage::Pong(data, id) => {
23 return f.debug_tuple("TestStreamMessage::Pong")
24 .field(id)
25 .field(data)
26 .finish();
27 },
28 TestStreamMessage::Data(data) => {
29 return f.debug_tuple("TestStreamMessage::Data")
30 .field(&data.len())
31 .finish();
32 },
33 TestStreamMessage::Eof => {
34 return f.debug_tuple("TestStreamMessage::Eof")
35 .finish();
36 },
37 };
38 }
39}
40
41impl TestStreamMessage {
42 fn compare(&self, other: &TestStreamMessage) -> Ordering {
43 let self_str = format!("{:?}", self);
44 let other_str = format!("{:?}", other);
45
46 if self_str < other_str {
47 return Ordering::Less;
48 }
49
50 if self_str > other_str {
51 return Ordering::Greater;
52 }
53
54 return Ordering::Equal;
55 }
56}
57
58impl PartialOrd for TestStreamMessage {
59 fn partial_cmp(&self, other: &TestStreamMessage) -> Option<Ordering> {
60 return Some(self.compare(other));
61 }
62}
63
64impl Ord for TestStreamMessage {
65 fn cmp(&self, other: &TestStreamMessage) -> Ordering {
66 return self.compare(other);
67 }
68}
69
70impl Random for TestStreamMessage {
71 fn random() -> TestStreamMessage {
72 return match random_number(0..=u16::MAX) % 4 {
73 0 => TestStreamMessage::Ping(random_str_rg(16..=32)),
74 1 => TestStreamMessage::Pong(Some(random_str(32)), random_str_rg(32..=64)),
75 2 => TestStreamMessage::Data(random_str_rg(8..=256).as_bytes().to_vec()),
76 3 => TestStreamMessage::Eof,
77 _ => unreachable!(),
78 };
79 }
80}