21 const char* content = R
"( 23 <parameter name="p1">1</parameter> 24 <parameter name="p4"> -2 -3 </parameter> 37 param.
add(p1_val,
"p1");
38 param.
add(p2_val,
"p2");
39 param.
add(p3_val,
"p3");
40 param.
add(p4_str,
"p4");
47 auto p4_vals = qmcplusplus::convertStrToVec<int>(p4_str.
s);
49 CHECK(p4_vals[0] == -2);
50 CHECK(p4_vals[1] == -3);
56 const char* content = R
"( 58 <parameter name="p1"> yes </parameter> 59 <parameter name="p2"> no </parameter> 70 param.
add(p1_val,
"p1");
71 param.
add(p2_val,
"p2");
72 param.
add(p3_val,
"p3", {
true,
false});
75 CHECK(p1_val ==
true);
76 CHECK(p2_val ==
false);
77 CHECK(p3_val ==
true);
81 const char* content = R
"( 83 <parameter name="p1"> </parameter> 92 param.
add(p1_val,
"p1");
93 CHECK_THROWS_WITH(param.
put(
doc.
getRoot()),
"p1 requires a single value input.");
97 const char* content = R
"( 99 <parameter name="p1"> yes no </parameter> 108 param.
add(p1_val,
"p1");
109 CHECK_THROWS_WITH(param.
put(
doc.
getRoot()),
"p1 only accepts a single value input.");
113 const char* content = R
"( 115 <parameter name="p1"> here </parameter> 124 param.
add(p1_val,
"p1");
125 CHECK_THROWS_WITH(param.
put(
doc.
getRoot()),
"p1 only accepts 'yes'/'no'/'true'/'false' but the input value is 'here'.");
class that handles xmlDoc
bool put(std::istream &is) override
read from std::istream
class to handle a set of parameters
REQUIRE(std::filesystem::exists(filename))
TEST_CASE("ParameterSet", "[xml]")
void add(PDT &aparam, const std::string &aname_in, std::vector< PDT > candidate_values={}, TagStatus status=TagStatus::OPTIONAL)
add a new parameter corresponding to an xmlNode <parameter>
bool parseFromString(const std::string_view data)
CHECK(log_values[0]==ComplexApprox(std::complex< double >{ 5.603777579195571, -6.1586603331188225 }))