use super::alloc::*;
use super::time::*;
use crate::time::Duration;

#[test]
fn align() {
    // UEFI ABI specifies that allocation alignment minimum is always 8. So this can be
    // statically verified.
    assert_eq!(POOL_ALIGNMENT, 8);

    // Loop over allocation-request sizes from 0-256 and alignments from 1-128, and verify
    // that in case of overalignment there is at least space for one additional pointer to
    // store in the allocation.
    for i in 0..256 {
        for j in &[1, 2, 4, 8, 16, 32, 64, 128] {
            if *j <= 8 {
                assert_eq!(align_size(i, *j), i);
            } else {
                assert!(align_size(i, *j) > i + std::mem::size_of::<*mut ()>());
            }
        }
    }
}

#[test]
fn epoch() {
    let t = r_efi::system::Time {
        year: 1970,
        month: 1,
        day: 1,
        hour: 0,
        minute: 0,
        second: 0,
        nanosecond: 0,
        timezone: r_efi::efi::UNSPECIFIED_TIMEZONE,
        daylight: 0,
        pad1: 0,
        pad2: 0,
    };
    assert_eq!(system_time_internal::uefi_time_to_duration(t), Duration::new(0, 0));
}
