<String Name="HelpText"><![CDATA[
SYNOPSIS
-gmx [-f <.xtc/.trr/...>] [-f2 <.xtc/.trr/...>] [-lib [<.xtc/.trr/...>]]
+gmx [-f [<.xtc/.trr/...>]] [-f2 [<.xtc/.trr/...>]] [-lib [<.xtc/.trr/...>]]
[-longfileopt [<.dat>]] [-longfileopt2 [<.dat>]]
FILE OPTIONS
- -f <.xtc/.trr/...> (path/to/long/trajectory/name.xtc) (Input)
+ -f [<.xtc/.trr/...>] (path/to/long/trajectory/name.xtc) (Input)
File name option with a long value: xtc trr cpt trj gro g96 pdb g87 tng
- -f2 <.xtc/.trr/...> (path/to/long/trajectory.xtc) (Input)
+ -f2 [<.xtc/.trr/...>] (path/to/long/trajectory.xtc) (Input)
File name option with a long value: xtc trr cpt trj gro g96 pdb g87 tng
-lib [<.xtc/.trr/...>] (path/to/long/trajectory/name.xtc) (Input, Opt., Lib.)
File name option with a long value and type: xtc trr cpt trj gro g96 pdb
<String Name="HelpText"><![CDATA[
SYNOPSIS
-gmx [-f <.xtc/.trr/...>] [-mult [<.xtc/.trr/...> [...]]] [-lib [<.dat>]]
+gmx [-f [<.xtc/.trr/...>]] [-mult [<.xtc/.trr/...> [...]]] [-lib [<.dat>]]
[-io [<.dat>]] [-o <.xvg>] [-[no]bool] [-[no]hidden] [-int <int>]
[-ivec <vector>] [-double <real>] [-dvec <vector>] [-time <time>]
[-string <string>] [-enum <enum>]
FILE OPTIONS
- -f <.xtc/.trr/...> (traj.xtc) (Input)
+ -f [<.xtc/.trr/...>] (traj.xtc) (Input)
Input file description: xtc trr cpt trj gro g96 pdb g87 tng
-mult [<.xtc/.trr/...> [...]] (traj.xtc) (Input, Opt.)
Multiple file description: xtc trr cpt trj gro g96 pdb g87 tng
{
if (settings.defaultBasename_ != NULL)
{
+ std::string defaultValue =
+ completeFileName(settings.defaultBasename_, filetype_, false);
+ setDefaultValueIfSet(defaultValue);
if (isRequired())
{
- setDefaultValue(completeFileName(settings.defaultBasename_,
- filetype_, false));
- }
- else
- {
- setDefaultValueIfSet(completeFileName(settings.defaultBasename_,
- filetype_, false));
+ setDefaultValue(defaultValue);
}
}
}
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012, by the GROMACS development team, led by
+ * Copyright (c) 2012,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.
* be provided; it is automatically added based on filetype().
* The behavior is also adjusted based on required(): if the option is
* required, the value given to defaultBasename() is treated as for
- * defaultValue(), otherwise it is treated as for defaultValueIfSet().
+ * both defaultValue() and defaultValueIfSet(), otherwise it is treated
+ * as for defaultValueIfSet().
*/
MyClass &defaultBasename(const char *basename)
{ defaultBasename_ = basename; return me(); }
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013, by the GROMACS development team, led by
+ * 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.
EXPECT_EQ("testfile.dat", value);
}
+TEST(FileNameOptionTest, HandlesRequiredOptionWithoutValue)
+{
+ gmx::Options options(NULL, NULL);
+ std::string value;
+ ASSERT_NO_THROW_GMX(options.addOption(
+ FileNameOption("f").store(&value).required()
+ .filetype(gmx::eftGenericData).outputFile()
+ .defaultBasename("testfile")));
+
+ gmx::OptionsAssigner assigner(&options);
+ EXPECT_NO_THROW_GMX(assigner.start());
+ EXPECT_NO_THROW_GMX(assigner.startOption("f"));
+ EXPECT_NO_THROW_GMX(assigner.finishOption());
+ EXPECT_NO_THROW_GMX(assigner.finish());
+ EXPECT_NO_THROW_GMX(options.finish());
+
+ EXPECT_EQ("testfile.dat", value);
+}
+
TEST(FileNameOptionTest, HandlesOptionalDefaultValueWithoutExtension)
{
gmx::Options options(NULL, NULL);