Ignore:
Timestamp:
Mar 1, 2011, 10:16:37 AM (14 years ago)
Author:
Frederik Heber <heber@…>
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:
637358
Parents:
c6aeb1
git-author:
Frederik Heber <heber@…> (02/18/11 18:50:08)
git-committer:
Frederik Heber <heber@…> (03/01/11 10:16:37)
Message:

Enhanced XyzParser to load and save multiple time steps.

Location:
src/Parser/unittests
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • src/Parser/unittests/ParserXyzUnitTest.cpp

    rc6aeb1 r0180d6  
    4040CPPUNIT_TEST_SUITE_REGISTRATION( ParserXyzUnitTest );
    4141
    42 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";
     42static string waterXyz = "\
     433\n\
     44\tH2O: water molecule\n\
     45O\t0\t0\t0\n\
     46H\t0.758602\t0\t0.504284\n\
     47H\t0.758602\t0\t-0.504284\n";
     48static string waterMultiXyz = "\
     493\n\
     50\tH2O: water molecule, time step 0\n\
     51O\t0\t0\t0\n\
     52H\t0.758602\t0\t0.504284\n\
     53H\t0.758602\t0\t-0.504284\n\
     543\n\
     55\tH2O: water molecule, time step 1\n\
     56O\t0\t0\t0\n\
     57H\t0.76\t0\t0.504284\n\
     58H\t0.756\t0\t-0.504284\n";
    4359
    4460void ParserXyzUnitTest::setUp() {
     
    95111  }
    96112}
     113
     114void ParserXyzUnitTest::readMultiXyzTest() {
     115  cout << "Testing the multi time step XYZ parser." << endl;
     116  XyzParser* testParser = new XyzParser();
     117  stringstream input;
     118  input << waterMultiXyz;
     119  testParser->load(&input);
     120  input.clear();
     121
     122  // 3 not 6 atoms!
     123  CPPUNIT_ASSERT_EQUAL(3, World::getInstance().numAtoms());
     124
     125  // check for trajectory size
     126  BOOST_FOREACH (atom *_atom, World::getInstance().getAllAtoms())
     127    CPPUNIT_ASSERT_EQUAL((size_t) 2, _atom->getTrajectorySize());
     128}
     129
     130void ParserXyzUnitTest::writeMultiXyzTest() {
     131  XyzParser* testParser = new XyzParser();
     132  stringstream input;
     133  input << waterMultiXyz;
     134  testParser->load(&input);
     135  input.clear();
     136
     137  // 3 not 6 atoms!
     138  CPPUNIT_ASSERT_EQUAL(3, World::getInstance().numAtoms());
     139
     140  // store and parse in again
     141  {
     142    stringstream output;
     143    std::vector<atom *> atoms = World::getInstance().getAllAtoms();
     144    testParser->save(&output, atoms);
     145    input << output.str();
     146    testParser->load(&input);
     147  }
     148
     149  // now twice as many
     150  CPPUNIT_ASSERT_EQUAL(6, World::getInstance().numAtoms());
     151
     152  // check for trajectory size of all 6! atoms
     153  BOOST_FOREACH (atom *_atom, World::getInstance().getAllAtoms())
     154    CPPUNIT_ASSERT_EQUAL((size_t) 2, _atom->getTrajectorySize());
     155
     156  // check every atom
     157  std::vector<atom *> atoms = World::getInstance().getAllAtoms();
     158  std::vector<atom *>::const_iterator firstiter = atoms.begin();
     159  std::vector<atom *>::const_iterator seconditer = atoms.begin();
     160  for (size_t i=0;i<3;i++)
     161    ++seconditer;
     162  for (;
     163      seconditer != atoms.end();
     164      ++firstiter,++seconditer) {
     165    CPPUNIT_ASSERT_EQUAL((*firstiter)->getType(),(*seconditer)->getType());
     166    for (unsigned int step = 0; step < 2; ++step) {
     167      // check position and type (only stuff xyz stores)
     168      CPPUNIT_ASSERT_EQUAL(
     169          (*firstiter)->getPositionAtStep(step),
     170          (*seconditer)->getPositionAtStep(step));
     171    }
     172  }
     173}
  • src/Parser/unittests/ParserXyzUnitTest.hpp

    rc6aeb1 r0180d6  
    2121  CPPUNIT_TEST_SUITE( ParserXyzUnitTest ) ;
    2222  CPPUNIT_TEST ( rewriteAnXyzTest );
     23  CPPUNIT_TEST ( readMultiXyzTest );
     24  CPPUNIT_TEST ( writeMultiXyzTest );
    2325  CPPUNIT_TEST_SUITE_END();
    2426
     
    2830
    2931  void rewriteAnXyzTest();
     32  void readMultiXyzTest();
     33  void writeMultiXyzTest();
    3034};
    3135
Note: See TracChangeset for help on using the changeset viewer.