use core::mem::size_of;
use super::{doubly::*, *};
#[cfg(feature = "alloc")]
use crate::mem::Boxed;
#[test]
#[rustfmt::skip]
fn doubly_linked_sizes_raw() {
assert_eq!(2 + 0 + 0, size_of::<DoublyLinkedList8Node::<()>>());
assert_eq![2 + 1 + 0, size_of::<DoublyLinkedList8Node::<u8>>()];
assert_eq![2 + 2 + 0, size_of::<DoublyLinkedList8Node::<u16>>()];
assert_eq![2 + 4 + 2, size_of::<DoublyLinkedList8Node::<u32>>()];
assert_eq![2 + 8 + 6, size_of::<DoublyLinkedList8Node::<u64>>()];
assert_eq![2 + 16 + 6, size_of::<DoublyLinkedList8Node::<u128>>()];
assert_eq![3, size_of::<DoublyLinkedList8::<u8, (), 0>>()];
assert_eq![4, size_of::<DoublyLinkedList8::<u16, (), 0>>()];
assert_eq![4, size_of::<DoublyLinkedList8::<u32, (), 0>>()];
assert_eq![8, size_of::<DoublyLinkedList8::<u64, (), 0>>()];
assert_eq![8, size_of::<DoublyLinkedList8::<u128, (), 0>>()];
assert_eq![3 + 1 + 2, size_of::<DoublyLinkedList8::<u8, (), 1>>()];
assert_eq![4 + 2 + 2, size_of::<DoublyLinkedList8::<u16, (), 1>>()];
assert_eq![4 + 4 + 4, size_of::<DoublyLinkedList8::<u32, (), 1>>()];
assert_eq![8 + 8 + 8, size_of::<DoublyLinkedList8::<u64, (), 1>>()];
assert_eq![8 + 16 + 8, size_of::<DoublyLinkedList8::<u128, (), 1>>()];
assert_eq!(4 + 0, size_of::<DoublyLinkedList16Node::<()>>());
assert_eq![4 + 1 + 1, size_of::<DoublyLinkedList16Node::<u8>>()];
assert_eq![4 + 2 + 0, size_of::<DoublyLinkedList16Node::<u16>>()];
assert_eq![4 + 4 + 0, size_of::<DoublyLinkedList16Node::<u32>>()];
assert_eq![4 + 8 + 4, size_of::<DoublyLinkedList16Node::<u64>>()];
assert_eq![4 + 16 + 4, size_of::<DoublyLinkedList16Node::<u128>>()];
assert_eq![6, size_of::<DoublyLinkedList16::<u8, (), 0>>()];
assert_eq![6, size_of::<DoublyLinkedList16::<u16, (), 0>>()];
assert_eq![8, size_of::<DoublyLinkedList16::<u32, (), 0>>()];
assert_eq![8, size_of::<DoublyLinkedList16::<u64, (), 0>>()];
assert_eq![8, size_of::<DoublyLinkedList16::<u128, (), 0>>()];
assert_eq![6 + 1 + 5, size_of::<DoublyLinkedList16::<u8, (), 1>>()];
assert_eq![6 + 2 + 4, size_of::<DoublyLinkedList16::<u16, (), 1>>()];
assert_eq![8 + 4 + 4, size_of::<DoublyLinkedList16::<u32, (), 1>>()];
assert_eq![8 + 8 + 8, size_of::<DoublyLinkedList16::<u64, (), 1>>()];
assert_eq![8 + 16 + 8, size_of::<DoublyLinkedList16::<u128, (), 1>>()];
assert_eq![6 + (1 + 5) * 10, size_of::<DoublyLinkedList16::<u8, (), 10>>()];
assert_eq![6 + (2 + 4) * 10, size_of::<DoublyLinkedList16::<u16, (), 10>>()];
assert_eq![8 + (4 + 4) * 10, size_of::<DoublyLinkedList16::<u32, (), 10>>()];
assert_eq![8 + (8 + 8) * 10, size_of::<DoublyLinkedList16::<u64, (), 10>>()];
assert_eq![8 + (16 + 8) * 10, size_of::<DoublyLinkedList16::<u128, (), 10>>()];
assert_eq!(8 + 0 + 0, size_of::<DoublyLinkedList32Node::<()>>());
assert_eq![8 + 1 + 3, size_of::<DoublyLinkedList32Node::<u8>>()];
assert_eq![8 + 2 + 2, size_of::<DoublyLinkedList32Node::<u16>>()];
assert_eq![8 + 4 + 0, size_of::<DoublyLinkedList32Node::<u32>>()];
assert_eq![8 + 8 + 0, size_of::<DoublyLinkedList32Node::<u64>>()];
assert_eq![8 + 16 + 0, size_of::<DoublyLinkedList32Node::<u128>>()];
assert_eq![12, size_of::<DoublyLinkedList32::<u8, (), 0>>()];
assert_eq![12, size_of::<DoublyLinkedList32::<u16, (), 0>>()];
assert_eq![12, size_of::<DoublyLinkedList32::<u32, (), 0>>()];
assert_eq![16, size_of::<DoublyLinkedList32::<u64, (), 0>>()];
assert_eq![16, size_of::<DoublyLinkedList32::<u128, (), 0>>()];
assert_eq![12 + 1 + 11, size_of::<DoublyLinkedList32::<u8, (), 1>>()];
assert_eq![12 + 2 + 10, size_of::<DoublyLinkedList32::<u16, (), 1>>()];
assert_eq![12 + 4 + 8, size_of::<DoublyLinkedList32::<u32, (), 1>>()];
assert_eq![16 + 8 + 8, size_of::<DoublyLinkedList32::<u64, (), 1>>()];
assert_eq![16 + 16 + 8, size_of::<DoublyLinkedList32::<u128, (), 1>>()];
assert_eq![
765,
size_of::<DoublyLinkedList8::<u8, (), { u8::MAX as usize - 1 }>>()
];
assert_eq![
1536,
size_of::<DoublyLinkedList16::<u8, (), { u8::MAX as usize }>>()
];
assert_eq![
393_210,
size_of::<DoublyLinkedList16::<u8, (), { u16::MAX as usize - 1 }>>()
];
assert_eq![
786_432,
size_of::<DoublyLinkedList32::<u8, (), { u16::MAX as usize }>>()
];
assert_eq![
51_539_607_540,
size_of::<DoublyLinkedList32::<u8, (), { u32::MAX as usize - 1 }>>()
];
}
#[test]
#[cfg(feature = "alloc")]
fn doubly_linked_sizes_boxed() {
assert_eq![16, size_of::<DoublyLinkedList8::<u8, Boxed, 10>>()];
assert_eq![16, size_of::<DoublyLinkedList8::<u128, Boxed, 10>>()];
assert_eq![16, size_of::<DoublyLinkedList16::<u8, Boxed, 10>>()];
assert_eq![16, size_of::<DoublyLinkedList16::<u128, Boxed, 10>>()];
assert_eq![24, size_of::<DoublyLinkedList32::<u8, Boxed, 10>>()];
assert_eq![24, size_of::<DoublyLinkedList32::<u128, Boxed, 10>>()];
}
#[test]
fn singly_linked() {
let mut list = SinglyLinkedList8::<i32, (), 3>::default();
}