1 #include "src/include/catch.hpp"
2 #include "src/kernel/lmm/maxmin.hpp"
3 #include "src/surf/surf_interface.hpp"
6 #define DOUBLE_PRECISION 0.00001
9 namespace lmm = simgrid::kernel::lmm;
11 // XBT_LOG_NEW_DEFAULT_CATEGORY(surf_test, "Messages specific for surf example");
12 // XBT_INFO("V1=%g V2=%g V3=%g",V1->get_value(),V2->get_value(),V3->get_value());
14 TEST_CASE("Test on small systems", "[lmm-small-systems]")
16 lmm::System* Sys = lmm::make_new_maxmin_system(false);
18 SECTION("Check variables weight (sharing_weight)")
22 lmm::Constraint* C = Sys->constraint_new(nullptr, 10);
24 // Create the 3 variables (with increasing weight from 1 to 3)
26 Sys->variable_new(nullptr, 1, 0.0, 1); // id=nullptr, weight_value=1, bound=0, number_of_constraints=1
27 lmm::Variable* V2 = Sys->variable_new(nullptr, 2, 0.0, 1);
28 lmm::Variable* V3 = Sys->variable_new(nullptr, 3, 0.0, 1);
30 // Link Variables to Constraint with constant weight 1
31 Sys->expand(C, V1, 1);
32 Sys->expand(C, V2, 1);
33 Sys->expand(C, V3, 1);
37 // Compare with theorical values
38 REQUIRE(double_equals(V1->get_value(), 5.45455, DOUBLE_PRECISION));
39 REQUIRE(double_equals(V2->get_value(), 2.72727, DOUBLE_PRECISION));
40 REQUIRE(double_equals(V3->get_value(), 1.81818, DOUBLE_PRECISION));