Skip to content

Commit 4267f42

Browse files
committed
fix: update ngen and tests for v0.2 of bmi protocols
1 parent 3d65c9c commit 4267f42

File tree

2 files changed

+46
-11
lines changed

2 files changed

+46
-11
lines changed

include/realizations/catchment/Bmi_Module_Formulation.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -254,7 +254,7 @@ namespace realization {
254254
virtual void check_mass_balance(const int& iteration, const int& total_steps, const std::string& timestamp) const override {
255255
//Create the protocol context, each member is const, and cannot change during the check
256256
models::bmi::protocols::Context ctx{iteration, total_steps, timestamp, id};
257-
bmi_protocols.mass_balance.run(ctx);
257+
bmi_protocols.run(models::bmi::protocols::Protocol::MASS_BALANCE, ctx);
258258
}
259259

260260
protected:

test/realizations/catchments/Bmi_C_Formulation_Test.cpp

Lines changed: 45 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -398,7 +398,7 @@ using models::bmi::protocols::INPUT_MASS_NAME;
398398
using models::bmi::protocols::OUTPUT_MASS_NAME;
399399
using models::bmi::protocols::STORED_MASS_NAME;
400400
using models::bmi::protocols::LEAKED_MASS_NAME;
401-
using models::bmi::protocols::MassBalanceError;
401+
using models::bmi::protocols::ProtocolError;
402402

403403
TEST_F(Bmi_C_Formulation_Test, check_mass_balance) {
404404
int ex_index = 0;
@@ -429,7 +429,7 @@ TEST_F(Bmi_C_Formulation_Test, check_mass_balance_warns) {
429429
formulation.check_mass_balance(0, 1, "t0");
430430
std::string output = testing::internal::GetCapturedStderr();
431431
std::cerr << output;
432-
EXPECT_THAT(output, testing::HasSubstr("mass_balance::warning"));
432+
EXPECT_THAT(output, testing::HasSubstr("Warning(Protocol)::mass_balance:"));
433433
}
434434

435435
TEST_F(Bmi_C_Formulation_Test, check_mass_balance_stored_fails) {
@@ -444,7 +444,14 @@ TEST_F(Bmi_C_Formulation_Test, check_mass_balance_stored_fails) {
444444
double mass_error = 100;
445445
get_friend_bmi_model(formulation)->SetValue(STORED_MASS_NAME, &mass_error); // Force a mass balance error
446446
//formulation.check_mass_balance(0, 1, "t0");
447-
ASSERT_THROW(formulation.check_mass_balance(0, 1, "t0"), MassBalanceError);
447+
ASSERT_THROW(formulation.check_mass_balance(0, 1, "t0"), ProtocolError);
448+
try{
449+
formulation.check_mass_balance(0, 1, "t0");
450+
}
451+
catch (ProtocolError& e) {
452+
std::cerr << e.to_string() << std::endl;
453+
EXPECT_THAT(e.to_string(), MatchesRegex("Error\\(Protocol\\)::mass_balance:.*"));
454+
}
448455
}
449456

450457
TEST_F(Bmi_C_Formulation_Test, check_mass_balance_in_fails_a) {
@@ -457,7 +464,14 @@ TEST_F(Bmi_C_Formulation_Test, check_mass_balance_in_fails_a) {
457464
formulation.get_response(1, 3600);
458465
double mass_error = 2;
459466
get_friend_bmi_model(formulation)->SetValue(INPUT_MASS_NAME, &mass_error); // Force a mass balance error
460-
ASSERT_THROW(formulation.check_mass_balance(0, 1, "t0"), MassBalanceError);
467+
ASSERT_THROW(formulation.check_mass_balance(0, 1, "t0"), ProtocolError);
468+
try{
469+
formulation.check_mass_balance(0, 1, "t0");
470+
}
471+
catch (ProtocolError& e) {
472+
std::cerr << e.to_string() << std::endl;
473+
EXPECT_THAT(e.to_string(), MatchesRegex("Error\\(Protocol\\)::mass_balance:.*"));
474+
}
461475
}
462476

463477
TEST_F(Bmi_C_Formulation_Test, check_mass_balance_out_fails) {
@@ -470,7 +484,14 @@ TEST_F(Bmi_C_Formulation_Test, check_mass_balance_out_fails) {
470484
formulation.get_response(1, 3600);
471485
double mass_error = 2;
472486
get_friend_bmi_model(formulation)->SetValue(OUTPUT_MASS_NAME, &mass_error); // Force a mass balance error
473-
ASSERT_THROW(formulation.check_mass_balance(0, 1, "t0"), MassBalanceError);
487+
ASSERT_THROW(formulation.check_mass_balance(0, 1, "t0"), ProtocolError);
488+
try{
489+
formulation.check_mass_balance(0, 1, "t0");
490+
}
491+
catch (ProtocolError& e) {
492+
std::cerr << e.to_string() << std::endl;
493+
EXPECT_THAT(e.to_string(), MatchesRegex("Error\\(Protocol\\)::mass_balance:.*"));
494+
}
474495
}
475496

476497
TEST_F(Bmi_C_Formulation_Test, check_mass_balance_leaked_fails) {
@@ -483,7 +504,14 @@ TEST_F(Bmi_C_Formulation_Test, check_mass_balance_leaked_fails) {
483504
formulation.get_response(1, 3600);
484505
double mass_error = 2;
485506
get_friend_bmi_model(formulation)->SetValue(LEAKED_MASS_NAME, &mass_error); // Force a mass balance error
486-
ASSERT_THROW(formulation.check_mass_balance(0, 1, "t0"), MassBalanceError);
507+
ASSERT_THROW(formulation.check_mass_balance(0, 1, "t0"), ProtocolError);
508+
try{
509+
formulation.check_mass_balance(0, 1, "t0");
510+
}
511+
catch (ProtocolError& e) {
512+
std::cerr << e.to_string() << std::endl;
513+
EXPECT_THAT(e.to_string(), MatchesRegex("Error\\(Protocol\\)::mass_balance:.*"));
514+
}
487515
}
488516

489517
TEST_F(Bmi_C_Formulation_Test, check_mass_balance_tolerance) {
@@ -499,7 +527,14 @@ TEST_F(Bmi_C_Formulation_Test, check_mass_balance_tolerance) {
499527
get_friend_bmi_model(formulation)->GetValue(INPUT_MASS_NAME, &mass_error);
500528
mass_error += 1e-4; // Force a mass balance error not within tolerance
501529
get_friend_bmi_model(formulation)->SetValue(INPUT_MASS_NAME, &mass_error); // Force a mass balance error
502-
ASSERT_THROW(formulation.check_mass_balance(0, 1, "t0"), MassBalanceError);
530+
ASSERT_THROW(formulation.check_mass_balance(0, 1, "t0"), ProtocolError);
531+
try{
532+
formulation.check_mass_balance(0, 1, "t0");
533+
}
534+
catch (ProtocolError& e) {
535+
std::cerr << e.to_string() << std::endl;
536+
EXPECT_THAT(e.to_string(), MatchesRegex("Error\\(Protocol\\)::mass_balance:.*"));
537+
}
503538
}
504539

505540
TEST_F(Bmi_C_Formulation_Test, check_mass_balance_tolerance_a) {
@@ -559,13 +594,13 @@ TEST_F(Bmi_C_Formulation_Test, check_mass_balance_frequency) {
559594
get_friend_bmi_model(formulation)->SetValue(OUTPUT_MASS_NAME, &mass_error); //
560595
//Check initial mass balance -- should error which indicates it was propoerly checked
561596
//per frequency setting
562-
ASSERT_THROW(formulation.check_mass_balance(0, 2, "t0"), MassBalanceError);
597+
ASSERT_THROW(formulation.check_mass_balance(0, 2, "t0"), ProtocolError);
563598
// Call mass balance check again, this should NOT error, since the actual check
564599
// should be skipped due to the frequency setting
565600
formulation.check_mass_balance(1, 2, "t1");
566601
// Check mass balance again, this SHOULD error since the previous mass balance
567602
// will propagate, and it should now be checked based on the frequency
568-
ASSERT_THROW(formulation.check_mass_balance(2, 2, "t2"), MassBalanceError);
603+
ASSERT_THROW(formulation.check_mass_balance(2, 2, "t2"), ProtocolError);
569604
}
570605

571606
TEST_F(Bmi_C_Formulation_Test, check_mass_balance_frequency_1) {
@@ -585,7 +620,7 @@ TEST_F(Bmi_C_Formulation_Test, check_mass_balance_frequency_1) {
585620
formulation.check_mass_balance(1, 2, "t1");
586621
// Check mass balance again, this SHOULD error since the this is step 2/2
587622
// and it will now be checked based on the frequency (-1, check at end)
588-
ASSERT_THROW(formulation.check_mass_balance(2, 2, "t2"), MassBalanceError);
623+
ASSERT_THROW(formulation.check_mass_balance(2, 2, "t2"), ProtocolError);
589624
}
590625

591626
#endif // NGEN_BMI_C_LIB_TESTS_ACTIVE

0 commit comments

Comments
 (0)