Changeset 001f8a for src/unittests/ParserCommonUnitTest.cpp
- Timestamp:
- Dec 5, 2010, 12:21:03 AM (15 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:
- fd19ff
- Parents:
- f03705 (diff), cabb46 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the(diff)
links above to see all the changes relative to each parent. - File:
-
- 1 moved
Legend:
- Unmodified
- Added
- Removed
-
TabularUnified src/unittests/ParserCommonUnitTest.cpp ¶
rf03705 r001f8a 7 7 8 8 /* 9 * Parser UnitTest.cpp9 * ParserCommonUnitTest.cpp 10 10 * 11 11 * Created on: Mar 3, 2010 … … 18 18 #endif 19 19 20 #include "Parser UnitTest.hpp"20 #include "ParserCommonUnitTest.hpp" 21 21 22 22 #include <cppunit/CompilerOutputter.h> … … 25 25 26 26 #include "Parser/MpqcParser.hpp" 27 #include "Parser/PdbParser.hpp" 27 28 #include "Parser/PcpParser.hpp" 28 29 #include "Parser/TremoloParser.hpp" … … 41 42 42 43 // Registers the fixture into the 'registry' 43 CPPUNIT_TEST_SUITE_REGISTRATION( Parser UnitTest );44 CPPUNIT_TEST_SUITE_REGISTRATION( ParserCommonUnitTest ); 44 45 45 46 static string waterPcp = "# ParallelCarParinello - main configuration file - created with molecuilder\n\ … … 117 118 Ion_Type1_1\t0.758602\t0.000000000\t0.504284\t0 # molecule nr 1\n\ 118 119 Ion_Type1_2\t0.758602\t0.000000000\t-0.504284\t0 # molecule nr 2\n"; 120 //----|----*|---||--*||---|***|-------|-------|-------|-----|---------------|-|- 121 //000000011111111112222222222333333333344444444445555555555666666666677777777778 122 //345678901234567890123456789012345678901234567890123456789012345678901234567890 123 static string waterPdb = "\ 124 REMARK This is a test water molecule as written by TREMOLO.\n\ 125 ATOM 1 OT GMT- 0 1.583 1.785 1.480 1.00178.02 O-2\n\ 126 ATOM 2 HT GMT- 0 1.186 1.643 2.213 1.00103.58 H+1\n\ 127 ATOM 3 HT GMT- 0 2.642 1.896 1.730 1.00126.00 H+1\n\ 128 ATOM 4 OT GMT- 1 3.583 1.785 1.480 1.00178.02 O-2\n\ 129 ATOM 5 HT GMT- 1 3.186 1.643 2.213 1.00103.58 H+1\n\ 130 ATOM 6 HT GMT- 1 4.642 1.896 1.730 1.00126.00 H+1\n\ 131 CONECT 1 2 3\n\ 132 CONECT 2 1\n\ 133 CONECT 3 1\n\ 134 CONECT 4 5 6\n\ 135 CONECT 5 4\n\ 136 CONECT 6 4\n\ 137 END"; 119 138 static string waterMpqc ="% Created by MoleCuilder\n\ 120 139 mpqc: (\n\ … … 144 163 )\n"; 145 164 static string waterXyz = "3\n\tH2O: water molecule\nO\t0\t0\t0\nH\t0.758602\t0\t0.504284\nH\t0.758602\t0\t-0.504284\n"; 146 static string Tremolo_Atomdata1 = "# ATOMDATA\tId\tname\tType\tx=3\n"; 147 static string Tremolo_Atomdata2 = "#\n#ATOMDATA Id name Type x=3\n1 hydrogen H 3.0 4.5 0.1\n\n"; 148 static string Tremolo_invalidkey = "#\n#ATOMDATA Id name foo Type x=3\n\n\n"; 149 static string Tremolo_velocity = "#\n#ATOMDATA Id name Type u=3\n1 hydrogen H 3.0 4.5 0.1\n\n"; 150 static string Tremolo_neighbours = "#\n#ATOMDATA Id Type neighbors=2\n1 H 3 0\n2 H 3 0\n3 O 1 2\n"; 151 static string Tremolo_improper = "#\n#ATOMDATA Id Type imprData\n8 H 9-10\n9 H 10-8,8-10\n10 O -\n"; 152 static string Tremolo_torsion = "#\n#ATOMDATA Id Type torsion\n8 H 9-10\n9 H 10-8,8-10\n10 O -\n"; 153 static string Tremolo_full = "# ATOMDATA\tx=3\tu=3\tF\tstress\tId\tneighbors=5\timprData\tGroupMeasureTypeNo\tType\textType\tname\tresName\tchainID\tresSeq\toccupancy\ttempFactor\tsegID\tCharge\tcharge\tGrpTypeNo\ttorsion\n0\t0\t0\t0\t0\t0\t0\t0\t1\t0\t0\t0\t0\t0\t-\t0\tH\t-\t-\t-\t0\t0\t0\t0\t0\t0\t0\t0\t-\t\n"; 154 155 void ParserUnitTest::setUp() { 165 166 void ParserCommonUnitTest::setUp() { 156 167 World::getInstance(); 168 169 setVerbosity(2); 157 170 158 171 // we need hydrogens and oxygens in the following tests … … 161 174 } 162 175 163 void Parser UnitTest::tearDown() {176 void ParserCommonUnitTest::tearDown() { 164 177 ChangeTracker::purgeInstance(); 165 178 World::purgeInstance(); … … 168 181 /************************************ tests ***********************************/ 169 182 170 void Parser UnitTest::rewriteAnXyzTest() {183 void ParserCommonUnitTest::rewriteAnXyzTest() { 171 184 cout << "Testing the XYZ parser." << endl; 172 185 XyzParser* testParser = new XyzParser(); … … 174 187 input << waterXyz; 175 188 testParser->load(&input); 189 input.clear(); 176 190 177 191 CPPUNIT_ASSERT_EQUAL(3, World::getInstance().numAtoms()); 178 192 179 string newWaterXyz = ""; 180 stringstream output; 181 testParser->save(&output); 182 newWaterXyz = output.str(); 183 184 CPPUNIT_ASSERT(waterXyz == newWaterXyz); 185 } 186 187 void ParserUnitTest::readTremoloPreliminaryCommentsTest() { 188 cout << "Testing the tremolo parser." << endl; 189 TremoloParser* testParser = new TremoloParser(); 190 stringstream input, output; 191 192 // Atomdata beginning with "# ATOMDATA" 193 input << Tremolo_Atomdata1; 194 testParser->load(&input); 195 testParser->save(&output); 196 CPPUNIT_ASSERT(Tremolo_Atomdata1 == output.str()); 197 input.clear(); 198 output.clear(); 199 200 // Atomdata beginning with "#ATOMDATA" 201 input << Tremolo_Atomdata2; 202 testParser->load(&input); 203 testParser->save(&output); 204 CPPUNIT_ASSERT(output.str().find("hydrogen") != string::npos); 205 input.clear(); 206 output.clear(); 207 208 // Invalid key in Atomdata line 209 input << Tremolo_invalidkey; 210 testParser->load(&input); 211 //TODO: proove invalidity 212 input.clear(); 213 } 214 215 void ParserUnitTest::readTremoloCoordinatesTest() { 216 TremoloParser* testParser = new TremoloParser(); 217 stringstream input; 218 219 // One simple data line 220 input << Tremolo_Atomdata2; 221 testParser->load(&input); 222 CPPUNIT_ASSERT(World::getInstance().getAtom(AtomByType(1))->at(0) == 3.0); 223 input.clear(); 224 } 225 226 void ParserUnitTest::readTremoloVelocityTest() { 227 TremoloParser* testParser = new TremoloParser(); 228 stringstream input; 229 230 // One simple data line 231 input << Tremolo_velocity; 232 testParser->load(&input); 233 CPPUNIT_ASSERT(World::getInstance().getAtom(AtomByType(1))->AtomicVelocity[0] == 3.0); 234 input.clear(); 235 } 236 237 void ParserUnitTest::readTremoloNeighborInformationTest() { 238 TremoloParser* testParser = new TremoloParser(); 239 stringstream input; 240 241 // Neighbor data 242 input << Tremolo_neighbours; 243 testParser->load(&input); 244 245 CPPUNIT_ASSERT_EQUAL(3, World::getInstance().numAtoms()); 246 CPPUNIT_ASSERT(World::getInstance().getAtom(AtomByType(8))-> 247 IsBondedTo(World::getInstance().getAtom(AtomByType(1)))); 248 input.clear(); 249 } 250 251 void ParserUnitTest::readAndWriteTremoloImprDataInformationTest() { 252 TremoloParser* testParser = new TremoloParser(); 253 stringstream input, output; 254 255 // Neighbor data 256 input << Tremolo_improper; 257 testParser->load(&input); 258 testParser->save(&output); 259 CPPUNIT_ASSERT_EQUAL(3, World::getInstance().numAtoms()); 260 CPPUNIT_ASSERT(output.str().find("2-0,0-2") != string::npos); 261 input.clear(); 262 output.clear(); 263 } 264 265 void ParserUnitTest::readAndWriteTremoloTorsionInformationTest() { 266 TremoloParser* testParser = new TremoloParser(); 267 stringstream input, output; 268 269 // Neighbor data 270 input << Tremolo_torsion; 271 testParser->load(&input); 272 testParser->save(&output); 273 CPPUNIT_ASSERT_EQUAL(3, World::getInstance().numAtoms()); 274 CPPUNIT_ASSERT(output.str().find("2-0,0-2") != string::npos); 275 input.clear(); 276 output.clear(); 277 } 278 279 void ParserUnitTest::writeTremoloTest() { 280 TremoloParser* testParser = new TremoloParser(); 281 stringstream output; 282 283 // with the maximum number of fields and minimal information, default values are printed 284 atom* newAtom = World::getInstance().createAtom(); 285 newAtom->setType(1); 286 testParser->setFieldsForSave("x=3 u=3 F stress Id neighbors=5 imprData GroupMeasureTypeNo Type extType name resName chainID resSeq occupancy tempFactor segID Charge charge GrpTypeNo torsion"); 287 testParser->save(&output); 288 CPPUNIT_ASSERT(output.str() == Tremolo_full); 289 290 cout << "testing the tremolo parser is done" << endl; 291 } 292 293 void ParserUnitTest::readwritePcpTest() { 193 // store and parse in again 194 stringstream output; 195 testParser->save(&output); 196 input << output.str(); 197 testParser->load(&input); 198 199 // now twice as many 200 CPPUNIT_ASSERT_EQUAL(6, World::getInstance().numAtoms()); 201 202 // check every atom 203 World::AtomComposite atoms = World::getInstance().getAllAtoms(); 204 World::AtomComposite::const_iterator firstiter = atoms.begin(); 205 World::AtomComposite::const_iterator seconditer = atoms.begin(); 206 for (size_t i=0;i<3;i++) 207 ++seconditer; 208 for (; 209 seconditer != atoms.end(); 210 ++firstiter,++seconditer) { 211 // check position and type (only stuff xyz stores) 212 CPPUNIT_ASSERT_EQUAL((*firstiter)->getPosition(),(*seconditer)->getPosition()); 213 CPPUNIT_ASSERT_EQUAL((*firstiter)->getType(),(*seconditer)->getType()); 214 } 215 } 216 217 void ParserCommonUnitTest::readwritePcpTest() { 294 218 stringstream input(waterPcp); 295 219 PcpParser* testParser = new PcpParser(); … … 299 223 CPPUNIT_ASSERT_EQUAL(3, World::getInstance().numAtoms()); 300 224 301 string newWaterPcp = ""; 302 stringstream output; 303 testParser->save(&output); 304 305 input << output; 225 // check that equality function is ok 226 CPPUNIT_ASSERT(*testParser == *testParser); 227 228 stringstream output; 229 testParser->save(&output); 230 231 input << output.str(); 306 232 PcpParser* testParser2 = new PcpParser(); 307 233 testParser2->load(&input); … … 312 238 } 313 239 314 void ParserUnitTest::writeMpqcTest() { 240 void ParserCommonUnitTest::readwritePdbTest() { 241 stringstream input; 242 input << waterPdb; 243 PdbParser* testParser = new PdbParser(); 244 testParser->load(&input); 245 input.clear(); 246 247 CPPUNIT_ASSERT_EQUAL(6, World::getInstance().numAtoms()); 248 249 stringstream output; 250 testParser->save(&output); 251 252 // std::cout << "Save PDB is:" << std::endl; 253 // std::cout << output.str() << std::endl; 254 255 input << output.str(); 256 PdbParser* testParser2 = new PdbParser(); 257 testParser2->load(&input); 258 259 CPPUNIT_ASSERT_EQUAL(12, World::getInstance().numAtoms()); 260 } 261 262 void ParserCommonUnitTest::writeMpqcTest() { 315 263 // build up water molecule 316 264 atom *Walker = NULL;
Note:
See TracChangeset
for help on using the changeset viewer.