openrtb_native1/
placement_type.rs1#[derive(Debug, PartialEq, Eq, Clone, Copy)]
5pub enum PlacementType {
6 InFeed,
9 AtomicUnit,
11 Outside,
14 Recommendation,
16 ExchangeSpecific(i32),
18}
19
20crate::impl_enum_serde!(
21 #[exchange(ident = ExchangeSpecific, greater = 500)]
22 PlacementType {
23 InFeed = 1,
24 AtomicUnit = 2,
25 Outside = 3,
26 Recommendation = 4,
27 }
28);
29
30#[cfg(test)]
31mod test {
32 use super::*;
33
34 #[test]
35 fn json() -> serde_json::Result<()> {
36 assert!(serde_json::from_str::<PlacementType>("0").is_err());
37 assert!(serde_json::from_str::<PlacementType>("500").is_err());
38
39 let json = "[1,2,501]";
40 let e1: Vec<PlacementType> = serde_json::from_str(json)?;
41 assert_eq!(serde_json::to_string(&e1)?, json);
42 assert_eq!(
43 e1,
44 vec![
45 PlacementType::InFeed,
46 PlacementType::AtomicUnit,
47 PlacementType::ExchangeSpecific(501),
48 ]
49 );
50
51 Ok(())
52 }
53}