Merge branch 'release-2018'
[alexxy/gromacs.git] / src / gromacs / gmxpreprocess / tests / readir.cpp
index 73768107ee8a46ad7e9757ae4eedb55fb58d53f3..6c07d2eab4ea9ae010d55de1195806bb1d15a015 100644 (file)
@@ -71,8 +71,7 @@ namespace test
 class GetIrTest : public ::testing::Test
 {
     public:
-        GetIrTest() : fileManager_(), data_(), checker_(data_.rootChecker()),
-                      ir_(), mdModules_(), opts_(),
+        GetIrTest() : fileManager_(), ir_(), mdModules_(), opts_(),
                       wi_(init_warning(FALSE, 0)), wiGuard_(wi_)
 
         {
@@ -99,17 +98,19 @@ class GetIrTest : public ::testing::Test
 
             get_ir(inputMdpFilename.c_str(), outputMdpFilename.c_str(),
                    &mdModules_, &ir_, &opts_, WriteMdpHeader::no, wi_);
-            bool failure = warning_errors_exist(wi_);
-            checker_.checkBoolean(failure, "Error parsing mdp file");
+
+            // Now check
+            bool                 failure = warning_errors_exist(wi_);
+            TestReferenceData    data;
+            TestReferenceChecker checker(data.rootChecker());
+            checker.checkBoolean(failure, "Error parsing mdp file");
             warning_reset(wi_);
 
             auto outputMdpContents = TextReader::readFileToString(outputMdpFilename);
-            checker_.checkString(outputMdpContents, "OutputMdpFile");
+            checker.checkString(outputMdpContents, "OutputMdpFile");
         }
 
         TestFileManager                    fileManager_;
-        TestReferenceData                  data_;
-        TestReferenceChecker               checker_;
         t_inputrec                         ir_;
         MDModules                          mdModules_;
         t_gromppopts                       opts_;
@@ -190,5 +191,23 @@ TEST_F(GetIrTest, ProducesOutputFromElectricFieldOscillating)
     runTest(inputMdpFile);
 }
 
+TEST_F(GetIrTest, TerminatesOnDuplicateOldAndNewKeys)
+{
+    const char *inputMdpFile[] = {"verlet-buffer-drift = 1.3", "verlet-buffer-tolerance = 2.7"};
+    EXPECT_DEATH_IF_SUPPORTED(runTest(joinStrings(inputMdpFile, "\n")), "A parameter is present with both");
+}
+
+TEST_F(GetIrTest, ImplicitSolventNoWorks)
+{
+    const char *inputMdpFile = "implicit-solvent = no";
+    runTest(inputMdpFile);
+}
+
+TEST_F(GetIrTest, ImplicitSolventYesWorks)
+{
+    const char *inputMdpFile = "implicit-solvent = yes";
+    EXPECT_DEATH_IF_SUPPORTED(runTest(inputMdpFile), "Invalid enum");
+}
+
 } // namespace
 } // namespace