Ignore:
File:
1 edited

Legend:

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

    r120a86 r3bdb6d  
    2828#include "World.hpp"
    2929#include "atom.hpp"
    30 #include "element.hpp"
    31 #include "periodentafel.hpp"
     30#include "Element/element.hpp"
     31#include "Element/periodentafel.hpp"
    3232#include "Descriptors/AtomTypeDescriptor.hpp"
    3333#include "CodePatterns/Assert.hpp"
    34 #include "Parser/ChangeTracker.hpp"
    35 #include "Parser/MpqcParser.hpp"
    3634
    3735#ifdef HAVE_TESTRUNNER
     
    158156)\n"; // basically tested with mpqc 3.0.0-alpha (no parse errors but did not calculate due to missing code)
    159157
    160 void ParserMpqcUnitTest::setUp()
    161 {
    162   // failing asserts should be thrown
    163   ASSERT_DO(Assert::Throw);
    164 
    165   parser = new FormatParser<mpqc>();
     158void ParserMpqcUnitTest::setUp() {
     159  mpqc = new MpqcParser();
    166160
    167161  World::getInstance();
     
    174168}
    175169
    176 void ParserMpqcUnitTest::tearDown()
    177 {
    178   delete parser;
     170void ParserMpqcUnitTest::tearDown() {
     171  delete mpqc;
    179172  ChangeTracker::purgeInstance();
    180173  World::purgeInstance();
     
    183176/************************************ tests ***********************************/
    184177
     178void ParserMpqcUnitTest::ParameterTypeTest() {
     179  // check types in boost::any map
     180  CPPUNIT_ASSERT(mpqc->getParams().params[MpqcParser_Parameters::hessianParam].type() == typeid(bool));
     181  CPPUNIT_ASSERT(mpqc->getParams().params[MpqcParser_Parameters::hessianParam].type() != typeid(int));
     182  CPPUNIT_ASSERT(mpqc->getParams().params[MpqcParser_Parameters::savestateParam].type() == typeid(bool));
     183  CPPUNIT_ASSERT(mpqc->getParams().params[MpqcParser_Parameters::do_gradientParam].type() == typeid(bool));
     184  CPPUNIT_ASSERT(mpqc->getParams().params[MpqcParser_Parameters::maxiterParam].type() == typeid(int));
     185  CPPUNIT_ASSERT(mpqc->getParams().params[MpqcParser_Parameters::memoryParam].type() == typeid(int));
     186  CPPUNIT_ASSERT(mpqc->getParams().params[MpqcParser_Parameters::stdapproxParam].type() == typeid(std::string));
     187  CPPUNIT_ASSERT(mpqc->getParams().params[MpqcParser_Parameters::nfzcParam].type() == typeid(int));
     188  CPPUNIT_ASSERT(mpqc->getParams().params[MpqcParser_Parameters::basisParam].type() == typeid(std::string));
     189  CPPUNIT_ASSERT(mpqc->getParams().params[MpqcParser_Parameters::aux_basisParam].type() == typeid(std::string));
     190  CPPUNIT_ASSERT(mpqc->getParams().params[MpqcParser_Parameters::integrationParam].type() == typeid(MpqcParser_Parameters::IntegralCints));
     191  CPPUNIT_ASSERT(mpqc->getParams().params[MpqcParser_Parameters::theoryParam].type() == typeid(MpqcParser_Parameters::MBPT2));
     192}
     193
    185194void ParserMpqcUnitTest::ParameterDefaultTest() {
    186195  // check default values
    187   CPPUNIT_ASSERT(parser->getParams().getParameter(MpqcParser_Parameters::hessianParam) == std::string("no"));
    188   CPPUNIT_ASSERT(parser->getParams().getParameter(MpqcParser_Parameters::savestateParam) == std::string("no"));
    189   CPPUNIT_ASSERT(parser->getParams().getParameter(MpqcParser_Parameters::do_gradientParam) == std::string("yes"));
    190   CPPUNIT_ASSERT(parser->getParams().getParameter(MpqcParser_Parameters::maxiterParam) == std::string("1000"));
    191   CPPUNIT_ASSERT(parser->getParams().getParameter(MpqcParser_Parameters::memoryParam) == std::string("16000000"));
    192   CPPUNIT_ASSERT(parser->getParams().getParameter(MpqcParser_Parameters::stdapproxParam) == std::string("A'"));
    193   CPPUNIT_ASSERT(parser->getParams().getParameter(MpqcParser_Parameters::nfzcParam) == std::string("1"));
    194   CPPUNIT_ASSERT(parser->getParams().getParameter(MpqcParser_Parameters::basisParam) == std::string("3-21G"));
    195   CPPUNIT_ASSERT(parser->getParams().getParameter(MpqcParser_Parameters::aux_basisParam) == std::string("aug-cc-pVDZ"));
    196   CPPUNIT_ASSERT(parser->getParams().getParameter(MpqcParser_Parameters::integrationParam) == std::string("IntegralCints"));
    197   CPPUNIT_ASSERT(parser->getParams().getParameter(MpqcParser_Parameters::theoryParam) == std::string("MBPT2"));
     196  CPPUNIT_ASSERT(mpqc->getParams().getString(MpqcParser_Parameters::hessianParam) == "no");
     197  CPPUNIT_ASSERT(!mpqc->getParams().getBool(MpqcParser_Parameters::hessianParam));
     198  CPPUNIT_ASSERT(mpqc->getParams().getString(MpqcParser_Parameters::savestateParam) == "no");
     199  CPPUNIT_ASSERT(!mpqc->getParams().getBool(MpqcParser_Parameters::savestateParam));
     200  CPPUNIT_ASSERT(mpqc->getParams().getString(MpqcParser_Parameters::do_gradientParam) == "yes");
     201  CPPUNIT_ASSERT(mpqc->getParams().getBool(MpqcParser_Parameters::do_gradientParam));
     202  CPPUNIT_ASSERT(mpqc->getParams().getInt(MpqcParser_Parameters::maxiterParam) == 1000);
     203  CPPUNIT_ASSERT(mpqc->getParams().getInt(MpqcParser_Parameters::memoryParam) == 16000000);
     204  CPPUNIT_ASSERT(mpqc->getParams().getString(MpqcParser_Parameters::stdapproxParam) == "A'");
     205  CPPUNIT_ASSERT(mpqc->getParams().getInt(MpqcParser_Parameters::nfzcParam) == 1);
     206  CPPUNIT_ASSERT(mpqc->getParams().getString(MpqcParser_Parameters::basisParam) == "3-21G");
     207  CPPUNIT_ASSERT(mpqc->getParams().getString(MpqcParser_Parameters::aux_basisParam) == "aug-cc-pVDZ");
     208  CPPUNIT_ASSERT(mpqc->getParams().getString(MpqcParser_Parameters::integrationParam) == "IntegralCints");
     209  CPPUNIT_ASSERT(mpqc->getParams().getString(MpqcParser_Parameters::theoryParam) == "MBPT2");
     210  CPPUNIT_ASSERT(mpqc->getParams().getTheory() == MpqcParser_Parameters::MBPT2);
     211  CPPUNIT_ASSERT(mpqc->getParams().getIntegration() == MpqcParser_Parameters::IntegralCints);
     212
     213  // check that values are not removed
     214  CPPUNIT_ASSERT(!mpqc->getParams().params[MpqcParser_Parameters::theoryParam].empty());
     215
     216  // check throw, for the moment aren't, are caught in getInt()
     217  CPPUNIT_ASSERT_THROW(mpqc->getParams().getInt(MpqcParser_Parameters::integrationParam), boost::bad_any_cast);
     218  CPPUNIT_ASSERT_THROW(mpqc->getParams().getInt(MpqcParser_Parameters::theoryParam), boost::bad_any_cast);
     219
    198220}
    199221
    200222void ParserMpqcUnitTest::ParameterCloneTest() {
    201   FormatParser_Parameters *clone = parser->getParams().clone();
    202   CPPUNIT_ASSERT(parser->getParams().getParameter(MpqcParser_Parameters::theoryParam) == std::string("MBPT2"));
     223  FormatParser_Parameters *clone = mpqc->getParams().clone();
     224  CPPUNIT_ASSERT(mpqc->getParams().getString(MpqcParser_Parameters::theoryParam) == "MBPT2");
    203225  std::stringstream setvalue("theory = CLHF");
    204   setvalue >> parser->getParams();
    205   CPPUNIT_ASSERT(parser->getParams().getParameter(MpqcParser_Parameters::theoryParam) == std::string("CLHF"));
    206   parser->getParams().makeClone(*clone);
    207   CPPUNIT_ASSERT(parser->getParams().getParameter(MpqcParser_Parameters::theoryParam) == std::string("MBPT2"));
     226  setvalue >> mpqc->getParams();
     227  CPPUNIT_ASSERT(mpqc->getParams().getString(MpqcParser_Parameters::theoryParam) == "CLHF");
     228  mpqc->getParams().makeClone(*clone);
     229  CPPUNIT_ASSERT(mpqc->getParams().getString(MpqcParser_Parameters::theoryParam) == "MBPT2");
    208230}
    209231
     
    212234  {
    213235    std::stringstream setvalue("theory = CLHF");
    214     setvalue >> parser->getParams();
     236    setvalue >> mpqc->getParams();
    215237//    std::cout << "integration method is "
    216 //        << parser->getParams().getString(MpqcParser_Parameters::theoryParam) << std::endl;
    217     CPPUNIT_ASSERT(parser->getParams().getParameter(MpqcParser_Parameters::theoryParam) == std::string("CLHF"));
     238//        << mpqc->getParams().getString(MpqcParser_Parameters::theoryParam) << std::endl;
     239    CPPUNIT_ASSERT(mpqc->getParams().getString(MpqcParser_Parameters::theoryParam) == "CLHF");
    218240  }
    219241  // test a bool
    220242  {
    221243    std::stringstream setvalue("Hessian = yes");
    222     setvalue >> parser->getParams();
     244    setvalue >> mpqc->getParams();
    223245//    std::cout << "Hessian is "
    224 //        << parser->getParams().getString(MpqcParser_Parameters::hessianParam) << std::endl;
    225     CPPUNIT_ASSERT(parser->getParams().getParameter(MpqcParser_Parameters::hessianParam) == std::string("yes"));
     246//        << mpqc->getParams().getString(MpqcParser_Parameters::hessianParam) << std::endl;
     247    CPPUNIT_ASSERT(mpqc->getParams().getString(MpqcParser_Parameters::hessianParam) == "yes");
    226248  }
    227249  // test int
    228250  {
    229251    std::stringstream setvalue("maxiter = 500");
    230     setvalue >> parser->getParams();
     252    setvalue >> mpqc->getParams();
    231253//    std::cout << "maxiter is "
    232 //        << parser->getParams().getString(MpqcParser_Parameters::maxiterParam) << std::endl;
    233     CPPUNIT_ASSERT(parser->getParams().getParameter(MpqcParser_Parameters::maxiterParam) == std::string("500"));
     254//        << mpqc->getParams().getString(MpqcParser_Parameters::maxiterParam) << std::endl;
     255    CPPUNIT_ASSERT(mpqc->getParams().getInt(MpqcParser_Parameters::maxiterParam) == 500);
    234256  }
    235257  // test whether unknown key fails
     
    239261#ifndef NDEBUG
    240262    ASSERT_DO(Assert::Throw);
    241     CPPUNIT_ASSERT_THROW(setvalue >> parser->getParams(), Assert::AssertionFailure);
     263    CPPUNIT_ASSERT_THROW(setvalue >> mpqc->getParams(), Assert::AssertionFailure);
    242264#else
    243     setvalue >> parser->getParams();
     265    setvalue >> mpqc->getParams();
    244266#endif
    245267//    std::cout << "Hessian is still "
    246 //        << parser->getParams().getString(MpqcParser_Parameters::hessianParam) << std::endl;
    247     CPPUNIT_ASSERT(parser->getParams().getParameter(MpqcParser_Parameters::hessianParam) == std::string("yes"));
     268//        << mpqc->getParams().getString(MpqcParser_Parameters::hessianParam) << std::endl;
     269    CPPUNIT_ASSERT(mpqc->getParams().getString(MpqcParser_Parameters::hessianParam) == "yes");
    248270  }
    249271}
     
    251273void ParserMpqcUnitTest::readMpqcTest() {
    252274  stringstream input(waterMpqc_CLHF);
    253   parser->getParams().setParameter(
    254       MpqcParser_Parameters::theoryParam,
    255       parser->getParams().getTheoryName(MpqcParser_Parameters::CLHF)
    256           );
    257   parser->load(&input);
     275  mpqc->getParams().setTheory(MpqcParser_Parameters::CLHF);
     276  mpqc->load(&input);
    258277
    259278  CPPUNIT_ASSERT_EQUAL(3, World::getInstance().numAtoms());
     
    282301    // compare both configs for CLHF
    283302    stringstream output;
    284     parser->getParams().setParameter(
    285         MpqcParser_Parameters::theoryParam,
    286         parser->getParams().getTheoryName(MpqcParser_Parameters::CLHF)
    287             );
    288     parser->save(&output, atoms);
     303    mpqc->getParams().setTheory(MpqcParser_Parameters::CLHF);
     304    mpqc->save(&output, atoms);
    289305    stringstream input(waterMpqc_CLHF);
    290     // check for non-empty streams
    291     input.peek();
    292     output.peek();
    293     CPPUNIT_ASSERT(input.good() && output.good());
    294     // check equality of streams per line (for debugging)
    295306    for (; std::getline(input, first) && std::getline(output, second); ) {
    296307      //std::cout << "Comparing '" << first << "' to '" << second << "'" << std::endl;
     
    301312    // compare both configs for CLKS
    302313    stringstream output;
    303     parser->getParams().setParameter(
    304         MpqcParser_Parameters::theoryParam,
    305         parser->getParams().getTheoryName(MpqcParser_Parameters::CLKS)
    306             );
    307     parser->save(&output, atoms);
     314    mpqc->getParams().setTheory(MpqcParser_Parameters::CLKS);
     315    mpqc->save(&output, atoms);
    308316    stringstream input(waterMpqc_CLKS);
    309     // check for non-empty streams
    310     input.peek();
    311     output.peek();
    312     CPPUNIT_ASSERT(input.good() && output.good());
    313     // check equality of streams per line (for debugging)
    314317    for (; std::getline(input, first) && std::getline(output, second); ) {
    315318      //std::cout << "Comparing '" << first << "' to '" << second << "'" << std::endl;
     
    320323    // compare both configs for MBPT2
    321324    stringstream output;
    322     parser->getParams().setParameter(
    323         MpqcParser_Parameters::theoryParam,
    324         parser->getParams().getTheoryName(MpqcParser_Parameters::MBPT2)
    325             );
    326     parser->save(&output, atoms);
     325    mpqc->getParams().setTheory(MpqcParser_Parameters::MBPT2);
     326    mpqc->save(&output, atoms);
    327327    stringstream input(waterMpqc_MBPT2);
    328     // check for non-empty streams
    329     input.peek();
    330     output.peek();
    331     CPPUNIT_ASSERT(input.good() && output.good());
    332     // check equality of streams per line (for debugging)
    333328    for (; std::getline(input, first) && std::getline(output, second); ) {
    334329      //std::cout << "Comparing '" << first << "' to '" << second << "'" << std::endl;
     
    339334    // compare both configs for MBPT2_R12
    340335    stringstream output;
    341     parser->getParams().setParameter(
    342         MpqcParser_Parameters::theoryParam,
    343         parser->getParams().getTheoryName(MpqcParser_Parameters::MBPT2_R12)
    344             );
    345     parser->save(&output, atoms);
     336    mpqc->getParams().setTheory(MpqcParser_Parameters::MBPT2_R12);
     337    mpqc->save(&output, atoms);
    346338    stringstream input(waterMpqc_MBPT2_R12);
    347     // check for non-empty streams
    348     input.peek();
    349     output.peek();
    350     CPPUNIT_ASSERT(input.good() && output.good());
    351     // check equality of streams per line (for debugging)
    352339    for (; std::getline(input, first) && std::getline(output, second); ) {
    353340      //std::cout << "Comparing '" << first << "' to '" << second << "'" << std::endl;
Note: See TracChangeset for help on using the changeset viewer.