@@ -25,7 +25,7 @@ TEST_CASE("BranchingDynamics unit tests", "[unit][dynamics]") {
25
25
26
26
TEST_CASE (" BranchingDynamics functional tests" , " [dynamics]" ) {
27
27
bool const pseudo_candidates = GENERATE (true , false );
28
- dynamics::BranchingDynamics dyn {pseudo_candidates};
28
+ auto dyn = dynamics::BranchingDynamics{pseudo_candidates};
29
29
auto model = get_model ();
30
30
31
31
SECTION (" Return valid action set" ) {
@@ -56,3 +56,25 @@ TEST_CASE("BranchingDynamics functional tests", "[dynamics]") {
56
56
REQUIRE_THROWS_AS (dyn.step_dynamics (model, action), std::exception);
57
57
}
58
58
}
59
+
60
+ TEST_CASE (" BranchingDynamics handles limits" , " [dynamics]" ) {
61
+ bool const pseudo_candidates = GENERATE (true , false );
62
+ auto dyn = dynamics::BranchingDynamics{pseudo_candidates};
63
+ auto model = get_model ();
64
+
65
+ SECTION (" Node limit" ) {
66
+ auto const node_limit = GENERATE (0 , 1 , 2 );
67
+ model.set_param (" limits/totalnodes" , node_limit);
68
+ }
69
+
70
+ SECTION (" Time limit" ) {
71
+ auto const time_limit = GENERATE (0 , 1 , 2 );
72
+ model.set_param (" limits/time" , time_limit);
73
+ }
74
+
75
+ auto [done, action_set] = dyn.reset_dynamics (model);
76
+ while (!done) {
77
+ REQUIRE (action_set.has_value ());
78
+ std::tie (done, action_set) = dyn.step_dynamics (model, action_set.value ()[0 ]);
79
+ }
80
+ }
0 commit comments