/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2010,2011,2012,2013, by the GROMACS development team, led by
- * David van der Spoel, Berk Hess, Erik Lindahl, and including many
- * others, as listed in the AUTHORS file in the top-level source
- * directory and at http://www.gromacs.org.
+ * Copyright (c) 2010,2011,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.
*
* GROMACS is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License
* \author Teemu Murtola <teemu.murtola@gmail.com>
* \ingroup module_selection
*/
+#include "gmxpre.h"
+
+#include "gromacs/selection/selectionoption.h"
+
#include <gtest/gtest.h>
#include "gromacs/options/options.h"
#include "gromacs/selection/selection.h"
#include "gromacs/selection/selectioncollection.h"
#include "gromacs/selection/selectionfileoption.h"
-#include "gromacs/selection/selectionoption.h"
#include "gromacs/selection/selectionoptionmanager.h"
#include "gromacs/utility/exceptions.h"
public:
SelectionOptionTestBase();
- void setManager();
void loadTopology(const char *filename);
gmx::SelectionCollection sc_;
SelectionOptionTestBase::SelectionOptionTestBase()
: manager_(&sc_), options_(NULL, NULL)
{
+ options_.addManager(&manager_);
sc_.setReferencePosType("atom");
sc_.setOutputPosType("atom");
}
-void SelectionOptionTestBase::setManager()
-{
- setManagerForSelectionOptions(&options_, &manager_);
-}
-
void SelectionOptionTestBase::loadTopology(const char *filename)
{
topManager_.loadTopology(filename);
gmx::Selection sel;
using gmx::SelectionOption;
ASSERT_NO_THROW_GMX(options_.addOption(SelectionOption("sel").store(&sel)));
- setManager();
gmx::OptionsAssigner assigner(&options_);
EXPECT_NO_THROW_GMX(assigner.start());
EXPECT_NO_THROW_GMX(assigner.finishOption());
EXPECT_NO_THROW_GMX(assigner.finish());
EXPECT_NO_THROW_GMX(options_.finish());
+
+ ASSERT_TRUE(sel.isValid());
}
using gmx::SelectionOption;
ASSERT_NO_THROW_GMX(options_.addOption(
SelectionOption("sel").store(&sel).onlyStatic()));
- setManager();
gmx::OptionsAssigner assigner(&options_);
EXPECT_NO_THROW_GMX(assigner.start());
using gmx::SelectionOption;
ASSERT_NO_THROW_GMX(options_.addOption(
SelectionOption("sel").store(&sel).onlyAtoms()));
- setManager();
gmx::OptionsAssigner assigner(&options_);
EXPECT_NO_THROW_GMX(assigner.start());
using gmx::SelectionOption;
ASSERT_NO_THROW_GMX(options_.addOption(
SelectionOption("sel").store(&sel)));
- setManager();
gmx::OptionsAssigner assigner(&options_);
EXPECT_NO_THROW_GMX(assigner.start());
using gmx::SelectionOption;
ASSERT_NO_THROW_GMX(options_.addOption(
SelectionOption("sel").store(&sel)));
- setManager();
gmx::OptionsAssigner assigner(&options_);
EXPECT_NO_THROW_GMX(assigner.start());
gmx::Selection sel;
using gmx::SelectionOption;
ASSERT_NO_THROW_GMX(options_.addOption(SelectionOption("sel").store(&sel)));
- setManager();
gmx::OptionsAssigner assigner(&options_);
EXPECT_NO_THROW_GMX(assigner.start());
using gmx::SelectionOption;
ASSERT_NO_THROW_GMX(options_.addOption(
SelectionOption("sel").store(sel).valueCount(2)));
- setManager();
gmx::OptionsAssigner assigner(&options_);
EXPECT_NO_THROW_GMX(assigner.start());
}
+TEST_F(SelectionOptionTest, HandlesDefaultSelectionText)
+{
+ gmx::Selection sel;
+ using gmx::SelectionOption;
+ options_.addOption(SelectionOption("sel").store(&sel)
+ .defaultSelectionText("all"));
+
+ EXPECT_NO_THROW_GMX(options_.finish());
+
+ ASSERT_TRUE(sel.isValid());
+
+ EXPECT_NO_THROW_GMX(sc_.setTopology(NULL, 10));
+ EXPECT_NO_THROW_GMX(sc_.compile());
+
+ EXPECT_STREQ("all", sel.selectionText());
+}
+
+
TEST_F(SelectionOptionTest, HandlesAdjuster)
{
gmx::SelectionList sel;
using gmx::SelectionOption;
gmx::SelectionOptionInfo *info = options_.addOption(
SelectionOption("sel").storeVector(&sel).multiValue());
- setManager();
gmx::OptionsAssigner assigner(&options_);
EXPECT_NO_THROW_GMX(assigner.start());
using gmx::SelectionOption;
gmx::SelectionOptionInfo *info = options_.addOption(
SelectionOption("sel").store(&sel));
- setManager();
gmx::OptionsAssigner assigner(&options_);
EXPECT_NO_THROW_GMX(assigner.start());
using gmx::SelectionOption;
gmx::SelectionOptionInfo *info = options_.addOption(
SelectionOption("sel").storeVector(&sel).multiValue());
- setManager();
gmx::OptionsAssigner assigner(&options_);
EXPECT_NO_THROW_GMX(assigner.start());
using gmx::SelectionOption;
gmx::SelectionOptionInfo *info = options_.addOption(
SelectionOption("sel").storeVector(&sel).multiValue());
- setManager();
gmx::OptionsAssigner assigner(&options_);
EXPECT_NO_THROW_GMX(assigner.start());
using gmx::SelectionOption;
ASSERT_NO_THROW_GMX(options_.addOption(
SelectionOption("sel").store(&sel).required()));
- setManager();
gmx::OptionsAssigner assigner(&options_);
EXPECT_NO_THROW_GMX(assigner.start());
ASSERT_NO_THROW_GMX(options_.addOption(
SelectionOption("sel").store(sel).required()
.valueCount(2)));
- setManager();
gmx::OptionsAssigner assigner(&options_);
EXPECT_NO_THROW_GMX(assigner.start());
gmx::Selection sel;
using gmx::SelectionOption;
ASSERT_NO_THROW_GMX(options_.addOption(SelectionOption("sel").store(&sel)));
- setManager();
gmx::OptionsAssigner assigner(&options_);
EXPECT_NO_THROW_GMX(assigner.start());
using gmx::SelectionOption;
gmx::SelectionOptionInfo *info = options_.addOption(
SelectionOption("sel").storeVector(&sel).valueCount(3));
- setManager();
gmx::OptionsAssigner assigner(&options_);
EXPECT_NO_THROW_GMX(assigner.start());
ASSERT_NO_THROW_GMX(options_.addOption(
SelectionOption("reqsel").storeVector(&reqsel)
.multiValue().required()));
- setManager();
gmx::OptionsAssigner assigner(&options_);
EXPECT_NO_THROW_GMX(assigner.start());
SelectionOption("sel1").storeVector(&sel1).multiValue()));
ASSERT_NO_THROW_GMX(options_.addOption(
SelectionOption("sel2").storeVector(&sel2).multiValue()));
- setManager();
gmx::OptionsAssigner assigner(&options_);
std::string value(TestFileManager::getInputFilePath("selfile.dat"));
SelectionOption("sel1").storeVector(&sel1)));
ASSERT_NO_THROW_GMX(options_.addOption(
SelectionOption("sel2").storeVector(&sel2)));
- setManager();
gmx::OptionsAssigner assigner(&options_);
std::string value(TestFileManager::getInputFilePath("selfile.dat"));
ASSERT_NO_THROW_GMX(options_.addOption(
SelectionOption("optsel").storeVector(&optsel)
.multiValue()));
- setManager();
gmx::OptionsAssigner assigner(&options_);
EXPECT_NO_THROW_GMX(assigner.start());
ASSERT_NO_THROW_GMX(options_.addOption(
SelectionOption("sel2").storeVector(&sel2)
.multiValue().required()));
- setManager();
gmx::OptionsAssigner assigner(&options_);
EXPECT_NO_THROW_GMX(assigner.start());
SelectionOption("sel1").storeVector(&sel1).required()));
ASSERT_NO_THROW_GMX(options_.addOption(
SelectionOption("sel2").storeVector(&sel2).required()));
- setManager();
gmx::OptionsAssigner assigner(&options_);
std::string value(TestFileManager::getInputFilePath("selfile.dat"));
using gmx::SelectionOption;
ASSERT_NO_THROW_GMX(options_.addOption(
SelectionOption("sel").storeVector(&sel).multiValue()));
- setManager();
gmx::OptionsAssigner assigner(&options_);
EXPECT_NO_THROW_GMX(assigner.start());
using gmx::SelectionOption;
ASSERT_NO_THROW_GMX(options_.addOption(
SelectionOption("sel").storeVector(&sel).multiValue()));
- setManager();
gmx::OptionsAssigner assigner(&options_);
EXPECT_NO_THROW_GMX(assigner.start());
using gmx::SelectionOption;
ASSERT_NO_THROW_GMX(options_.addOption(
SelectionOption("sel").storeVector(&sel).multiValue()));
- setManager();
gmx::OptionsAssigner assigner(&options_);
EXPECT_NO_THROW_GMX(assigner.start());