diff --git a/tests/cpp_unit_tests/test_distribution.cpp b/tests/cpp_unit_tests/test_distribution.cpp index 772fc136a..41cb2b4c4 100644 --- a/tests/cpp_unit_tests/test_distribution.cpp +++ b/tests/cpp_unit_tests/test_distribution.cpp @@ -1,6 +1,7 @@ #include "openmc/distribution.h" #include "openmc/random_lcg.h" #include +#include TEST_CASE("Test alias method sampling of a discrete distribution") { @@ -38,3 +39,25 @@ TEST_CASE("Test alias method sampling of a discrete distribution") // expected mean REQUIRE(std::abs(dist_mean - mean) < 3 * std); } + +TEST_CASE("Test alias sampling method for pugixml constructor") +{ + // XML doc node for Discrete contructor + pugi::xml_document doc; + pugi::xml_node energy = doc.append_child("energy"); + pugi::xml_node parameters = energy.append_child("parameters"); + parameters.append_child(pugi::node_pcdata) + .set_value("17140457.745328166 1.0"); + + // Initialize discrete distribution and seed + openmc::Discrete dist(energy); + uint64_t seed = openmc::init_seed(0, 0); + + // Assertions + REQUIRE(dist.x().size() == 1); + REQUIRE(dist.p().size() == 1); + REQUIRE(dist.alias().size() == 0); + REQUIRE(dist.x()[0] == 17140457.745328166); + REQUIRE(dist.p()[0] == 1.0); + REQUIRE(dist.sample(&seed) == 17140457.745328166); +}