Sort all includes in src/gromacs
[alexxy/gromacs.git] / src / gromacs / commandline / tests / cmdlinehelpwriter.cpp
index 0e34bc7fa679e5d9e835ab29729890a002baeffb..a545dcc835556abd1b4c2bfaf3883ed2c7c55bf7 100644 (file)
@@ -1,32 +1,36 @@
 /*
+ * This file is part of the GROMACS molecular simulation package.
  *
- *                This source code is part of
+ * Copyright (c) 2012,2013,2014, by the GROMACS development team, led by
+ * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
+ * and including many others, as listed in the AUTHORS file in the
+ * top-level source directory and at http://www.gromacs.org.
  *
- *                 G   R   O   M   A   C   S
+ * GROMACS is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1
+ * of the License, or (at your option) any later version.
  *
- *          GROningen MAchine for Chemical Simulations
+ * GROMACS is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
  *
- * Written by David van der Spoel, Erik Lindahl, Berk Hess, and others.
- * Copyright (c) 1991-2000, University of Groningen, The Netherlands.
- * Copyright (c) 2001-2009, The GROMACS development team,
- * check out http://www.gromacs.org for more information.
-
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GROMACS; if not, see
+ * http://www.gnu.org/licenses, or write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA.
  *
- * If you want to redistribute modifications, please consider that
- * scientific software is very special. Version control is crucial -
- * bugs must be traceable. We will be happy to consider code for
- * inclusion in the official distribution, but derived work must not
- * be called official GROMACS. Details are found in the README & COPYING
- * files - if they are missing, get the official version at www.gromacs.org.
+ * If you want to redistribute modifications to GROMACS, please
+ * consider that scientific software is very special. Version
+ * control is crucial - bugs must be traceable. We will be happy to
+ * consider code for inclusion in the official distribution, but
+ * derived work must not be called official GROMACS. Details are found
+ * in the README & COPYING files - if they are missing, get the
+ * official version at http://www.gromacs.org.
  *
  * To help us fund GROMACS development, we humbly ask that you cite
- * the papers on the package - you can find them in the top README file.
- *
- * For more info, check our website at http://www.gromacs.org
+ * the research papers on the package. Check out http://www.gromacs.org.
  */
 /*! \internal \file
  * \brief
  * to print out the help to stdout instead of using the XML reference
  * framework.
  *
- * \author Teemu Murtola <teemu.murtola@cbr.su.se>
+ * \author Teemu Murtola <teemu.murtola@gmail.com>
  * \ingroup module_commandline
  */
-#include <gtest/gtest.h>
-
-#include "gromacs/legacyheaders/types/simple.h"
+#include "gmxpre.h"
 
 #include "gromacs/commandline/cmdlinehelpwriter.h"
-#include "gromacs/onlinehelp/helpwritercontext.h"
+
+#include <gtest/gtest.h>
+
+#include "gromacs/commandline/cmdlinehelpcontext.h"
+#include "gromacs/math/vectypes.h"
 #include "gromacs/options/basicoptions.h"
 #include "gromacs/options/filenameoption.h"
 #include "gromacs/options/options.h"
-#include "gromacs/selection/selectioncollection.h"
-#include "gromacs/selection/selectionfileoption.h"
-#include "gromacs/selection/selectionoption.h"
-#include "gromacs/selection/selectionoptionmanager.h"
 #include "gromacs/utility/file.h"
 
 #include "testutils/stringtest.h"
@@ -65,16 +67,20 @@ namespace
 class CommandLineHelpWriterTest : public ::gmx::test::StringTestBase
 {
     public:
+        CommandLineHelpWriterTest() : bHidden_(false) {}
+
         void checkHelp(gmx::CommandLineHelpWriter *writer);
 
         gmx::test::TestFileManager tempFiles_;
+        bool                       bHidden_;
 };
 
 void CommandLineHelpWriterTest::checkHelp(gmx::CommandLineHelpWriter *writer)
 {
-    std::string            filename = tempFiles_.getTemporaryFilePath("helptext.txt");
-    gmx::File              file(filename, "w");
-    gmx::HelpWriterContext context(&file, gmx::eHelpOutputFormat_Console);
+    std::string                 filename = tempFiles_.getTemporaryFilePath("helptext.txt");
+    gmx::File                   file(filename, "w");
+    gmx::CommandLineHelpContext context(&file, gmx::eHelpOutputFormat_Console, NULL);
+    context.setShowHidden(bHidden_);
     writer->writeHelp(context);
     file.close();
 
@@ -113,7 +119,7 @@ TEST_F(CommandLineHelpWriterTest, HandlesOptionTypes)
                           .timeValue().defaultValue(10.0));
     options.addOption(StringOption("string").description("String option")
                           .defaultValue("test"));
-    const char * const enumValues[] = {"no", "opt1", "opt2", NULL};
+    const char * const enumValues[] = { "no", "opt1", "opt2" };
     options.addOption(StringOption("enum").description("Enum option")
                           .enumValue(enumValues).defaultEnumIndex(0));
 
@@ -122,6 +128,10 @@ TEST_F(CommandLineHelpWriterTest, HandlesOptionTypes)
                           .description("Input file description")
                           .filetype(eftTrajectory).inputFile().required()
                           .defaultBasename("traj"));
+    options.addOption(FileNameOption("mult")
+                          .description("Multiple file description")
+                          .filetype(eftTrajectory).inputFile().multiValue()
+                          .defaultBasename("traj"));
     options.addOption(FileNameOption("lib")
                           .description("Library file description")
                           .filetype(eftGenericData).inputFile().libraryFile()
@@ -135,11 +145,8 @@ TEST_F(CommandLineHelpWriterTest, HandlesOptionTypes)
                           .description("Output file description")
                           .filetype(eftPlot).outputFile());
 
-    options.addOption(SelectionFileOption("sf"));
-    options.addOption(SelectionOption("sel").description("Selection option"));
-
     CommandLineHelpWriter writer(options);
-    writer.setShowHidden(true);
+    bHidden_ = true;
     checkHelp(&writer);
 }
 
@@ -209,23 +216,25 @@ TEST_F(CommandLineHelpWriterTest, HandlesLongOptions)
     checkHelp(&writer);
 }
 
-/*
+/* TODO: Add corresponding tests to either the selection module, or as part of
+ * trajectoryanalysis tests.
  * Tests help printing with selection options with values.
  */
+#if 0
 TEST_F(CommandLineHelpWriterTest, HandlesSelectionOptions)
 {
     using gmx::SelectionFileOption;
     using gmx::SelectionOption;
 
-    gmx::Options options(NULL, NULL);
+    gmx::Options                options(NULL, NULL);
+    gmx::SelectionCollection    selections;
+    gmx::SelectionOptionManager manager(&selections);
+    options.addManager(&manager);
     options.addOption(SelectionFileOption("sf"));
     options.addOption(SelectionOption("refsel").required()
                           .description("Reference selection option"));
     options.addOption(SelectionOption("sel").required().valueCount(2)
                           .description("Selection option"));
-    gmx::SelectionCollection    selections;
-    gmx::SelectionOptionManager manager(&selections);
-    setManagerForSelectionOptions(&options, &manager);
     options.finish();
     manager.parseRequestedFromString(
             "resname SOL;"
@@ -236,6 +245,7 @@ TEST_F(CommandLineHelpWriterTest, HandlesSelectionOptions)
     gmx::CommandLineHelpWriter writer(options);
     checkHelp(&writer);
 }
+#endif
 
 /*
  * Tests help printing for multiple sections.