use std::mem;
use cvkg_render_gpu::vertex::{InstanceData, InstanceData3D};
#[test]
fn test_instance_data_3d_size() {
assert_eq!(mem::size_of::<InstanceData3D>(), 80);
}
#[test]
fn test_instance_data_3d_alignment() {
assert_eq!(mem::align_of::<InstanceData3D>(), 4);
}
#[test]
fn test_instance_data_2d_unchanged() {
assert_eq!(mem::size_of::<InstanceData>(), 32);
}
#[test]
fn test_instance_data_3d_model_matrix_packing() {
let id = InstanceData3D {
model_row0: [1.0, 0.0, 0.0, 0.0],
model_row1: [0.0, 1.0, 0.0, 0.0],
model_row2: [0.0, 0.0, 1.0, 0.0],
material_overrides: [0.5, 0.5, 1.0, 1.0],
uv_scale: [2.0, 2.0],
uv_offset: [0.1, 0.2],
};
let bytes = bytemuck::bytes_of(&id);
assert_eq!(bytes.len(), 80);
}
#[test]
fn test_instance_data_3d_default_is_identity() {
let id = InstanceData3D::default();
assert_eq!(id.model_row0, [1.0, 0.0, 0.0, 0.0]);
assert_eq!(id.model_row1, [0.0, 1.0, 0.0, 0.0]);
assert_eq!(id.model_row2, [0.0, 0.0, 1.0, 0.0]);
assert_eq!(id.uv_scale, [1.0, 1.0]);
assert_eq!(id.uv_offset, [0.0, 0.0]);
}