Do safe division instead of fixing result

This commit is contained in:
Andy Cedilnik 2003-04-10 09:07:26 -04:00
parent 55e7d082e9
commit 5e9b2b94da

View File

@ -29,11 +29,7 @@
#include <math.h> #include <math.h>
#include <float.h> #include <float.h>
#ifdef _WIN32 #define SAFEDIV(x,y) (((y)!=0)?((x)/(y)):(0))
# define FIXNUM(x) (_finite(x)?(x):(0))
#else
# define FIXNUM(x) (finite(x)?(x):(0))
#endif
#ifdef HAVE_CURL #ifdef HAVE_CURL
static struct tm* GetNightlyTime(std::string str) static struct tm* GetNightlyTime(std::string str)
@ -1444,10 +1440,10 @@ int cmCTest::CoverageDirectory()
float cmet = 0; float cmet = 0;
if ( total_tested + total_untested > 0 && (cov.m_Tested + cov.m_UnTested) > 0) if ( total_tested + total_untested > 0 && (cov.m_Tested + cov.m_UnTested) > 0)
{ {
cper = (100 * static_cast<float>(cov.m_Tested)/ cper = (100 * SAFEDIV(static_cast<float>(cov.m_Tested),
static_cast<float>(cov.m_Tested + cov.m_UnTested)); static_cast<float>(cov.m_Tested + cov.m_UnTested)));
cmet = ( static_cast<float>(cov.m_Tested + 10) / cmet = ( SAFEDIV(static_cast<float>(cov.m_Tested + 10),
static_cast<float>(cov.m_Tested + cov.m_UnTested + 10)); static_cast<float>(cov.m_Tested + cov.m_UnTested + 10)));
} }
log << "\t<File Name=\"" << cit->first << "\" FullPath=\"" << cov.m_FullPath log << "\t<File Name=\"" << cit->first << "\" FullPath=\"" << cov.m_FullPath
@ -1457,11 +1453,11 @@ int cmCTest::CoverageDirectory()
<< "\t\t<PercentCoverage>"; << "\t\t<PercentCoverage>";
log.setf(std::ios::fixed, std::ios::floatfield); log.setf(std::ios::fixed, std::ios::floatfield);
log.precision(2); log.precision(2);
log << FIXNUM(cper) << "</PercentCoverage>\n" log << (cper) << "</PercentCoverage>\n"
<< "\t\t<CoverageMetric>"; << "\t\t<CoverageMetric>";
log.setf(std::ios::fixed, std::ios::floatfield); log.setf(std::ios::fixed, std::ios::floatfield);
log.precision(2); log.precision(2);
log << FIXNUM(cmet) << "</CoverageMetric>\n" log << (cmet) << "</CoverageMetric>\n"
<< "\t</File>" << std::endl; << "\t</File>" << std::endl;
ccount ++; ccount ++;
} }
@ -1476,8 +1472,8 @@ int cmCTest::CoverageDirectory()
} }
int total_lines = total_tested + total_untested; int total_lines = total_tested + total_untested;
float percent_coverage = 100 * static_cast<float>(total_tested) / float percent_coverage = 100 * SAFEDIV(static_cast<float>(total_tested),
static_cast<float>(total_lines); static_cast<float>(total_lines));
if ( total_lines == 0 ) if ( total_lines == 0 )
{ {
percent_coverage = 0; percent_coverage = 0;
@ -1491,7 +1487,7 @@ int cmCTest::CoverageDirectory()
<< "\t<PercentCoverage>"; << "\t<PercentCoverage>";
log.setf(std::ios::fixed, std::ios::floatfield); log.setf(std::ios::fixed, std::ios::floatfield);
log.precision(2); log.precision(2);
log << FIXNUM(percent_coverage)<< "</PercentCoverage>\n" log << (percent_coverage)<< "</PercentCoverage>\n"
<< "\t<EndDateTime>" << end_time << "</EndDateTime>\n" << "\t<EndDateTime>" << end_time << "</EndDateTime>\n"
<< "</Coverage>\n" << "</Coverage>\n"
<< "</Site>" << std::endl; << "</Site>" << std::endl;
@ -1503,7 +1499,7 @@ int cmCTest::CoverageDirectory()
std::cout.setf(std::ios::fixed, std::ios::floatfield); std::cout.setf(std::ios::fixed, std::ios::floatfield);
std::cout.precision(2); std::cout.precision(2);
std::cout << FIXNUM(percent_coverage) << "%" << std::endl; std::cout << (percent_coverage) << "%" << std::endl;
return 1; return 1;