- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
src/Parser/unittests/ParserMpqcUnitTest.cpp
r120a86 r3bdb6d 28 28 #include "World.hpp" 29 29 #include "atom.hpp" 30 #include " element.hpp"31 #include " periodentafel.hpp"30 #include "Element/element.hpp" 31 #include "Element/periodentafel.hpp" 32 32 #include "Descriptors/AtomTypeDescriptor.hpp" 33 33 #include "CodePatterns/Assert.hpp" 34 #include "Parser/ChangeTracker.hpp"35 #include "Parser/MpqcParser.hpp"36 34 37 35 #ifdef HAVE_TESTRUNNER … … 158 156 )\n"; // basically tested with mpqc 3.0.0-alpha (no parse errors but did not calculate due to missing code) 159 157 160 void ParserMpqcUnitTest::setUp() 161 { 162 // failing asserts should be thrown 163 ASSERT_DO(Assert::Throw); 164 165 parser = new FormatParser<mpqc>(); 158 void ParserMpqcUnitTest::setUp() { 159 mpqc = new MpqcParser(); 166 160 167 161 World::getInstance(); … … 174 168 } 175 169 176 void ParserMpqcUnitTest::tearDown() 177 { 178 delete parser; 170 void ParserMpqcUnitTest::tearDown() { 171 delete mpqc; 179 172 ChangeTracker::purgeInstance(); 180 173 World::purgeInstance(); … … 183 176 /************************************ tests ***********************************/ 184 177 178 void 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 185 194 void ParserMpqcUnitTest::ParameterDefaultTest() { 186 195 // 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 198 220 } 199 221 200 222 void 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"); 203 225 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"); 208 230 } 209 231 … … 212 234 { 213 235 std::stringstream setvalue("theory = CLHF"); 214 setvalue >> parser->getParams();236 setvalue >> mpqc->getParams(); 215 237 // 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"); 218 240 } 219 241 // test a bool 220 242 { 221 243 std::stringstream setvalue("Hessian = yes"); 222 setvalue >> parser->getParams();244 setvalue >> mpqc->getParams(); 223 245 // 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"); 226 248 } 227 249 // test int 228 250 { 229 251 std::stringstream setvalue("maxiter = 500"); 230 setvalue >> parser->getParams();252 setvalue >> mpqc->getParams(); 231 253 // 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); 234 256 } 235 257 // test whether unknown key fails … … 239 261 #ifndef NDEBUG 240 262 ASSERT_DO(Assert::Throw); 241 CPPUNIT_ASSERT_THROW(setvalue >> parser->getParams(), Assert::AssertionFailure);263 CPPUNIT_ASSERT_THROW(setvalue >> mpqc->getParams(), Assert::AssertionFailure); 242 264 #else 243 setvalue >> parser->getParams();265 setvalue >> mpqc->getParams(); 244 266 #endif 245 267 // 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"); 248 270 } 249 271 } … … 251 273 void ParserMpqcUnitTest::readMpqcTest() { 252 274 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); 258 277 259 278 CPPUNIT_ASSERT_EQUAL(3, World::getInstance().numAtoms()); … … 282 301 // compare both configs for CLHF 283 302 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); 289 305 stringstream input(waterMpqc_CLHF); 290 // check for non-empty streams291 input.peek();292 output.peek();293 CPPUNIT_ASSERT(input.good() && output.good());294 // check equality of streams per line (for debugging)295 306 for (; std::getline(input, first) && std::getline(output, second); ) { 296 307 //std::cout << "Comparing '" << first << "' to '" << second << "'" << std::endl; … … 301 312 // compare both configs for CLKS 302 313 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); 308 316 stringstream input(waterMpqc_CLKS); 309 // check for non-empty streams310 input.peek();311 output.peek();312 CPPUNIT_ASSERT(input.good() && output.good());313 // check equality of streams per line (for debugging)314 317 for (; std::getline(input, first) && std::getline(output, second); ) { 315 318 //std::cout << "Comparing '" << first << "' to '" << second << "'" << std::endl; … … 320 323 // compare both configs for MBPT2 321 324 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); 327 327 stringstream input(waterMpqc_MBPT2); 328 // check for non-empty streams329 input.peek();330 output.peek();331 CPPUNIT_ASSERT(input.good() && output.good());332 // check equality of streams per line (for debugging)333 328 for (; std::getline(input, first) && std::getline(output, second); ) { 334 329 //std::cout << "Comparing '" << first << "' to '" << second << "'" << std::endl; … … 339 334 // compare both configs for MBPT2_R12 340 335 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); 346 338 stringstream input(waterMpqc_MBPT2_R12); 347 // check for non-empty streams348 input.peek();349 output.peek();350 CPPUNIT_ASSERT(input.good() && output.good());351 // check equality of streams per line (for debugging)352 339 for (; std::getline(input, first) && std::getline(output, second); ) { 353 340 //std::cout << "Comparing '" << first << "' to '" << second << "'" << std::endl;
Note:
See TracChangeset
for help on using the changeset viewer.