std::string FileNameOptionManager::completeDefaultFileName(
const std::string &prefix, const FileNameOptionInfo &option)
{
- if (option.isDirectoryOption() || impl_->bInputCheckingDisabled_)
+ if (option.isDirectoryOption())
{
return std::string();
}
const bool bInput = option.isInputFile() || option.isInputOutputFile();
const std::string realPrefix
= !impl_->defaultFileName_.empty() ? impl_->defaultFileName_ : prefix;
- const bool bAllowMissing = option.allowMissing();
- if (bInput)
+ if (bInput && !impl_->bInputCheckingDisabled_)
{
const std::string completedName
= findExistingExtension(realPrefix, option, impl_->redirector_);
{
return completedName;
}
- if (bAllowMissing)
+ if (option.allowMissing())
{
return realPrefix + option.defaultExtension();
}
EXPECT_EQ("testfile.trr", value);
}
+TEST_F(FileNameOptionManagerTest, DefaultNameOptionWorksWithoutInputChecking)
+{
+ std::string value;
+ ASSERT_NO_THROW_GMX(manager_.disableInputOptionChecking(true));
+ ASSERT_NO_THROW_GMX(options_.addOption(
+ FileNameOption("f").store(&value).required()
+ .filetype(gmx::eftIndex).inputFile()
+ .defaultBasename("default")
+ .allowMissing()));
+ ASSERT_NO_THROW_GMX(manager_.addDefaultFileNameOption(&options_, "deffnm"));
+ EXPECT_EQ("default.ndx", value);
+
+ gmx::OptionsAssigner assigner(&options_);
+ EXPECT_NO_THROW_GMX(assigner.start());
+ EXPECT_NO_THROW_GMX(assigner.startOption("deffnm"));
+ EXPECT_NO_THROW_GMX(assigner.appendValue("missing"));
+ EXPECT_NO_THROW_GMX(assigner.finishOption());
+ EXPECT_NO_THROW_GMX(assigner.finish());
+ EXPECT_NO_THROW_GMX(options_.finish());
+
+ EXPECT_EQ("missing.ndx", value);
+}
+
} // namespace