@@ -183,26 +183,6 @@ void AddProtocolEntry(const uint32_t& payload_version, const std::string& key, c
183183
184184 registry.Add ({contract, dummy_tx, &dummy_index});
185185}
186-
187- // Unfortunately, GCC 13 on openSUSE i386 is misbehaving and exhibiting weird errors in the last decimal places for things
188- // even as straightforward as
189- //
190- // double foo = 0.0;
191- // text >> foo.
192- //
193- // This comparison function works around that by allowing a small error band to pass the tests, but not enough to invalidate
194- // the tests on compilers that work.
195- bool comp_double (double lhs, double rhs)
196- {
197- // Require exact match if 0=0.
198- if (std::min (lhs, rhs) == 0.0 ) {
199- return (lhs == rhs);
200- } else {
201- double unsigned_rel_error = std::abs (lhs - rhs) / std::min (lhs, rhs);
202-
203- return (unsigned_rel_error <= double {1e-8 });
204- }
205- }
206186} // anonymous namespace
207187
208188// -----------------------------------------------------------------------------
@@ -225,7 +205,7 @@ BOOST_AUTO_TEST_CASE(it_initializes_with_project_data)
225205 BOOST_CHECK (project.m_cpid == expected);
226206 BOOST_CHECK (project.m_team == " team name" );
227207 BOOST_CHECK (project.m_url == " url" );
228- BOOST_CHECK (comp_double ( project.m_rac , 0.0 ) );
208+ BOOST_CHECK (project.m_rac == 0.0 );
229209 BOOST_CHECK (project.m_error == GRC::MiningProject::Error::NONE);
230210}
231211
@@ -254,7 +234,7 @@ BOOST_AUTO_TEST_CASE(it_parses_a_project_xml_string)
254234 BOOST_CHECK (project.m_cpid == cpid);
255235 BOOST_CHECK (project.m_team == " team name" );
256236 BOOST_CHECK (project.m_url == " https://example.com/" );
257- BOOST_CHECK (comp_double ( project.m_rac , 123.45 ) );
237+ BOOST_CHECK (project.m_rac == 123.45 );
258238 BOOST_CHECK (project.m_error == GRC::MiningProject::Error::NONE);
259239
260240 // Clean up:
@@ -289,7 +269,7 @@ BOOST_AUTO_TEST_CASE(it_falls_back_to_compute_a_missing_external_cpid)
289269 BOOST_CHECK (project.m_cpid == cpid);
290270 BOOST_CHECK (project.m_team == " team name" );
291271 BOOST_CHECK (project.m_url == " https://example.com/" );
292- BOOST_CHECK (comp_double ( project.m_rac , 123.45 ) );
272+ BOOST_CHECK (project.m_rac == 123.45 );
293273 BOOST_CHECK (project.m_error == GRC::MiningProject::Error::NONE);
294274
295275 // Clean up:
@@ -508,7 +488,7 @@ BOOST_AUTO_TEST_CASE(it_parses_a_set_of_project_xml_sections)
508488 BOOST_CHECK (project1->m_cpid == cpid_1);
509489 BOOST_CHECK (project1->m_team == " gridcoin" );
510490 BOOST_CHECK (project1->m_url == " https://example.com/1" );
511- BOOST_CHECK (comp_double ( project1->m_rac , 123.45 ) );
491+ BOOST_CHECK (project1->m_rac == 123.45 );
512492 BOOST_CHECK (project1->m_error == GRC::MiningProject::Error::NONE);
513493 BOOST_CHECK (project1->Eligible () == true );
514494 } else {
@@ -520,7 +500,7 @@ BOOST_AUTO_TEST_CASE(it_parses_a_set_of_project_xml_sections)
520500 BOOST_CHECK (project2->m_cpid == cpid_2);
521501 BOOST_CHECK (project2->m_team == " gridcoin" );
522502 BOOST_CHECK (project2->m_url == " https://example.com/2" );
523- BOOST_CHECK (comp_double ( project2->m_rac , 567.89 ) );
503+ BOOST_CHECK (project2->m_rac == 567.89 );
524504 BOOST_CHECK (project2->m_error == GRC::MiningProject::Error::NONE);
525505 BOOST_CHECK (project2->Eligible () == true );
526506 } else {
@@ -875,7 +855,7 @@ BOOST_AUTO_TEST_CASE(it_parses_project_xml_to_a_global_researcher_singleton)
875855 BOOST_CHECK (project1->m_cpid == cpid_1);
876856 BOOST_CHECK (project1->m_team == " gridcoin" );
877857 BOOST_CHECK (project1->m_url == " https://example.com/1" );
878- BOOST_CHECK (comp_double ( project1->m_rac , 1.1 ) );
858+ BOOST_CHECK (project1->m_rac == 1.1 );
879859 BOOST_CHECK (project1->m_error == GRC::MiningProject::Error::NONE);
880860 BOOST_CHECK (project1->Eligible () == true );
881861 } else {
@@ -887,7 +867,7 @@ BOOST_AUTO_TEST_CASE(it_parses_project_xml_to_a_global_researcher_singleton)
887867 BOOST_CHECK (project2->m_cpid == cpid_2);
888868 BOOST_CHECK (project2->m_team == " gridcoin" );
889869 BOOST_CHECK (project2->m_url == " https://example.com/2" );
890- BOOST_CHECK (comp_double ( project2->m_rac , 2.2 ) );
870+ BOOST_CHECK (project2->m_rac == 2.2 );
891871 BOOST_CHECK (project2->m_error == GRC::MiningProject::Error::NONE);
892872 BOOST_CHECK (project2->Eligible () == true );
893873 } else {
@@ -929,7 +909,7 @@ BOOST_AUTO_TEST_CASE(it_looks_up_loaded_boinc_projects_by_name)
929909 BOOST_CHECK (project->m_cpid == cpid);
930910 BOOST_CHECK (project->m_team == " gridcoin" );
931911 BOOST_CHECK (project->m_url == " https://example.com/" );
932- BOOST_CHECK (comp_double ( project->m_rac , 1.1 ) );
912+ BOOST_CHECK (project->m_rac == 1.1 );
933913 BOOST_CHECK (project->m_error == GRC::MiningProject::Error::NONE);
934914 BOOST_CHECK (project->Eligible () == true );
935915 } else {
@@ -1068,7 +1048,7 @@ BOOST_AUTO_TEST_CASE(it_tags_invalid_projects_with_errors_when_parsing_xml)
10681048 BOOST_CHECK (project1->m_name == " project name 1" );
10691049 BOOST_CHECK (project1->m_cpid == cpid);
10701050 BOOST_CHECK (project1->m_team == " not gridcoin" );
1071- BOOST_CHECK (comp_double ( project1->m_rac , 1.1 ) );
1051+ BOOST_CHECK (project1->m_rac == 1.1 );
10721052 BOOST_CHECK (project1->m_error == GRC::MiningProject::Error::INVALID_TEAM);
10731053 BOOST_CHECK (project1->Eligible () == false );
10741054 } else {
@@ -1079,7 +1059,7 @@ BOOST_AUTO_TEST_CASE(it_tags_invalid_projects_with_errors_when_parsing_xml)
10791059 BOOST_CHECK (project2->m_name == " project name 2" );
10801060 BOOST_CHECK (project2->m_cpid == cpid);
10811061 BOOST_CHECK (project2->m_team .empty () == true );
1082- BOOST_CHECK (comp_double ( project2->m_rac , 2.2 ) );
1062+ BOOST_CHECK (project2->m_rac == 2.2 );
10831063 BOOST_CHECK (project2->m_error == GRC::MiningProject::Error::INVALID_TEAM);
10841064 BOOST_CHECK (project2->Eligible () == false );
10851065 } else {
@@ -1090,7 +1070,7 @@ BOOST_AUTO_TEST_CASE(it_tags_invalid_projects_with_errors_when_parsing_xml)
10901070 BOOST_CHECK (project3->m_name == " project name 3" );
10911071 BOOST_CHECK (project3->m_cpid == GRC::Cpid ());
10921072 BOOST_CHECK (project3->m_team == " gridcoin" );
1093- BOOST_CHECK (comp_double ( project3->m_rac , 3.3 ) );
1073+ BOOST_CHECK (project3->m_rac == 3.3 );
10941074 BOOST_CHECK (project3->m_error == GRC::MiningProject::Error::MALFORMED_CPID);
10951075 BOOST_CHECK (project3->Eligible () == false );
10961076 } else {
@@ -1101,7 +1081,7 @@ BOOST_AUTO_TEST_CASE(it_tags_invalid_projects_with_errors_when_parsing_xml)
11011081 BOOST_CHECK (project4->m_name == " project name 4" );
11021082 BOOST_CHECK (project4->m_cpid == GRC::Cpid ());
11031083 BOOST_CHECK (project4->m_team == " gridcoin" );
1104- BOOST_CHECK (comp_double ( project4->m_rac , 4.4 ) );
1084+ BOOST_CHECK (project4->m_rac == 4.4 );
11051085 BOOST_CHECK (project4->m_error == GRC::MiningProject::Error::MALFORMED_CPID);
11061086 BOOST_CHECK (project4->Eligible () == false );
11071087 } else {
@@ -1112,7 +1092,7 @@ BOOST_AUTO_TEST_CASE(it_tags_invalid_projects_with_errors_when_parsing_xml)
11121092 BOOST_CHECK (project5->m_name == " project name 5" );
11131093 BOOST_CHECK (project5->m_cpid == cpid);
11141094 BOOST_CHECK (project5->m_team == " gridcoin" );
1115- BOOST_CHECK (comp_double ( project5->m_rac , 5.5 ) );
1095+ BOOST_CHECK (project5->m_rac == 5.5 );
11161096 BOOST_CHECK (project5->m_error == GRC::MiningProject::Error::MISMATCHED_CPID);
11171097 BOOST_CHECK (project5->Eligible () == false );
11181098 } else {
@@ -1123,7 +1103,7 @@ BOOST_AUTO_TEST_CASE(it_tags_invalid_projects_with_errors_when_parsing_xml)
11231103 BOOST_CHECK (project6->m_name == " project name 6" );
11241104 BOOST_CHECK (project6->m_cpid == cpid);
11251105 BOOST_CHECK (project6->m_team == " gridcoin" );
1126- BOOST_CHECK (comp_double ( project6->m_rac , 6.6 ) );
1106+ BOOST_CHECK (project6->m_rac == 6.6 );
11271107 BOOST_CHECK (project6->m_error == GRC::MiningProject::Error::MISMATCHED_CPID);
11281108 BOOST_CHECK (project6->Eligible () == false );
11291109 } else {
@@ -1132,7 +1112,7 @@ BOOST_AUTO_TEST_CASE(it_tags_invalid_projects_with_errors_when_parsing_xml)
11321112
11331113 if (const GRC::ProjectOption project7 = projects.Try (" project name 7" )) {
11341114 BOOST_CHECK (project7->m_name == " project name 7" );
1135- BOOST_CHECK (comp_double ( project7->m_rac , 7.7 ) );
1115+ BOOST_CHECK (project7->m_rac == 7.7 );
11361116 BOOST_CHECK (project7->m_error == GRC::MiningProject::Error::POOL);
11371117 BOOST_CHECK (project7->Eligible () == false );
11381118 } else {
@@ -1142,7 +1122,7 @@ BOOST_AUTO_TEST_CASE(it_tags_invalid_projects_with_errors_when_parsing_xml)
11421122 if (const GRC::ProjectOption project8 = projects.Try (" project name 8" )) {
11431123 BOOST_CHECK (project8->m_name == " project name 8" );
11441124 BOOST_CHECK (project8->m_cpid .IsZero () == true );
1145- BOOST_CHECK (comp_double ( project8->m_rac , 8.8 ) );
1125+ BOOST_CHECK (project8->m_rac == 8.8 );
11461126 BOOST_CHECK (project8->m_error == GRC::MiningProject::Error::POOL);
11471127 BOOST_CHECK (project8->Eligible () == false );
11481128 } else {
@@ -1153,7 +1133,7 @@ BOOST_AUTO_TEST_CASE(it_tags_invalid_projects_with_errors_when_parsing_xml)
11531133 BOOST_CHECK (project9->m_name == " project name 9" );
11541134 BOOST_CHECK (project9->m_cpid == cpid);
11551135 BOOST_CHECK (project9->m_team == " not gridcoin" );
1156- BOOST_CHECK (comp_double ( project9->m_rac , 0.0 ) );
1136+ BOOST_CHECK (project9->m_rac == 0.0 );
11571137 BOOST_CHECK (project9->m_error == GRC::MiningProject::Error::INVALID_TEAM);
11581138 BOOST_CHECK (project9->Eligible () == false );
11591139 } else {
@@ -1232,7 +1212,7 @@ BOOST_AUTO_TEST_CASE(it_skips_the_team_requirement_when_set_by_protocol)
12321212 BOOST_CHECK (project1->m_name == " project name 1" );
12331213 BOOST_CHECK (project1->m_cpid == cpid);
12341214 BOOST_CHECK (project1->m_team == " ! not gridcoin !" );
1235- BOOST_CHECK (comp_double ( project1->m_rac , 1.1 ) );
1215+ BOOST_CHECK (project1->m_rac == 1.1 );
12361216 BOOST_CHECK (project1->m_error == GRC::MiningProject::Error::NONE);
12371217 BOOST_CHECK (project1->Eligible () == true );
12381218 } else {
@@ -1302,7 +1282,7 @@ BOOST_AUTO_TEST_CASE(it_applies_the_team_whitelist_when_set_by_the_protocol)
13021282 BOOST_CHECK (project1->m_name == " project name 1" );
13031283 BOOST_CHECK (project1->m_cpid == cpid);
13041284 BOOST_CHECK (project1->m_team == " ! not gridcoin !" );
1305- BOOST_CHECK (comp_double ( project1->m_rac , 1.1 ) );
1285+ BOOST_CHECK (project1->m_rac == 1.1 );
13061286 BOOST_CHECK (project1->m_error == GRC::MiningProject::Error::INVALID_TEAM);
13071287 BOOST_CHECK (project1->Eligible () == false );
13081288 } else {
@@ -1313,7 +1293,7 @@ BOOST_AUTO_TEST_CASE(it_applies_the_team_whitelist_when_set_by_the_protocol)
13131293 BOOST_CHECK (project2->m_name == " project name 2" );
13141294 BOOST_CHECK (project2->m_cpid == cpid);
13151295 BOOST_CHECK (project2->m_team == " team 1" );
1316- BOOST_CHECK (comp_double ( project2->m_rac , 0 ) );
1296+ BOOST_CHECK (project2->m_rac == 0 );
13171297 BOOST_CHECK (project2->m_error == GRC::MiningProject::Error::NONE);
13181298 BOOST_CHECK (project2->Eligible () == true );
13191299 } else {
@@ -1324,7 +1304,7 @@ BOOST_AUTO_TEST_CASE(it_applies_the_team_whitelist_when_set_by_the_protocol)
13241304 BOOST_CHECK (project3->m_name == " project name 3" );
13251305 BOOST_CHECK (project3->m_cpid == cpid);
13261306 BOOST_CHECK (project3->m_team == " team 2" );
1327- BOOST_CHECK (comp_double ( project3->m_rac , 0 ) );
1307+ BOOST_CHECK (project3->m_rac == 0 );
13281308 BOOST_CHECK (project3->m_error == GRC::MiningProject::Error::NONE);
13291309 BOOST_CHECK (project3->Eligible () == true );
13301310 } else {
@@ -1649,7 +1629,7 @@ void it_parses_project_xml_from_a_client_state_xml_file()
16491629 BOOST_CHECK (project1->m_name == " valid project 1" );
16501630 BOOST_CHECK (project1->m_cpid == cpid_1);
16511631 BOOST_CHECK (project1->m_team == " gridcoin" );
1652- BOOST_CHECK (comp_double ( project1->m_rac , 1.1 ) );
1632+ BOOST_CHECK (project1->m_rac == 1.1 );
16531633 BOOST_CHECK (project1->m_url == " https://project1.example.com/boinc/" );
16541634 BOOST_CHECK (project1->m_error == GRC::MiningProject::Error::NONE);
16551635 BOOST_CHECK (project1->Eligible () == true );
@@ -1661,7 +1641,7 @@ void it_parses_project_xml_from_a_client_state_xml_file()
16611641 BOOST_CHECK (project2->m_name == " valid project 2" );
16621642 BOOST_CHECK (project2->m_cpid == cpid_2);
16631643 BOOST_CHECK (project2->m_team == " gridcoin" );
1664- BOOST_CHECK (comp_double ( project2->m_rac , 2.2 ) );
1644+ BOOST_CHECK (project2->m_rac == 2.2 );
16651645 BOOST_CHECK (project2->m_url == " https://project2.example.com/boinc/" );
16661646 BOOST_CHECK (project2->m_error == GRC::MiningProject::Error::NONE);
16671647 BOOST_CHECK (project2->Eligible () == true );
@@ -1674,7 +1654,7 @@ void it_parses_project_xml_from_a_client_state_xml_file()
16741654 BOOST_CHECK (project3->m_name == " invalid project 3" );
16751655 BOOST_CHECK (project3->m_cpid == cpid_2);
16761656 BOOST_CHECK (project3->m_team == " gridcoin" );
1677- BOOST_CHECK (comp_double ( project3->m_rac , 3.3 ) );
1657+ BOOST_CHECK (project3->m_rac == 3.3 );
16781658 BOOST_CHECK (project3->m_url == " https://project3.example.com/boinc/" );
16791659 BOOST_CHECK (project3->m_error == GRC::MiningProject::Error::MISMATCHED_CPID);
16801660 BOOST_CHECK (project3->Eligible () == false );
0 commit comments