twilight_model/channel/
video_quality_mode.rs1use serde::{Deserialize, Serialize};
2
3#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, PartialEq, Serialize)]
4#[non_exhaustive]
5#[serde(from = "u8", into = "u8")]
6pub enum VideoQualityMode {
7 Auto,
9 Full,
11 Unknown(u8),
13}
14
15impl From<u8> for VideoQualityMode {
16 fn from(value: u8) -> Self {
17 match value {
18 1 => VideoQualityMode::Auto,
19 2 => VideoQualityMode::Full,
20 unknown => VideoQualityMode::Unknown(unknown),
21 }
22 }
23}
24
25impl From<VideoQualityMode> for u8 {
26 fn from(value: VideoQualityMode) -> Self {
27 match value {
28 VideoQualityMode::Auto => 1,
29 VideoQualityMode::Full => 2,
30 VideoQualityMode::Unknown(unknown) => unknown,
31 }
32 }
33}
34
35impl VideoQualityMode {
36 pub const fn name(self) -> &'static str {
37 match self {
38 Self::Auto => "Auto",
39 Self::Full => "Full",
40 Self::Unknown(_) => "Unknown",
41 }
42 }
43}
44
45#[cfg(test)]
46mod tests {
47 use super::VideoQualityMode;
48 use serde_test::Token;
49
50 #[test]
51 fn variants() {
52 serde_test::assert_tokens(&VideoQualityMode::Auto, &[Token::U8(1)]);
53 serde_test::assert_tokens(&VideoQualityMode::Full, &[Token::U8(2)]);
54 serde_test::assert_tokens(&VideoQualityMode::Unknown(99), &[Token::U8(99)]);
55 }
56
57 #[test]
58 fn names() {
59 assert_eq!("Auto", VideoQualityMode::Auto.name());
60 assert_eq!("Full", VideoQualityMode::Full.name());
61 assert_eq!("Unknown", VideoQualityMode::Unknown(99).name());
62 }
63}