Skip to main content

ps_uuid/implementations/
display.rs

1use std::fmt;
2
3use crate::UUID;
4
5impl fmt::Display for UUID {
6    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
7        // This format is standard for all UUID variants.
8        write!(
9            f,
10            "{:02x}{:02x}{:02x}{:02x}-{:02x}{:02x}-{:02x}{:02x}-{:02x}{:02x}-{:02x}{:02x}{:02x}{:02x}{:02x}{:02x}",
11            self.bytes[0], self.bytes[1], self.bytes[2], self.bytes[3],
12            self.bytes[4], self.bytes[5],
13            self.bytes[6], self.bytes[7],
14            self.bytes[8], self.bytes[9],
15            self.bytes[10], self.bytes[11], self.bytes[12], self.bytes[13], self.bytes[14], self.bytes[15]
16        )
17    }
18}
19
20#[cfg(test)]
21mod tests {
22    use super::UUID;
23    use std::string::ToString;
24
25    #[test]
26    fn test_uuid_display() {
27        // Test case 1: Nil UUID (all zeros)
28        let nil_uuid = UUID { bytes: [0u8; 16] };
29        let expected_nil = "00000000-0000-0000-0000-000000000000";
30        assert_eq!(nil_uuid.to_string(), expected_nil);
31
32        // Test case 2: Sample UUID with various values
33        let sample_uuid = UUID {
34            bytes: [
35                0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E,
36                0x0F, 0x10,
37            ],
38        };
39        let expected_sample = "01020304-0506-0708-090a-0b0c0d0e0f10";
40        assert_eq!(sample_uuid.to_string(), expected_sample);
41    }
42}