objc2-core-foundation 0.3.0

Bindings to the CoreFoundation framework
Documentation
use crate::CFUUIDBytes;

impl From<[u8; 16]> for CFUUIDBytes {
    #[inline]
    fn from(value: [u8; 16]) -> Self {
        Self {
            byte0: value[0],
            byte1: value[1],
            byte2: value[2],
            byte3: value[3],
            byte4: value[4],
            byte5: value[5],
            byte6: value[6],
            byte7: value[7],
            byte8: value[8],
            byte9: value[9],
            byte10: value[10],
            byte11: value[11],
            byte12: value[12],
            byte13: value[13],
            byte14: value[14],
            byte15: value[15],
        }
    }
}

impl From<CFUUIDBytes> for [u8; 16] {
    #[inline]
    fn from(value: CFUUIDBytes) -> Self {
        [
            value.byte0,
            value.byte1,
            value.byte2,
            value.byte3,
            value.byte4,
            value.byte5,
            value.byte6,
            value.byte7,
            value.byte8,
            value.byte9,
            value.byte10,
            value.byte11,
            value.byte12,
            value.byte13,
            value.byte14,
            value.byte15,
        ]
    }
}

#[cfg(test)]
#[cfg(feature = "CFBase")]
mod tests {
    use crate::{CFUUIDCreate, CFUUIDCreateFromUUIDBytes, CFUUIDGetUUIDBytes};

    #[test]
    fn eq() {
        let uuid0 = unsafe { CFUUIDCreateFromUUIDBytes(None, [0; 16].into()).unwrap() };
        let uuid1 = unsafe { CFUUIDCreateFromUUIDBytes(None, [1; 16].into()).unwrap() };
        assert_eq!(uuid0, uuid0);
        assert_ne!(uuid0, uuid1);
    }

    #[test]
    fn roundtrip() {
        let uuid = unsafe { CFUUIDCreate(None).unwrap() };
        assert_eq!(uuid, uuid);

        let bytes = unsafe { CFUUIDGetUUIDBytes(&uuid) };
        let same_uuid = unsafe { CFUUIDCreateFromUUIDBytes(None, bytes).unwrap() };
        assert_eq!(uuid, same_uuid);
    }
}