1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
use std::fmt::Debug;
use serde::{Serialize, Deserialize};
use cs_utils::{random_number, traits::Random, random_str, random_str_rg};

/// A test message for framed stream testing purposes.
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq)]
pub enum TestStreamMessage {
    Ping(String),
    Pong(Option<String>, String),
    Data(Vec<u8>),
    Eof,
}

impl Random for TestStreamMessage {
    fn random() -> TestStreamMessage {
        return match random_number(0..=u16::MAX) % 4 {
            0 => TestStreamMessage::Ping(random_str_rg(16..=32)),
            1 => TestStreamMessage::Pong(Some(random_str(32)), random_str_rg(32..=64)),
            2 => TestStreamMessage::Data(random_str_rg(8..=256).as_bytes().to_vec()),
            3 => TestStreamMessage::Eof,
            _ => unreachable!(),
        };
    }
}