From 53040f53d97f1f4a85a7a90586189240176276ea Mon Sep 17 00:00:00 2001 From: Benoit Jacob Date: Mon, 17 Dec 2007 20:51:40 +0000 Subject: add constructors and accessors/mutators specific to small vectors. Add corresponding unit-test. --- test/smallvectors.cpp | 62 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 test/smallvectors.cpp (limited to 'test/smallvectors.cpp') diff --git a/test/smallvectors.cpp b/test/smallvectors.cpp new file mode 100644 index 000000000..e05937e2f --- /dev/null +++ b/test/smallvectors.cpp @@ -0,0 +1,62 @@ +// This file is part of Eigen, a lightweight C++ template library +// for linear algebra. Eigen itself is part of the KDE project. +// +// Copyright (C) 2006-2007 Benoit Jacob +// +// Eigen is free software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the Free Software +// Foundation; either version 2 or (at your option) any later version. +// +// Eigen is distributed in the hope that it will be useful, but WITHOUT ANY +// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS +// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more +// details. +// +// You should have received a copy of the GNU General Public License along +// with Eigen; if not, write to the Free Software Foundation, Inc., 51 +// Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +// +// As a special exception, if other files instantiate templates or use macros +// or functions from this file, or you compile this file and link it +// with other works to produce a work based on this file, this file does not +// by itself cause the resulting work to be covered by the GNU General Public +// License. This exception does not invalidate any other reasons why a work +// based on this file might be covered by the GNU General Public License. + +#include "main.h" + +namespace Eigen { + +template void smallVectors() +{ + typedef Matrix V2; + typedef Matrix V3; + typedef Matrix V4; + Scalar x1 = random(), + x2 = random(), + x3 = random(), + x4 = random(); + V2 v2(x1, x2); + V3 v3(x1, x2, x3); + V4 v4(x1, x2, x3, x4); + VERIFY_IS_APPROX(x1, v2.x()); + VERIFY_IS_APPROX(x1, v3.x()); + VERIFY_IS_APPROX(x1, v4.x()); + VERIFY_IS_APPROX(x2, v2.y()); + VERIFY_IS_APPROX(x2, v3.y()); + VERIFY_IS_APPROX(x2, v4.y()); + VERIFY_IS_APPROX(x3, v3.z()); + VERIFY_IS_APPROX(x3, v4.z()); + VERIFY_IS_APPROX(x4, v4.w()); +} + +void EigenTest::testSmallVectors() +{ + for(int i = 0; i < m_repeat; i++) { + smallVectors(); + smallVectors(); + smallVectors(); + } +} + +} // namespace Eigen -- cgit v1.2.3