ndarray_cg 0.4.0

High-performance computer graphics mathematics library based on ndarray with vectors, matrices, and transformations
Documentation
use super::*;

#[ test ]
fn assumptions()
{
  let align1 = std::mem::align_of::< [ [ u8 ; 3 ] ; 3 ] >();
  let align2 = std::mem::align_of::< [ u8 ; 9 ] >();
  println!( "align : {align1}" );
  assert_eq!( align1, align2, "Same alignment" );

  let size1 = std::mem::size_of::< [ [ u8 ; 3 ] ; 3 ] >();
  let size2 = std::mem::size_of::< [ u8 ; 9 ] >();
  println!( "size : {size1}" );
  assert_eq!( size1, size2, "Same size" );
}

#[ test ]
fn default()
{
  use the_module::{ Mat, IndexingRef, Zero };
  use the_module::mat::DescriptorOrderRowMajor;

  let mat : Mat::< 2, 2, f32, DescriptorOrderRowMajor > = Default::default();
  assert!( IndexingRef::iter_unstable( &mat ).all( | e | e.is_zero() ), "Matrix should not be zero after setting non-zero values" );
  // assert!( Default::is_zero( &mat ), "Matrix should be zero after calling set_zero()" );
  let mat = Mat::< 2, 2, f32, DescriptorOrderRowMajor >::default();
  // assert!( mat.is_zero(), "Matrix should be zero after calling set_zero()" );
  assert!( IndexingRef::iter_unstable( &mat ).all( | e | e.is_zero() ), "Matrix should not be zero after setting non-zero values" );

  let mut mat = Mat::< 2, 2, f32, DescriptorOrderRowMajor >::default().set_raw( [ 1.0, 2.0, 3.0, 4.0 ] );

  assert!( !IndexingRef::iter_unstable( &mat ).all( | e | e.is_zero() ), "Matrix should not be zero after setting non-zero values" );
  // assert!( !mat.is_zero(), "Matrix should not be zero after setting non-zero values" );
  // mat.set_zero();
  mat = Default::default();
  assert!( IndexingRef::iter_unstable( &mat ).all( | e | e.is_zero() ), "Matrix should not be zero after setting non-zero values" );
  // assert!( mat.is_zero(), "Matrix should be zero after calling set_zero()" );

}

#[ test ]
fn test_has_index_dim()
{
  use the_module::{ Mat, Indexable, Ix2 };
  use the_module::mat::DescriptorOrderRowMajor;

  // Test for 0x0 Matrix
  let mat_0x0 = Mat::< 0, 0, f32, DescriptorOrderRowMajor >::default();
  let expected_dim_0x0 = Ix2( 0, 0 );
  let dim_0x0 = mat_0x0.dim();
  assert_eq!( dim_0x0, expected_dim_0x0, "Dimension mismatch for 0x0 matrix" );

  // Test for 1x1 Matrix
  let mat_1x1 = Mat::< 1, 1, f32, DescriptorOrderRowMajor >::default();
  let expected_dim_1x1 = Ix2( 1, 1 );
  let dim_1x1 = mat_1x1.dim();
  assert_eq!( dim_1x1, expected_dim_1x1, "Dimension mismatch for 1x1 matrix" );

  // Test for 2x2 Matrix
  let mat_2x2 = Mat::< 2, 2, f32, DescriptorOrderRowMajor >::default();
  let expected_dim_2x2 = Ix2( 2, 2 );
  let dim_2x2 = mat_2x2.dim();
  assert_eq!( dim_2x2, expected_dim_2x2, "Dimension mismatch for 2x2 matrix" );

  // Test for 3x3 Matrix
  let mat_3x3 = Mat::< 3, 3, f32, DescriptorOrderRowMajor >::default();
  let expected_dim_3x3 = Ix2( 3, 3 );
  let dim_3x3 = mat_3x3.dim();
  assert_eq!( dim_3x3, expected_dim_3x3, "Dimension mismatch for 3x3 matrix" );

  // Test for 2x3 Matrix
  let mat_2x3 = Mat::< 2, 3, f32, DescriptorOrderRowMajor >::default();
  let expected_dim_2x3 = Ix2( 2, 3 );
  let dim_2x3 = mat_2x3.dim();
  assert_eq!( dim_2x3, expected_dim_2x3, "Dimension mismatch for 2x3 matrix" );
}