resize.cpp 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145
  1. /*
  2. [auto_generated]
  3. libs/numeric/odeint/test_external/eigen/resize.cpp
  4. [begin_description]
  5. tba.
  6. [end_description]
  7. Copyright 2013 Karsten Ahnert
  8. Copyright 2013 Mario Mulansky
  9. Distributed under the Boost Software License, Version 1.0.
  10. (See accompanying file LICENSE_1_0.txt or
  11. copy at http://www.boost.org/LICENSE_1_0.txt)
  12. */
  13. #include <boost/config.hpp>
  14. #ifdef BOOST_MSVC
  15. #pragma warning(disable:4996)
  16. #endif
  17. #define BOOST_TEST_MODULE odeint_eigen_resize
  18. #include <boost/test/unit_test.hpp>
  19. #include <boost/numeric/odeint/external/eigen/eigen_resize.hpp>
  20. using namespace boost::unit_test;
  21. using namespace boost::numeric::odeint;
  22. BOOST_AUTO_TEST_SUITE( eigen_resize )
  23. BOOST_AUTO_TEST_CASE( test_compile_time_matrix )
  24. {
  25. typedef Eigen::Matrix< double , 1 , 1 > matrix_type;
  26. matrix_type a , b;
  27. boost::numeric::odeint::resize( a , b );
  28. BOOST_CHECK( boost::numeric::odeint::same_size( a , b ) );
  29. BOOST_CHECK_EQUAL( a.rows() , 1 );
  30. BOOST_CHECK_EQUAL( a.cols() , 1 );
  31. }
  32. BOOST_AUTO_TEST_CASE( test_rumtime_matrix )
  33. {
  34. typedef Eigen::Matrix< double , Eigen::Dynamic , Eigen::Dynamic > matrix_type;
  35. matrix_type a( 5 , 2 ) , b;
  36. BOOST_CHECK_EQUAL( a.rows() , 5 );
  37. BOOST_CHECK_EQUAL( a.cols() , 2 );
  38. BOOST_CHECK_EQUAL( b.rows() , 0 );
  39. BOOST_CHECK_EQUAL( b.cols() , 0 );
  40. BOOST_CHECK( !boost::numeric::odeint::same_size( a , b ) );
  41. boost::numeric::odeint::resize( b , a );
  42. BOOST_CHECK_EQUAL( a.rows() , 5 );
  43. BOOST_CHECK_EQUAL( a.cols() , 2 );
  44. BOOST_CHECK_EQUAL( b.rows() , 5 );
  45. BOOST_CHECK_EQUAL( b.cols() , 2 );
  46. BOOST_CHECK( boost::numeric::odeint::same_size( a , b ) );
  47. }
  48. BOOST_AUTO_TEST_CASE( test_rumtime_matrix2 )
  49. {
  50. typedef Eigen::Matrix< double , Eigen::Dynamic , Eigen::Dynamic > matrix_type;
  51. matrix_type a( 5 , 2 ) , b( 2 , 3 );
  52. BOOST_CHECK_EQUAL( a.rows() , 5 );
  53. BOOST_CHECK_EQUAL( a.cols() , 2 );
  54. BOOST_CHECK_EQUAL( b.rows() , 2 );
  55. BOOST_CHECK_EQUAL( b.cols() , 3 );
  56. BOOST_CHECK( !boost::numeric::odeint::same_size( a , b ) );
  57. boost::numeric::odeint::resize( b , a );
  58. BOOST_CHECK_EQUAL( a.rows() , 5 );
  59. BOOST_CHECK_EQUAL( a.cols() , 2 );
  60. BOOST_CHECK_EQUAL( b.rows() , 5 );
  61. BOOST_CHECK_EQUAL( b.cols() , 2 );
  62. BOOST_CHECK( boost::numeric::odeint::same_size( a , b ) );
  63. }
  64. BOOST_AUTO_TEST_CASE( test_compile_time_array )
  65. {
  66. typedef Eigen::Array< double , 1 , 1 > array_type;
  67. array_type a , b;
  68. boost::numeric::odeint::resize( a , b );
  69. BOOST_CHECK( boost::numeric::odeint::same_size( a , b ) );
  70. BOOST_CHECK_EQUAL( a.rows() , 1 );
  71. BOOST_CHECK_EQUAL( a.cols() , 1 );
  72. }
  73. BOOST_AUTO_TEST_CASE( test_rumtime_array )
  74. {
  75. typedef Eigen::Array< double , Eigen::Dynamic , Eigen::Dynamic > array_type;
  76. array_type a( 5 , 2 ) , b;
  77. BOOST_CHECK_EQUAL( a.rows() , 5 );
  78. BOOST_CHECK_EQUAL( a.cols() , 2 );
  79. BOOST_CHECK_EQUAL( b.rows() , 0 );
  80. BOOST_CHECK_EQUAL( b.cols() , 0 );
  81. BOOST_CHECK( !boost::numeric::odeint::same_size( a , b ) );
  82. boost::numeric::odeint::resize( b , a );
  83. BOOST_CHECK_EQUAL( a.rows() , 5 );
  84. BOOST_CHECK_EQUAL( a.cols() , 2 );
  85. BOOST_CHECK_EQUAL( b.rows() , 5 );
  86. BOOST_CHECK_EQUAL( b.cols() , 2 );
  87. BOOST_CHECK( boost::numeric::odeint::same_size( a , b ) );
  88. }
  89. BOOST_AUTO_TEST_CASE( test_rumtime_array2 )
  90. {
  91. typedef Eigen::Array< double , Eigen::Dynamic , Eigen::Dynamic > array_type;
  92. array_type a( 5 , 2 ) , b( 2 , 3 );
  93. BOOST_CHECK_EQUAL( a.rows() , 5 );
  94. BOOST_CHECK_EQUAL( a.cols() , 2 );
  95. BOOST_CHECK_EQUAL( b.rows() , 2 );
  96. BOOST_CHECK_EQUAL( b.cols() , 3 );
  97. BOOST_CHECK( !boost::numeric::odeint::same_size( a , b ) );
  98. boost::numeric::odeint::resize( b , a );
  99. BOOST_CHECK_EQUAL( a.rows() , 5 );
  100. BOOST_CHECK_EQUAL( a.cols() , 2 );
  101. BOOST_CHECK_EQUAL( b.rows() , 5 );
  102. BOOST_CHECK_EQUAL( b.cols() , 2 );
  103. BOOST_CHECK( boost::numeric::odeint::same_size( a , b ) );
  104. }
  105. BOOST_AUTO_TEST_SUITE_END()