use crate::{Variant, UUID};
impl UUID {
#[must_use]
pub const fn get_version(&self) -> Option<u8> {
match self.get_variant() {
Variant::OSF => Some(self.bytes[6] >> 4),
_ => None,
}
}
}
#[cfg(test)]
mod tests {
use super::UUID;
#[test]
fn test_version_osf() {
let uuid_v0 = UUID {
bytes: [
0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x00, 0x80, 0x86, 0x07, 0x08, 0x09, 0x0A, 0x0B,
0x0C, 0x0D,
],
};
assert_eq!(uuid_v0.get_version(), Some(0));
let uuid_v1 = UUID {
bytes: [
0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x10, 0x80, 0x86, 0x07, 0x08, 0x09, 0x0A, 0x0B,
0x0C, 0x0D,
],
};
assert_eq!(uuid_v1.get_version(), Some(1));
let uuid_v2 = UUID {
bytes: [
0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x20, 0x80, 0x86, 0x07, 0x08, 0x09, 0x0A, 0x0B,
0x0C, 0x0D,
],
};
assert_eq!(uuid_v2.get_version(), Some(2));
let uuid_v3 = UUID {
bytes: [
0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x30, 0x80, 0x86, 0x07, 0x08, 0x09, 0x0A, 0x0B,
0x0C, 0x0D,
],
};
assert_eq!(uuid_v3.get_version(), Some(3));
let uuid_v4 = UUID {
bytes: [
0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x40, 0x80, 0x86, 0x07, 0x08, 0x09, 0x0A, 0x0B,
0x0C, 0x0D,
],
};
assert_eq!(uuid_v4.get_version(), Some(4));
let uuid_v5 = UUID {
bytes: [
0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x50, 0x80, 0x86, 0x07, 0x08, 0x09, 0x0A, 0x0B,
0x0C, 0x0D,
],
};
assert_eq!(uuid_v5.get_version(), Some(5));
let uuid_v6 = UUID {
bytes: [
0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x60, 0x80, 0x86, 0x07, 0x08, 0x09, 0x0A, 0x0B,
0x0C, 0x0D,
],
};
assert_eq!(uuid_v6.get_version(), Some(6));
let uuid_v7 = UUID {
bytes: [
0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x70, 0x80, 0x86, 0x07, 0x08, 0x09, 0x0A, 0x0B,
0x0C, 0x0D,
],
};
assert_eq!(uuid_v7.get_version(), Some(7));
let uuid_v8 = UUID {
bytes: [
0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x80, 0x80, 0x86, 0x07, 0x08, 0x09, 0x0A, 0x0B,
0x0C, 0x0D,
],
};
assert_eq!(uuid_v8.get_version(), Some(8));
}
#[test]
fn test_version_non_osf() {
let uuid_non_osf = UUID {
bytes: [
0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x40, 0x06, 0x00, 0x07, 0x08, 0x09, 0x0A, 0x0B,
0x0C, 0x0D,
],
};
assert_eq!(uuid_non_osf.get_version(), None);
let uuid_non_osf_ms = UUID {
bytes: [
0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x40, 0x06, 0x60, 0x07, 0x08, 0x09, 0x0A, 0x0B,
0x0C, 0x0D,
],
};
assert_eq!(uuid_non_osf_ms.get_version(), None);
}
}