Cleanup
publish / publish (push) Successful in 10m36s

This commit is contained in:
khodowany
2026-09-24 19:40:03 -05:00
parent 097cb61d2d
commit 0c9ba1bff4
15 changed files with 628 additions and 53 deletions
+20
View File
@@ -5,6 +5,7 @@
#include <filesystem>
#include <fstream>
#include <iostream>
#include <limits>
#include <set>
#include <sstream>
#include <string>
@@ -270,3 +271,22 @@ BOOST_AUTO_TEST_CASE(modulus_load_config_handles_files) {
auto invalid = modulus::load_config(invalid_path.string());
BOOST_REQUIRE(!invalid.has_value());
}
BOOST_AUTO_TEST_CASE(modulus_json_float_fields_validate_numeric_types_and_bounds) {
auto object = boost::json::object{};
auto options = modulus::json_config::options{.category = "domain", .invalid_argument_code = 42};
auto read = [&] { return modulus::json_config::optional_float64_field(object, "gain", 0.5, 0.0, 1.0, options); };
BOOST_REQUIRE(read());
BOOST_TEST(static_cast<double>(*read()) == 0.5);
for (auto const &value : {boost::json::value{0}, boost::json::value{std::uint64_t{1}}, boost::json::value{0.25}}) {
object["gain"] = value;
BOOST_REQUIRE(read());
}
for (auto const &value : {boost::json::value{-1}, boost::json::value{2U}, boost::json::value{true}, boost::json::value{"0.5"}, boost::json::value{nullptr}, boost::json::value{std::numeric_limits<double>::infinity()}, boost::json::value{std::numeric_limits<double>::quiet_NaN()}}) {
object["gain"] = value;
auto result = read();
BOOST_REQUIRE(!result);
BOOST_TEST(std::string{result.error().category()} == "domain");
BOOST_TEST(result.error().code() == 42);
}
}