summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorGereon Kremer <nafur42@gmail.com>2021-08-30 16:55:58 -0700
committerGitHub <noreply@github.com>2021-08-30 23:55:58 +0000
commitaf1b3974022509e26fc14bfe6cb49cb73074b32e (patch)
tree7119c2da1971ad8bdfe5f46b8f72be2f2290dc80 /test
parent22c83c12097da6105e6f03e0df70385527e651a4 (diff)
Add API function to obtain information about a single option (#6980)
This PR adds api::Solver::getOptionInfo() that returns information about a single option, including its name, aliases, current and default value and its domain.
Diffstat (limited to 'test')
-rw-r--r--test/unit/api/solver_black.cpp47
1 files changed, 47 insertions, 0 deletions
diff --git a/test/unit/api/solver_black.cpp b/test/unit/api/solver_black.cpp
index 312d57319..df4b42ca6 100644
--- a/test/unit/api/solver_black.cpp
+++ b/test/unit/api/solver_black.cpp
@@ -1329,6 +1329,53 @@ TEST_F(TestApiBlackSolver, getOptionNames)
ASSERT_EQ(std::find(names.begin(), names.end(), "foobar"), names.end());
}
+TEST_F(TestApiBlackSolver, getOptionInfo)
+{
+ {
+ auto info = d_solver.getOptionInfo("verbose");
+ ASSERT_EQ(info.name, "verbose");
+ ASSERT_EQ(info.aliases, std::vector<std::string>{});
+ ASSERT_TRUE(std::holds_alternative<api::OptionInfo::VoidInfo>(info.valueInfo));
+ }
+ {
+ // int64 type with default
+ api::OptionInfo info = d_solver.getOptionInfo("verbosity");
+ EXPECT_EQ("verbosity", info.name);
+ EXPECT_EQ(std::vector<std::string>{}, info.aliases);
+ EXPECT_TRUE(std::holds_alternative<OptionInfo::NumberInfo<int64_t>>(info.valueInfo));
+ auto numInfo = std::get<OptionInfo::NumberInfo<int64_t>>(info.valueInfo);
+ EXPECT_EQ(0, numInfo.defaultValue);
+ EXPECT_EQ(0, numInfo.currentValue);
+ EXPECT_FALSE(numInfo.minimum || numInfo.maximum);
+ ASSERT_EQ(info.intValue(), 0);
+ }
+ {
+ auto info = d_solver.getOptionInfo("random-freq");
+ ASSERT_EQ(info.name, "random-freq");
+ ASSERT_EQ(info.aliases, std::vector<std::string>{"random-frequency"});
+ ASSERT_TRUE(std::holds_alternative<api::OptionInfo::NumberInfo<double>>(info.valueInfo));
+ auto ni = std::get<api::OptionInfo::NumberInfo<double>>(info.valueInfo);
+ ASSERT_EQ(ni.currentValue, 0.0);
+ ASSERT_EQ(ni.defaultValue, 0.0);
+ ASSERT_TRUE(ni.minimum && ni.maximum);
+ ASSERT_EQ(*ni.minimum, 0.0);
+ ASSERT_EQ(*ni.maximum, 1.0);
+ ASSERT_EQ(info.doubleValue(), 0.0);
+ }
+ {
+ // mode option
+ api::OptionInfo info = d_solver.getOptionInfo("output");
+ EXPECT_EQ("output", info.name);
+ EXPECT_EQ(std::vector<std::string>{}, info.aliases);
+ EXPECT_TRUE(std::holds_alternative<OptionInfo::ModeInfo>(info.valueInfo));
+ auto modeInfo = std::get<OptionInfo::ModeInfo>(info.valueInfo);
+ EXPECT_EQ("NONE", modeInfo.defaultValue);
+ EXPECT_EQ("OutputTag::NONE", modeInfo.currentValue);
+ std::vector<std::string> modes{"NONE", "INST", "SYGUS", "TRIGGER"};
+ EXPECT_EQ(modes, modeInfo.modes);
+ }
+}
+
TEST_F(TestApiBlackSolver, getUnsatAssumptions1)
{
d_solver.setOption("incremental", "false");
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback