ps_uuid/methods/
get_clock_seq.rs1use crate::UUID;
2
3impl UUID {
4 #[must_use]
5 pub const fn get_clock_seq(&self) -> Option<u16> {
6 match self.get_version() {
7 Some(1 | 2 | 6) => Some(u16::from_be_bytes([self.bytes[8], self.bytes[9]]) & 0x3FFF),
8 _ => None,
9 }
10 }
11}
12
13#[cfg(test)]
14mod tests {
15 use crate::UUID;
16
17 const fn make_uuid_with_version_and_clock_seq(version: u8, clock_seq: u16) -> UUID {
19 let mut uuid = UUID::nil();
20
21 let clock_seq_bytes = clock_seq.to_be_bytes();
23
24 uuid.bytes[8] = clock_seq_bytes[0];
25 uuid.bytes[9] = clock_seq_bytes[1];
26
27 uuid.with_version(version)
29 }
30
31 #[test]
32 fn test_get_clock_seq_version_1() {
33 let clock_seq = 0x3ABC;
34 let uuid = make_uuid_with_version_and_clock_seq(1, clock_seq);
35 assert_eq!(uuid.get_clock_seq(), Some(clock_seq & 0x3FFF));
36 }
37
38 #[test]
39 fn test_get_clock_seq_version_2() {
40 let clock_seq = 0x1234;
41 let uuid = make_uuid_with_version_and_clock_seq(2, clock_seq);
42 assert_eq!(uuid.get_clock_seq(), Some(clock_seq & 0x3FFF));
43 }
44
45 #[test]
46 fn test_get_clock_seq_version_6() {
47 let clock_seq = 0x3FFF;
48 let uuid = make_uuid_with_version_and_clock_seq(6, clock_seq);
49 assert_eq!(uuid.get_clock_seq(), Some(clock_seq & 0x3FFF));
50 }
51
52 #[test]
53 fn test_get_clock_seq_other_version() {
54 let clock_seq = 0x3ABC;
55 let uuid = make_uuid_with_version_and_clock_seq(4, clock_seq);
56 assert_eq!(uuid.get_clock_seq(), None);
57 }
58
59 #[test]
60 fn test_get_clock_seq_invalid_version() {
61 let uuid = UUID::nil();
63
64 assert_eq!(uuid.get_version(), None);
65 assert_eq!(uuid.get_clock_seq(), None);
66 }
67}