1*bf2c3715SXin Li // This file is part of Eigen, a lightweight C++ template library
2*bf2c3715SXin Li // for linear algebra.
3*bf2c3715SXin Li //
4*bf2c3715SXin Li // Copyright (C) 2008 Gael Guennebaud <[email protected]>
5*bf2c3715SXin Li //
6*bf2c3715SXin Li // This Source Code Form is subject to the terms of the Mozilla
7*bf2c3715SXin Li // Public License v. 2.0. If a copy of the MPL was not distributed
8*bf2c3715SXin Li // with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
9*bf2c3715SXin Li
10*bf2c3715SXin Li #include "main.h"
11*bf2c3715SXin Li
verifySizeOf(const MatrixType &)12*bf2c3715SXin Li template<typename MatrixType> void verifySizeOf(const MatrixType&)
13*bf2c3715SXin Li {
14*bf2c3715SXin Li typedef typename MatrixType::Scalar Scalar;
15*bf2c3715SXin Li if (MatrixType::RowsAtCompileTime!=Dynamic && MatrixType::ColsAtCompileTime!=Dynamic)
16*bf2c3715SXin Li VERIFY_IS_EQUAL(std::ptrdiff_t(sizeof(MatrixType)),std::ptrdiff_t(sizeof(Scalar))*std::ptrdiff_t(MatrixType::SizeAtCompileTime));
17*bf2c3715SXin Li else
18*bf2c3715SXin Li VERIFY_IS_EQUAL(sizeof(MatrixType),sizeof(Scalar*) + 2 * sizeof(Index));
19*bf2c3715SXin Li }
20*bf2c3715SXin Li
EIGEN_DECLARE_TEST(sizeof)21*bf2c3715SXin Li EIGEN_DECLARE_TEST(sizeof)
22*bf2c3715SXin Li {
23*bf2c3715SXin Li CALL_SUBTEST(verifySizeOf(Matrix<float, 1, 1>()) );
24*bf2c3715SXin Li CALL_SUBTEST(verifySizeOf(Array<float, 2, 1>()) );
25*bf2c3715SXin Li CALL_SUBTEST(verifySizeOf(Array<float, 3, 1>()) );
26*bf2c3715SXin Li CALL_SUBTEST(verifySizeOf(Array<float, 4, 1>()) );
27*bf2c3715SXin Li CALL_SUBTEST(verifySizeOf(Array<float, 5, 1>()) );
28*bf2c3715SXin Li CALL_SUBTEST(verifySizeOf(Array<float, 6, 1>()) );
29*bf2c3715SXin Li CALL_SUBTEST(verifySizeOf(Array<float, 7, 1>()) );
30*bf2c3715SXin Li CALL_SUBTEST(verifySizeOf(Array<float, 8, 1>()) );
31*bf2c3715SXin Li CALL_SUBTEST(verifySizeOf(Array<float, 9, 1>()) );
32*bf2c3715SXin Li CALL_SUBTEST(verifySizeOf(Array<float, 10, 1>()) );
33*bf2c3715SXin Li CALL_SUBTEST(verifySizeOf(Array<float, 11, 1>()) );
34*bf2c3715SXin Li CALL_SUBTEST(verifySizeOf(Array<float, 12, 1>()) );
35*bf2c3715SXin Li CALL_SUBTEST(verifySizeOf(Vector2d()) );
36*bf2c3715SXin Li CALL_SUBTEST(verifySizeOf(Vector4f()) );
37*bf2c3715SXin Li CALL_SUBTEST(verifySizeOf(Matrix4d()) );
38*bf2c3715SXin Li CALL_SUBTEST(verifySizeOf(Matrix<double, 4, 2>()) );
39*bf2c3715SXin Li CALL_SUBTEST(verifySizeOf(Matrix<bool, 7, 5>()) );
40*bf2c3715SXin Li CALL_SUBTEST(verifySizeOf(MatrixXcf(3, 3)) );
41*bf2c3715SXin Li CALL_SUBTEST(verifySizeOf(MatrixXi(8, 12)) );
42*bf2c3715SXin Li CALL_SUBTEST(verifySizeOf(MatrixXcd(20, 20)) );
43*bf2c3715SXin Li CALL_SUBTEST(verifySizeOf(Matrix<float, 100, 100>()) );
44*bf2c3715SXin Li
45*bf2c3715SXin Li VERIFY(sizeof(std::complex<float>) == 2*sizeof(float));
46*bf2c3715SXin Li VERIFY(sizeof(std::complex<double>) == 2*sizeof(double));
47*bf2c3715SXin Li }
48