fast_ntfs 1.0.2

Forked a low-level NTFS filesystem library
Documentation
use fast_ntfs::NtfsTime;

#[cfg(feature = "time")]
#[test]
fn converts_time_offset_datetime_at_supported_boundaries() {
    use time::macros::datetime;

    let dt = datetime!(2013-01-05 18:15 UTC);
    let nt = NtfsTime::try_from(dt).unwrap();
    assert_eq!(nt.nt_timestamp(), 130_018_833_000_000_000);
    assert_eq!(time::OffsetDateTime::from(nt), dt);

    assert_eq!(
        NtfsTime::try_from(datetime!(1601-01-01 0:00 UTC))
            .unwrap()
            .nt_timestamp(),
        0
    );
    assert!(NtfsTime::try_from(datetime!(1600-12-31 23:59:59 UTC)).is_err());
}

#[test]
fn converts_system_time() {
    use std::time::{Duration, SystemTime};

    const EPOCH_DIFFERENCE_IN_SECONDS: u64 = 11_644_473_600;
    let windows_epoch = SystemTime::UNIX_EPOCH
        .checked_sub(Duration::from_secs(EPOCH_DIFFERENCE_IN_SECONDS))
        .unwrap();
    assert_eq!(NtfsTime::try_from(windows_epoch).unwrap().nt_timestamp(), 0);

    let now = SystemTime::now();
    let ntfs_time = NtfsTime::try_from(now).unwrap();
    assert!(ntfs_time.nt_timestamp() > 132_539_328_000_000_000);
}