openrtb2/
playback_cessation_mode.rs

1use serde_repr::{Deserialize_repr, Serialize_repr};
2
3/// 5.11 Playback Cessation Modes
4///
5/// The following table lists the various modes for when playback terminates.
6#[derive(Serialize_repr, Deserialize_repr, Debug, PartialEq, Eq, Clone, Copy)]
7#[repr(i32)]
8pub enum PlaybackCessationMode {
9    /// On Video Completion or when Terminated by User
10    CompletionOrUser = 1,
11    /// On Leaving Viewport or when Terminated by User
12    LeavingOrUser,
13    ///  On Leaving Viewport Continues as a Floating/Slider Unit until Video Completion or when
14    /// Terminated by User
15    LeavingContinuesOrUser,
16}
17
18#[cfg(test)]
19mod test {
20    use super::*;
21
22    #[test]
23    fn json() -> serde_json::Result<()> {
24        assert!(serde_json::from_str::<PlaybackCessationMode>("-1").is_err());
25
26        let json = "[1,2]";
27        let e1: Vec<PlaybackCessationMode> = serde_json::from_str(json)?;
28        assert_eq!(
29            e1,
30            vec![
31                PlaybackCessationMode::CompletionOrUser,
32                PlaybackCessationMode::LeavingOrUser
33            ]
34        );
35        assert_eq!(serde_json::to_string(&e1)?, json);
36
37        Ok(())
38    }
39}