gstreamer_rtsp/
flag_serde.rs
1use glib::{
4 prelude::*,
5 translate::{from_glib, ToGlibPtr},
6 FlagsClass,
7};
8use gst::bitflags_serde_impl;
9
10bitflags_serde_impl!(crate::RTSPEvent);
11bitflags_serde_impl!(crate::RTSPLowerTrans);
12bitflags_serde_impl!(crate::RTSPMethod);
13bitflags_serde_impl!(crate::RTSPProfile);
14bitflags_serde_impl!(crate::RTSPTransMode);
15
16#[cfg(test)]
17mod tests {
18 macro_rules! check_serialize {
19 ($flags:expr, $expected:expr) => {
20 let actual = serde_json::to_string(&$flags).unwrap();
21 assert_eq!(actual, $expected);
22 };
23 }
24
25 macro_rules! check_deserialize {
26 ($ty:ty, $expected:expr, $json:expr) => {
27 let actual: $ty = serde_json::from_str(&$json).unwrap();
28 assert_eq!(actual, $expected);
29 };
30 }
31
32 macro_rules! check_roundtrip {
33 ($ty:ty, $flags:expr) => {
34 let json = serde_json::to_string(&$flags).unwrap();
35 let deserialized: $ty = serde_json::from_str(&json).unwrap();
36 assert_eq!(deserialized, $flags);
37 };
38 }
39
40 #[test]
41 fn test_serialize() {
42 gst::init().unwrap();
43
44 check_serialize!(crate::RTSPEvent::all(), "\"read+write\"");
45 check_serialize!(
46 crate::RTSPLowerTrans::all(),
47 "\"udp+udp-mcast+tcp+http+tls\""
48 );
49 check_serialize!(
50 crate::RTSPMethod::all(),
51 concat!(
52 "\"describe+announce+get-parameter+options+pause+play+record",
53 "+redirect+setup+set-parameter+teardown+get+post\""
54 )
55 );
56 check_serialize!(crate::RTSPProfile::all(), "\"avp+savp+avpf+savpf\"");
57 check_serialize!(crate::RTSPTransMode::all(), "\"rtp+rdt\"");
58 }
59
60 #[test]
61 fn test_deserialize() {
62 gst::init().unwrap();
63
64 check_deserialize!(crate::RTSPEvent, crate::RTSPEvent::all(), "\"read+write\"");
65 check_deserialize!(
66 crate::RTSPLowerTrans,
67 crate::RTSPLowerTrans::all(),
68 "\"udp+udp-mcast+tcp+http+tls\""
69 );
70 check_deserialize!(
71 crate::RTSPMethod,
72 crate::RTSPMethod::all(),
73 concat!(
74 "\"describe+announce+get-parameter+options+pause+play+record",
75 "+redirect+setup+set-parameter+teardown+get+post\""
76 )
77 );
78 check_deserialize!(
79 crate::RTSPProfile,
80 crate::RTSPProfile::all(),
81 "\"avp+savp+avpf+savpf\""
82 );
83 check_deserialize!(
84 crate::RTSPTransMode,
85 crate::RTSPTransMode::all(),
86 "\"rtp+rdt\""
87 );
88 }
89
90 #[test]
91 fn test_serde_roundtrip() {
92 gst::init().unwrap();
93
94 check_roundtrip!(crate::RTSPEvent, crate::RTSPEvent::all());
95 check_roundtrip!(crate::RTSPLowerTrans, crate::RTSPLowerTrans::all());
96 check_roundtrip!(crate::RTSPMethod, crate::RTSPMethod::all());
97 check_roundtrip!(crate::RTSPProfile, crate::RTSPProfile::all());
98 check_roundtrip!(crate::RTSPTransMode, crate::RTSPTransMode::all());
99 }
100}