Changeset 06f41f3 for src/Graph/unittests
- Timestamp:
- Dec 3, 2012, 9:49:30 AM (12 years ago)
- Branches:
- Action_Thermostats, Add_AtomRandomPerturbation, Add_FitFragmentPartialChargesAction, Add_RotateAroundBondAction, Add_SelectAtomByNameAction, Added_ParseSaveFragmentResults, AddingActions_SaveParseParticleParameters, Adding_Graph_to_ChangeBondActions, Adding_MD_integration_tests, Adding_ParticleName_to_Atom, Adding_StructOpt_integration_tests, AtomFragments, Automaking_mpqc_open, AutomationFragmentation_failures, Candidate_v1.5.4, Candidate_v1.6.0, Candidate_v1.6.1, ChangeBugEmailaddress, ChangingTestPorts, ChemicalSpaceEvaluator, CombiningParticlePotentialParsing, Combining_Subpackages, Debian_Package_split, Debian_package_split_molecuildergui_only, Disabling_MemDebug, Docu_Python_wait, EmpiricalPotential_contain_HomologyGraph, EmpiricalPotential_contain_HomologyGraph_documentation, Enable_parallel_make_install, Enhance_userguide, Enhanced_StructuralOptimization, Enhanced_StructuralOptimization_continued, Example_ManyWaysToTranslateAtom, Exclude_Hydrogens_annealWithBondGraph, FitPartialCharges_GlobalError, Fix_BoundInBox_CenterInBox_MoleculeActions, Fix_ChargeSampling_PBC, Fix_ChronosMutex, Fix_FitPartialCharges, Fix_FitPotential_needs_atomicnumbers, Fix_ForceAnnealing, Fix_IndependentFragmentGrids, Fix_ParseParticles, Fix_ParseParticles_split_forward_backward_Actions, Fix_PopActions, Fix_QtFragmentList_sorted_selection, Fix_Restrictedkeyset_FragmentMolecule, Fix_StatusMsg, Fix_StepWorldTime_single_argument, Fix_Verbose_Codepatterns, Fix_fitting_potentials, Fixes, ForceAnnealing_goodresults, ForceAnnealing_oldresults, ForceAnnealing_tocheck, ForceAnnealing_with_BondGraph, ForceAnnealing_with_BondGraph_continued, ForceAnnealing_with_BondGraph_continued_betteresults, ForceAnnealing_with_BondGraph_contraction-expansion, FragmentAction_writes_AtomFragments, FragmentMolecule_checks_bonddegrees, GeometryObjects, Gui_Fixes, Gui_displays_atomic_force_velocity, ImplicitCharges, IndependentFragmentGrids, IndependentFragmentGrids_IndividualZeroInstances, IndependentFragmentGrids_IntegrationTest, IndependentFragmentGrids_Sole_NN_Calculation, JobMarket_RobustOnKillsSegFaults, JobMarket_StableWorkerPool, JobMarket_unresolvable_hostname_fix, MoreRobust_FragmentAutomation, ODR_violation_mpqc_open, PartialCharges_OrthogonalSummation, PdbParser_setsAtomName, PythonUI_with_named_parameters, QtGui_reactivate_TimeChanged_changes, Recreated_GuiChecks, Rewrite_FitPartialCharges, RotateToPrincipalAxisSystem_UndoRedo, SaturateAtoms_findBestMatching, SaturateAtoms_singleDegree, StoppableMakroAction, Subpackage_CodePatterns, Subpackage_JobMarket, Subpackage_LinearAlgebra, Subpackage_levmar, Subpackage_mpqc_open, Subpackage_vmg, Switchable_LogView, ThirdParty_MPQC_rebuilt_buildsystem, TrajectoryDependenant_MaxOrder, TremoloParser_IncreasedPrecision, TremoloParser_MultipleTimesteps, TremoloParser_setsAtomName, Ubuntu_1604_changes, stable
- Children:
- 9511c7
- Parents:
- b78dfd
- git-author:
- Frederik Heber <heber@…> (09/19/12 13:55:43)
- git-committer:
- Frederik Heber <heber@…> (12/03/12 09:49:30)
- Location:
- src/Graph/unittests
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
src/Graph/unittests/CheckAgainstAdjacencyFileUnitTest.cpp
rb78dfd r06f41f3 39 39 #include <cppunit/ui/text/TestRunner.h> 40 40 41 #include <boost/lambda/lambda.hpp> 41 42 #include <iostream> 42 #include <string> 43 #include <iterator> 44 #include <iostream> 45 #include <vector> 43 46 44 47 #include "CodePatterns/Assert.hpp" … … 76 79 static std::string wrongadjacencyfile1 ="\ 77 80 1 2\n\ 78 2 1 3\n\79 4 35\n\81 2 1\n\ 82 4 5\n\ 80 83 5 4 6\n\ 81 84 6 5 7\n\ … … 98 101 11 10"; 99 102 103 static std::string wrongadjacencyfile3 ="\ 104 1 2\n\ 105 2 1 3\n\ 106 3 2 4\n\ 107 4 3 5\n\ 108 5 4 7\n\ 109 6\n\ 110 7 5 8\n\ 111 8 7 9\n\ 112 9 8 10\n\ 113 10 9 11\n\ 114 11 10"; 115 100 116 // set up and tear down 101 117 void CheckAgainstAdjacencyFileTest::setUp() … … 110 126 CPPUNIT_ASSERT(TestMolecule != NULL); 111 127 for(int i=0;i<ATOM_COUNT;++i){ 112 atoms[i]= World::getInstance().createAtom(); 113 CPPUNIT_ASSERT(atoms[i] != NULL); 114 atoms[i]->setType(hydrogen); 115 TestMolecule->AddAtom(atoms[i]); 116 atomIds[i]= atoms[i]->getId(); 117 } 128 atom *_atom = World::getInstance().createAtom(); 129 CPPUNIT_ASSERT(_atom != NULL); 130 _atom->setType(hydrogen); 131 TestMolecule->AddAtom(_atom); 132 atoms.push_back(_atom); 133 atomIds.push_back(_atom->getId()); 134 } 135 CPPUNIT_ASSERT_EQUAL( (size_t)ATOM_COUNT, atoms.size()); 136 CPPUNIT_ASSERT_EQUAL( (size_t)ATOM_COUNT, atomIds.size()); 118 137 // create linear chain 119 for(int i=0;i<ATOM_COUNT-1;++i) {138 for(int i=0;i<ATOM_COUNT-1;++i) 120 139 atoms[i]->addBond(WorldTime::getTime(), atoms[i+1]); 121 }122 140 123 141 // create map as it should be … … 143 161 } 144 162 145 /** Unit tests for CheckAgainstAdjacencyFile::Create InternalMap().146 * 147 */ 148 void CheckAgainstAdjacencyFileTest::Create InternalMapTest()163 /** Unit tests for CheckAgainstAdjacencyFile::CreateExternalMap(). 164 * 165 */ 166 void CheckAgainstAdjacencyFileTest::CreateExternalMapTest() 149 167 { 150 168 std::stringstream input; 151 169 CheckAgainstAdjacencyFile fileChecker(input); 152 World::getInstance().selectAllAtoms(AllAtoms()); 153 const World &world = World::getInstance(); 154 fileChecker.CreateInternalMap(world.beginAtomSelection(), world.endAtomSelection()); 170 fileChecker.CreateExternalMap(atomIds); 155 171 156 172 // check size (it's 8*2 + 2*1 = 18 keys) 173 CPPUNIT_ASSERT_EQUAL( (size_t)18, fileChecker.ExternalAtomBondMap.size() ); 174 CPPUNIT_ASSERT_EQUAL( (size_t)0, fileChecker.InternalAtomBondMap.size() ); 175 176 // check equality 177 CPPUNIT_ASSERT( comparisonMap.size() == fileChecker.ExternalAtomBondMap.size() ); 178 // std::cout << "comparisonMap: " << comparisonMap << std::endl; 179 // std::cout << "fileChecker.InternalAtomBondMap: " << fileChecker.InternalAtomBondMap << std::endl; 180 CPPUNIT_ASSERT( comparisonMap == fileChecker.ExternalAtomBondMap ); 181 182 // check non-equality: more 183 comparisonMap.insert( std::make_pair( (atomId_t)10, (atomId_t)8) ); 184 CPPUNIT_ASSERT( comparisonMap != fileChecker.ExternalAtomBondMap ); 185 comparisonMap.erase((atomId_t)10); 186 187 // check non-equality: less 188 comparisonMap.erase((atomId_t)9); 189 CPPUNIT_ASSERT( comparisonMap != fileChecker.ExternalAtomBondMap ); 190 } 191 192 /** Unit tests for CheckAgainstAdjacencyFile::ParseInInternalMap(). 193 * 194 */ 195 void CheckAgainstAdjacencyFileTest::ParseInInternalMapTest() 196 { 197 std::stringstream input(adjacencyfile); 198 CheckAgainstAdjacencyFile fileChecker(input); 199 std::vector<atomId_t> noids; 200 fileChecker.CreateExternalMap(noids); 201 202 // check size (it's 8*2 + 2*1 = 18 keys) 203 CPPUNIT_ASSERT_EQUAL( (size_t)0, fileChecker.ExternalAtomBondMap.size() ); 157 204 CPPUNIT_ASSERT_EQUAL( (size_t)18, fileChecker.InternalAtomBondMap.size() ); 158 CPPUNIT_ASSERT_EQUAL( (size_t)0, fileChecker.ExternalAtomBondMap.size() );159 205 160 206 // check equality 161 207 CPPUNIT_ASSERT( comparisonMap.size() == fileChecker.InternalAtomBondMap.size() ); 162 // std::cout << "comparisonMap: " << comparisonMap << std::endl;163 // std::cout << "fileChecker.InternalAtomBondMap: " << fileChecker.InternalAtomBondMap << std::endl;164 208 CPPUNIT_ASSERT( comparisonMap == fileChecker.InternalAtomBondMap ); 165 209 … … 174 218 } 175 219 176 /** Unit tests for CheckAgainstAdjacencyFile::ParseInExternalMap().177 *178 */179 void CheckAgainstAdjacencyFileTest::ParseInExternalMapTest()180 {181 std::stringstream input(adjacencyfile);182 World::getInstance().selectAllAtoms(NoAtoms());183 CheckAgainstAdjacencyFile fileChecker(input);184 fileChecker.CreateInternalMap(World::getInstance().beginAtomSelection(), World::getInstance().endAtomSelection());185 186 // check size (it's 8*2 + 2*1 = 18 keys)187 CPPUNIT_ASSERT_EQUAL( (size_t)0, fileChecker.InternalAtomBondMap.size() );188 CPPUNIT_ASSERT_EQUAL( (size_t)18, fileChecker.ExternalAtomBondMap.size() );189 190 // check equality191 CPPUNIT_ASSERT( comparisonMap.size() == fileChecker.ExternalAtomBondMap.size() );192 CPPUNIT_ASSERT( comparisonMap == fileChecker.ExternalAtomBondMap );193 194 // check non-equality: more195 comparisonMap.insert( std::make_pair( (atomId_t)10, (atomId_t)8) );196 CPPUNIT_ASSERT( comparisonMap != fileChecker.ExternalAtomBondMap );197 comparisonMap.erase((atomId_t)10);198 199 // check non-equality: less200 comparisonMap.erase((atomId_t)9);201 CPPUNIT_ASSERT( comparisonMap != fileChecker.ExternalAtomBondMap );202 }203 204 220 /** Unit tests for CheckAgainstAdjacencyFile::CompareInternalExternalMap(). 205 221 * … … 210 226 CheckAgainstAdjacencyFile fileChecker(input); 211 227 212 // assert non-equality before parsing 213 CPPUNIT_ASSERT( fileChecker.InternalAtomBondMap.size() != fileChecker.ExternalAtomBondMap.size() ); 214 CPPUNIT_ASSERT( fileChecker.InternalAtomBondMap != fileChecker.ExternalAtomBondMap ); 215 CPPUNIT_ASSERT( !fileChecker.CompareInternalExternalMap() ); 216 217 // parse 218 World::getInstance().selectAllAtoms(AllAtoms()); 219 fileChecker.CreateInternalMap(World::getInstance().beginAtomSelection(), World::getInstance().endAtomSelection()); 228 // assert equality before parsing (empty sets should always return true) 229 CPPUNIT_ASSERT( fileChecker.ExternalAtomBondMap.size() != fileChecker.InternalAtomBondMap.size() ); 230 CPPUNIT_ASSERT( fileChecker.ExternalAtomBondMap != fileChecker.InternalAtomBondMap ); 231 CPPUNIT_ASSERT( fileChecker.CompareInternalExternalMap() ); 232 233 // parse in external map 234 fileChecker.CreateExternalMap(atomIds); 220 235 221 236 // assert equality after parsing 222 CPPUNIT_ASSERT_EQUAL( fileChecker. InternalAtomBondMap.size(), fileChecker.ExternalAtomBondMap.size() );223 CPPUNIT_ASSERT_EQUAL( fileChecker. InternalAtomBondMap, fileChecker.ExternalAtomBondMap );237 CPPUNIT_ASSERT_EQUAL( fileChecker.ExternalAtomBondMap.size(), fileChecker.InternalAtomBondMap.size() ); 238 CPPUNIT_ASSERT_EQUAL( fileChecker.ExternalAtomBondMap, fileChecker.InternalAtomBondMap ); 224 239 CPPUNIT_ASSERT( fileChecker.CompareInternalExternalMap() ); 225 240 } … … 230 245 void CheckAgainstAdjacencyFileTest::operatorTest() 231 246 { 232 World::getInstance().selectAllAtoms(AllAtoms());233 247 { 234 248 // parse right 235 249 std::stringstream input(adjacencyfile); 236 250 CheckAgainstAdjacencyFile fileChecker(input); 237 CPPUNIT_ASSERT( fileChecker( World::getInstance().beginAtomSelection(), World::getInstance().endAtomSelection()) );238 } 239 { 240 // parse wrong1 251 CPPUNIT_ASSERT( fileChecker(atomIds) ); 252 } 253 { 254 // parse wrong1 (more atoms in the world than in file, hence wrong) 241 255 std::stringstream input(wrongadjacencyfile1); 242 256 CheckAgainstAdjacencyFile fileChecker(input); 243 CPPUNIT_ASSERT( !fileChecker(World::getInstance().beginAtomSelection(), World::getInstance().endAtomSelection()) ); 244 } 245 { 246 // parse wrong2 (there is no atom 10) 257 CPPUNIT_ASSERT( !fileChecker(atomIds) ); 258 } 259 { 260 // remove third atom (index starts at 0) and test for equality then 261 std::vector<atomId_t> validids; 262 std::remove_copy_if(atomIds.begin(), atomIds.end(), std::back_inserter(validids), boost::lambda::_1 == (atomId_t)2); 263 CPPUNIT_ASSERT_EQUAL( (size_t)ATOM_COUNT-1, validids.size() ); 264 // parse wrong1 (more atoms in the world than in file, hence wrong) 265 std::stringstream input(wrongadjacencyfile1); 266 CheckAgainstAdjacencyFile fileChecker(input); 267 CPPUNIT_ASSERT( fileChecker(validids) ); 268 } 269 { 270 // parse wrong2 (there is no atom 10, but present in file. hence true) 247 271 std::stringstream input(wrongadjacencyfile2); 248 #ifndef NDEBUG 249 std::cout << "The following Assert failures are intended and do not indicate a failure of the test." << std::endl; 250 CPPUNIT_ASSERT_THROW( CheckAgainstAdjacencyFile fileChecker(input), Assert::AssertionFailure ); 251 #else 252 CheckAgainstAdjacencyFile fileChecker(input); 253 CPPUNIT_ASSERT( !fileChecker(World::getInstance().beginAtomSelection(), World::getInstance().endAtomSelection()) ); 254 #endif 255 } 256 } 272 CheckAgainstAdjacencyFile fileChecker(input); 273 CPPUNIT_ASSERT( !fileChecker(atomIds) ); 274 } 275 { 276 // parse wrong3 (6 is not connected) 277 std::stringstream input(wrongadjacencyfile3); 278 CheckAgainstAdjacencyFile fileChecker(input); 279 CPPUNIT_ASSERT( !fileChecker(atomIds) ); 280 } 281 } -
src/Graph/unittests/CheckAgainstAdjacencyFileUnitTest.hpp
rb78dfd r06f41f3 30 30 { 31 31 CPPUNIT_TEST_SUITE( CheckAgainstAdjacencyFileTest ); 32 CPPUNIT_TEST ( Create InternalMapTest );33 CPPUNIT_TEST ( ParseIn ExternalMapTest );32 CPPUNIT_TEST ( CreateExternalMapTest ); 33 CPPUNIT_TEST ( ParseInInternalMapTest ); 34 34 CPPUNIT_TEST ( CompareInternalExternalMapTest ); 35 35 CPPUNIT_TEST ( operatorTest ); … … 40 40 void tearDown(); 41 41 42 void Create InternalMapTest();43 void ParseIn ExternalMapTest();42 void CreateExternalMapTest(); 43 void ParseInInternalMapTest(); 44 44 void CompareInternalExternalMapTest(); 45 45 void operatorTest(); … … 47 47 private: 48 48 CheckAgainstAdjacencyFile::AtomBondMap comparisonMap; 49 atom *atoms [ATOM_COUNT];50 atomId_t atomIds [ATOM_COUNT];49 std::vector<atom *> atoms; 50 std::vector<atomId_t> atomIds; 51 51 molecule * TestMolecule; 52 52 };
Note:
See TracChangeset
for help on using the changeset viewer.