/*
* Project: MoleCuilder
* Description: creates and alters molecular systems
* Copyright (C) 2010-2012 University of Bonn. All rights reserved.
*
*
* This file is part of MoleCuilder.
*
* MoleCuilder 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 of the License, or
* (at your option) any later version.
*
* MoleCuilder 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 MoleCuilder. If not, see .
*/
/*
* VectorSetUnitTest.cpp
*
* Created on: Jan 06, 2012
* Author: heber
*/
// include config.h
#ifdef HAVE_CONFIG_H
#include
#endif
using namespace std;
#include
#include
#include
#include "VectorSetUnitTest.hpp"
#include "RealSpaceMatrix.hpp"
#include "VectorSet.hpp"
#ifdef HAVE_TESTRUNNER
#include "UnitTestMain.hpp"
#endif /*HAVE_TESTRUNNER*/
#include
/********************************************** Test classes **************************************/
// Registers the fixture into the 'registry'
CPPUNIT_TEST_SUITE_REGISTRATION( VectorSetTest );
void VectorSetTest::setUp()
{
list.push_back(Vector(0.,0.,0.));
list.push_back(Vector(1.,0.,0.));
list.push_back(Vector(0.,1.,0.));
list.push_back(Vector(0.,1.,1.));
list.push_back(Vector(2.,1.,0.));
list.push_back(Vector(1.,2.,3.));
CPPUNIT_ASSERT_EQUAL( (size_t)6, list.size() );
}
void VectorSetTest::tearDown()
{
list.clear();
}
/** UnitTest for Cstor(Set &)
*/
void VectorSetTest::copyConstructorTest()
{
VECTORSET(std::vector) worklist(list);
CPPUNIT_ASSERT_EQUAL( list.size(), worklist.size() );
std::vector::const_iterator iter = list.begin();
VECTORSET(std::vector)::const_iterator workiter = worklist.begin();
for (;(iter != list.end()) && (workiter != worklist.end()); ++iter, ++workiter)
CPPUNIT_ASSERT( ((*iter)) == (*workiter) );
}
/** UnitTest for translate()
*/
void VectorSetTest::translateTest()
{
VECTORSET(std::vector) worklist(list);
Vector translater(1.,0.,0.);
worklist.translate(translater);
VECTORSET(std::vector)::const_iterator iter = list.begin();
VECTORSET(std::vector)::const_iterator workiter = worklist.begin();
for (;(iter != list.end()) && (workiter != worklist.end()); ++iter, ++workiter)
CPPUNIT_ASSERT( ((*iter)+(translater)) == (*workiter) );
}
/** UnitTest for transform()
*/
void VectorSetTest::transformTest()
{
VECTORSET(std::vector) worklist(list);
RealSpaceMatrix M;
M.setIdentity();
M *= 2.;
worklist.transform(M);
VECTORSET(std::vector)::const_iterator iter = list.begin();
VECTORSET(std::vector)::const_iterator workiter = worklist.begin();
for (;(iter != list.end()) && (workiter != worklist.end()); ++iter, ++workiter)
CPPUNIT_ASSERT( (2.*(*iter)) == (*workiter) );
}
/** UnitTest for minDistance()
*/
void VectorSetTest::minDistanceTest()
{
VECTORSET(std::vector) worklist(list);
{
VECTORSET(std::vector) somelist;
for (double x=1.;x<6.;++x)
somelist.push_back(Vector(x,0.,0.));
Vector center(0.,0.,0.);
Vector mindist = somelist.minDistance(center);
CPPUNIT_ASSERT_EQUAL (Vector(1., 0., 0.), mindist);
}
{
Vector center(5.,0.,0.);
Vector mindist = worklist.minDistance(center);
CPPUNIT_ASSERT_EQUAL (Vector(2., 1., 0.)-center, mindist);
}
{
for (VECTORSET(std::vector)::const_iterator iter = worklist.begin();
iter != worklist.end(); ++iter) {
Vector mindist = worklist.minDistance(*iter);
CPPUNIT_ASSERT_EQUAL( Vector(0.,0.,0.), mindist );
}
}
}
/** UnitTest for minDistance()
*/
void VectorSetTest::minDistSquaredTest()
{
VECTORSET(std::vector) worklist(list);
{
Vector center(5.,0.,0.);
double mindist = worklist.minDistSquared(center);
double check = Vector(2., 1., 0.).DistanceSquared(center);
CPPUNIT_ASSERT_EQUAL( check, mindist );
}
{
for (VECTORSET(std::vector)::const_iterator iter = worklist.begin();
iter != worklist.end(); ++iter) {
double mindist = worklist.minDistSquared(*iter);
CPPUNIT_ASSERT_EQUAL( 0., mindist );
}
}
}