twilight_model/gateway/presence/
activity_timestamps.rs1use serde::{Deserialize, Serialize};
2
3#[derive(Clone, Debug, Deserialize, Eq, Hash, PartialEq, Serialize)]
4pub struct ActivityTimestamps {
5 #[serde(skip_serializing_if = "Option::is_none")]
7 pub end: Option<u64>,
8 #[serde(skip_serializing_if = "Option::is_none")]
10 pub start: Option<u64>,
11}
12
13#[cfg(test)]
14mod tests {
15 use super::ActivityTimestamps;
16 use serde_test::Token;
17
18 #[test]
19 fn empty() {
20 let value = ActivityTimestamps {
21 end: None,
22 start: None,
23 };
24
25 serde_test::assert_tokens(
26 &value,
27 &[
28 Token::Struct {
29 name: "ActivityTimestamps",
30 len: 0,
31 },
32 Token::StructEnd,
33 ],
34 );
35 }
36
37 #[test]
38 fn start() {
39 let value = ActivityTimestamps {
40 end: Some(1),
41 start: None,
42 };
43
44 serde_test::assert_tokens(
45 &value,
46 &[
47 Token::Struct {
48 name: "ActivityTimestamps",
49 len: 1,
50 },
51 Token::Str("end"),
52 Token::Some,
53 Token::U64(1),
54 Token::StructEnd,
55 ],
56 );
57 }
58
59 #[test]
60 fn end() {
61 let value = ActivityTimestamps {
62 end: None,
63 start: Some(1),
64 };
65
66 serde_test::assert_tokens(
67 &value,
68 &[
69 Token::Struct {
70 name: "ActivityTimestamps",
71 len: 1,
72 },
73 Token::Str("start"),
74 Token::Some,
75 Token::U64(1),
76 Token::StructEnd,
77 ],
78 );
79 }
80
81 #[test]
82 fn present() {
83 let value = ActivityTimestamps {
84 end: Some(2),
85 start: Some(1),
86 };
87
88 serde_test::assert_tokens(
89 &value,
90 &[
91 Token::Struct {
92 name: "ActivityTimestamps",
93 len: 2,
94 },
95 Token::Str("end"),
96 Token::Some,
97 Token::U64(2),
98 Token::Str("start"),
99 Token::Some,
100 Token::U64(1),
101 Token::StructEnd,
102 ],
103 );
104 }
105}