mirror of
https://gitlab.com/libeigen/eigen.git
synced 2026-04-10 11:34:33 +08:00
161 lines
3.9 KiB
C
161 lines
3.9 KiB
C
|
|
/*
|
||
|
|
* Tiny Vector Matrix Library
|
||
|
|
* Dense Vector Matrix Libary of Tiny size using Expression Templates
|
||
|
|
*
|
||
|
|
* Copyright (C) 2001 - 2003 Olaf Petzold <opetzold@users.sourceforge.net>
|
||
|
|
*
|
||
|
|
* This library is free software; you can redistribute it and/or
|
||
|
|
* modify it under the terms of the GNU Lesser General Public
|
||
|
|
* License as published by the Free Software Foundation; either
|
||
|
|
* version 2.1 of the License, or (at your option) any later version.
|
||
|
|
*
|
||
|
|
* This library 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
|
||
|
|
* Lesser General Public License for more details.
|
||
|
|
*
|
||
|
|
* You should have received a copy of the GNU Lesser General Public
|
||
|
|
* License along with this library; if not, write to the Free Software
|
||
|
|
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||
|
|
*
|
||
|
|
* $Id: TestSTL.h,v 1.1 2004/04/24 11:55:15 opetzold Exp $
|
||
|
|
*/
|
||
|
|
|
||
|
|
#ifndef TVMET_TEST_STL_H
|
||
|
|
#define TVMET_TEST_STL_H
|
||
|
|
|
||
|
|
#include <vector>
|
||
|
|
#include <algorithm>
|
||
|
|
|
||
|
|
#include <cppunit/extensions/HelperMacros.h>
|
||
|
|
|
||
|
|
#include <tvmet/Vector.h>
|
||
|
|
#include <tvmet/Matrix.h>
|
||
|
|
|
||
|
|
/**
|
||
|
|
* gernell test case
|
||
|
|
*/
|
||
|
|
template <class T>
|
||
|
|
class TestSTL : public CppUnit::TestFixture
|
||
|
|
{
|
||
|
|
CPPUNIT_TEST_SUITE( TestSTL );
|
||
|
|
CPPUNIT_TEST( vector_ctor );
|
||
|
|
CPPUNIT_TEST( vector_copy );
|
||
|
|
CPPUNIT_TEST( matrix_ctor );
|
||
|
|
CPPUNIT_TEST( matrix_copy );
|
||
|
|
CPPUNIT_TEST_SUITE_END();
|
||
|
|
|
||
|
|
private:
|
||
|
|
typedef tvmet::Vector<T, 3> vector_type;
|
||
|
|
typedef tvmet::Matrix<T, 3, 3> matrix_type;
|
||
|
|
|
||
|
|
typedef std::vector<T> stlvec;
|
||
|
|
|
||
|
|
public:
|
||
|
|
TestSTL() { }
|
||
|
|
|
||
|
|
public: // cppunit interface
|
||
|
|
/** cppunit hook for fixture set up. */
|
||
|
|
void setUp();
|
||
|
|
|
||
|
|
/** cppunit hook for fixture tear down. */
|
||
|
|
void tearDown();
|
||
|
|
|
||
|
|
protected:
|
||
|
|
void vector_ctor();
|
||
|
|
void vector_copy();
|
||
|
|
|
||
|
|
void matrix_ctor();
|
||
|
|
void matrix_copy();
|
||
|
|
|
||
|
|
private:
|
||
|
|
stlvec stl_v1;
|
||
|
|
stlvec stl_v2;
|
||
|
|
vector_type v1;
|
||
|
|
matrix_type m1;
|
||
|
|
};
|
||
|
|
|
||
|
|
/*****************************************************************************
|
||
|
|
* Implementation Part I (cppunit part)
|
||
|
|
*** *************************************************************************/
|
||
|
|
|
||
|
|
template <class T>
|
||
|
|
void TestSTL<T>::setUp() {
|
||
|
|
stl_v1.push_back(static_cast<T>(1));
|
||
|
|
stl_v1.push_back(static_cast<T>(2));
|
||
|
|
stl_v1.push_back(static_cast<T>(3));
|
||
|
|
|
||
|
|
stl_v2.push_back(static_cast<T>(1));
|
||
|
|
stl_v2.push_back(static_cast<T>(2));
|
||
|
|
stl_v2.push_back(static_cast<T>(3));
|
||
|
|
stl_v2.push_back(static_cast<T>(4));
|
||
|
|
stl_v2.push_back(static_cast<T>(5));
|
||
|
|
stl_v2.push_back(static_cast<T>(6));
|
||
|
|
stl_v2.push_back(static_cast<T>(7));
|
||
|
|
stl_v2.push_back(static_cast<T>(8));
|
||
|
|
stl_v2.push_back(static_cast<T>(9));
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
template <class T>
|
||
|
|
void TestSTL<T>::tearDown() {
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
/*****************************************************************************
|
||
|
|
* Implementation Part II (vector)
|
||
|
|
****************************************************************************/
|
||
|
|
|
||
|
|
|
||
|
|
template <class T>
|
||
|
|
void
|
||
|
|
TestSTL<T>::vector_ctor() {
|
||
|
|
vector_type v(stl_v1.begin(), stl_v1.end());
|
||
|
|
|
||
|
|
CPPUNIT_ASSERT( std::equal(stl_v1.begin(), stl_v1.end(), v.begin()) == true );
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
template <class T>
|
||
|
|
void
|
||
|
|
TestSTL<T>::vector_copy() {
|
||
|
|
vector_type v;
|
||
|
|
|
||
|
|
std::copy(stl_v1.begin(), stl_v1.end(), v.begin());
|
||
|
|
|
||
|
|
CPPUNIT_ASSERT( std::equal(stl_v1.begin(), stl_v1.end(), v.begin()) == true );
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
/*****************************************************************************
|
||
|
|
* Implementation Part II (matrix)
|
||
|
|
****************************************************************************/
|
||
|
|
|
||
|
|
|
||
|
|
template <class T>
|
||
|
|
void
|
||
|
|
TestSTL<T>::matrix_ctor() {
|
||
|
|
matrix_type m(stl_v2.begin(), stl_v2.end());
|
||
|
|
|
||
|
|
CPPUNIT_ASSERT( std::equal(stl_v2.begin(), stl_v2.end(), m.begin()) == true );
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
template <class T>
|
||
|
|
void
|
||
|
|
TestSTL<T>::matrix_copy() {
|
||
|
|
matrix_type m;
|
||
|
|
|
||
|
|
std::copy(stl_v2.begin(), stl_v2.end(), m.begin());
|
||
|
|
|
||
|
|
CPPUNIT_ASSERT( std::equal(stl_v2.begin(), stl_v2.end(), m.begin()) == true );
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
#endif // TVMET_TEST_STL_H
|
||
|
|
|
||
|
|
// Local Variables:
|
||
|
|
// mode:C++
|
||
|
|
// End:
|