use std::{mem, num::NonZeroU16};
use wasm_bindgen_test::*;
use crate::{
primitives::{AnyData, DynFunc, SignalSet},
runtimes::ClientRuntime,
signals::SignalId,
signals::{SignalInner, SignalValue},
};
#[cfg(not(feature = "unsafe-cell"))]
#[wasm_bindgen_test]
fn wasm_sizes() {
assert_eq!(mem::size_of::<AnyData>(), 8);
assert_eq!(mem::size_of::<DynFunc>(), 16);
let size = if cfg!(debug_assertions) { 20 } else { 16 };
assert_eq!(mem::size_of::<SignalValue>(), size);
assert_eq!(mem::size_of::<SignalSet<3, SignalId<ClientRuntime>>>(), 20);
let size = if cfg!(debug_assertions) { 40 } else { 36 };
assert_eq!(mem::size_of::<SignalInner<ClientRuntime>>(), size);
}
#[cfg(feature = "unsafe-cell")]
#[wasm_bindgen_test]
fn wasm_sizes() {
assert_eq!(mem::size_of::<AnyData>(), 8);
assert_eq!(mem::size_of::<DynFunc>(), 16);
let size = if cfg!(debug_assertions) { 20 } else { 16 };
assert_eq!(mem::size_of::<SignalValue>(), size);
assert_eq!(mem::size_of::<SignalSet<3, SignalId<ClientRuntime>>>(), 16);
let size = if cfg!(debug_assertions) { 36 } else { 32 };
assert_eq!(mem::size_of::<SignalInner<ClientRuntime>>(), size);
}
#[allow(dead_code, non_camel_case_types)]
#[wasm_bindgen_test]
fn test_subscriber_size() {
assert_eq!(mem::size_of::<Vec<SignalId<ClientRuntime>>>(), 12);
assert_eq!(mem::size_of::<[(u16, u16); 1]>(), 4);
enum Store_u15_NoRT_big {
Arr([(u16, NonZeroU16); 8]),
Vec(Vec<(u16, u16)>),
}
assert_eq!(mem::size_of::<Store_u15_NoRT_big>(), 32);
enum Store_u15_NoRT_small {
Arr([(u16, u16); 2]),
Vec(Vec<(u16, u16)>),
}
assert_eq!(mem::size_of::<Store_u15_NoRT_small>(), 16);
enum Store_u15_RT_big {
Arr([(u16, u16, u16); 5]),
Vec(Vec<(u16, u16, u16)>),
}
assert_eq!(mem::size_of::<Store_u15_RT_big>(), 32);
enum Store_u15_RT_small {
Arr([(u16, u16, u16); 1]),
Vec(Vec<(u16, u16, u16)>),
}
assert_eq!(mem::size_of::<Store_u15_RT_small>(), 16);
}