template<typename VectorType> void zeroSizedVector() { VectorType t1; if (VectorType::SizeAtCompileTime == Dynamic || VectorType::SizeAtCompileTime==0) { zeroReduction(t1); VERIFY(t1.size() == 0); VectorType t2(DenseIndex(0)); // DenseIndex disambiguates with 0-the-null-pointer (error with gcc 4.4 and MSVC8) VERIFY(t2.size() == 0); zeroReduction(t2); VERIFY(t1==t2); } }
void fixedSizeMatrixConstruction() { Scalar raw[4]; for(int k=0; k<4; ++k) raw[k] = internal::random<Scalar>(); { Matrix<Scalar,4,1> m(raw); Array<Scalar,4,1> a(raw); for(int k=0; k<4; ++k) VERIFY(m(k) == raw[k]); for(int k=0; k<4; ++k) VERIFY(a(k) == raw[k]); VERIFY_IS_EQUAL(m,(Matrix<Scalar,4,1>(raw[0],raw[1],raw[2],raw[3]))); VERIFY((a==(Array<Scalar,4,1>(raw[0],raw[1],raw[2],raw[3]))).all()); } { Matrix<Scalar,3,1> m(raw); Array<Scalar,3,1> a(raw); for(int k=0; k<3; ++k) VERIFY(m(k) == raw[k]); for(int k=0; k<3; ++k) VERIFY(a(k) == raw[k]); VERIFY_IS_EQUAL(m,(Matrix<Scalar,3,1>(raw[0],raw[1],raw[2]))); VERIFY((a==Array<Scalar,3,1>(raw[0],raw[1],raw[2])).all()); } { Matrix<Scalar,2,1> m(raw), m2( (DenseIndex(raw[0])), (DenseIndex(raw[1])) ); Array<Scalar,2,1> a(raw), a2( (DenseIndex(raw[0])), (DenseIndex(raw[1])) ); for(int k=0; k<2; ++k) VERIFY(m(k) == raw[k]); for(int k=0; k<2; ++k) VERIFY(a(k) == raw[k]); VERIFY_IS_EQUAL(m,(Matrix<Scalar,2,1>(raw[0],raw[1]))); VERIFY((a==Array<Scalar,2,1>(raw[0],raw[1])).all()); for(int k=0; k<2; ++k) VERIFY(m2(k) == DenseIndex(raw[k])); for(int k=0; k<2; ++k) VERIFY(a2(k) == DenseIndex(raw[k])); } { Matrix<Scalar,1,2> m(raw), m2( (DenseIndex(raw[0])), (DenseIndex(raw[1])) ), m3( (int(raw[0])), (int(raw[1])) ), m4( (float(raw[0])), (float(raw[1])) ); Array<Scalar,1,2> a(raw), a2( (DenseIndex(raw[0])), (DenseIndex(raw[1])) ); for(int k=0; k<2; ++k) VERIFY(m(k) == raw[k]); for(int k=0; k<2; ++k) VERIFY(a(k) == raw[k]); VERIFY_IS_EQUAL(m,(Matrix<Scalar,1,2>(raw[0],raw[1]))); VERIFY((a==Array<Scalar,1,2>(raw[0],raw[1])).all()); for(int k=0; k<2; ++k) VERIFY(m2(k) == DenseIndex(raw[k])); for(int k=0; k<2; ++k) VERIFY(a2(k) == DenseIndex(raw[k])); for(int k=0; k<2; ++k) VERIFY(m3(k) == int(raw[k])); for(int k=0; k<2; ++k) VERIFY((m4(k)) == Scalar(float(raw[k]))); } { Matrix<Scalar,1,1> m(raw), m1(raw[0]), m2( (DenseIndex(raw[0])) ), m3( (int(raw[0])) ); Array<Scalar,1,1> a(raw), a1(raw[0]), a2( (DenseIndex(raw[0])) ); VERIFY(m(0) == raw[0]); VERIFY(a(0) == raw[0]); VERIFY(m1(0) == raw[0]); VERIFY(a1(0) == raw[0]); VERIFY(m2(0) == DenseIndex(raw[0])); VERIFY(a2(0) == DenseIndex(raw[0])); VERIFY(m3(0) == int(raw[0])); VERIFY_IS_EQUAL(m,(Matrix<Scalar,1,1>(raw[0]))); VERIFY((a==Array<Scalar,1,1>(raw[0])).all()); } }