diff options
author | Gereon Kremer <nafur42@gmail.com> | 2021-08-30 16:55:58 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-08-30 23:55:58 +0000 |
commit | af1b3974022509e26fc14bfe6cb49cb73074b32e (patch) | |
tree | 7119c2da1971ad8bdfe5f46b8f72be2f2290dc80 /test | |
parent | 22c83c12097da6105e6f03e0df70385527e651a4 (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.cpp | 47 |
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"); |