Skip to content

Commit

Permalink
Don't cast nanoseconds to integers when writing output
Browse files Browse the repository at this point in the history
  • Loading branch information
khyperia authored and horenmar committed Mar 8, 2020
1 parent 87b5bf7 commit 022b61f
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 13 deletions.
12 changes: 4 additions & 8 deletions include/reporters/catch_reporter_console.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -210,15 +210,11 @@ class Duration {
static const uint64_t s_nanosecondsInASecond = 1000 * s_nanosecondsInAMillisecond;
static const uint64_t s_nanosecondsInAMinute = 60 * s_nanosecondsInASecond;

uint64_t m_inNanoseconds;
double m_inNanoseconds;
Unit m_units;

public:
explicit Duration(double inNanoseconds, Unit units = Unit::Auto)
: Duration(static_cast<uint64_t>(inNanoseconds), units) {
}

explicit Duration(uint64_t inNanoseconds, Unit units = Unit::Auto)
explicit Duration(double inNanoseconds, Unit units = Unit::Auto)
: m_inNanoseconds(inNanoseconds),
m_units(units) {
if (m_units == Unit::Auto) {
Expand Down Expand Up @@ -247,7 +243,7 @@ class Duration {
case Unit::Minutes:
return m_inNanoseconds / static_cast<double>(s_nanosecondsInAMinute);
default:
return static_cast<double>(m_inNanoseconds);
return m_inNanoseconds;
}
}
auto unitsAsString() const -> std::string {
Expand Down Expand Up @@ -698,4 +694,4 @@ CATCH_REGISTER_REPORTER("console", ConsoleReporter)

#if defined(__clang__)
# pragma clang diagnostic pop
#endif
#endif
10 changes: 5 additions & 5 deletions include/reporters/catch_reporter_xml.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -229,16 +229,16 @@ namespace Catch {
m_xml.writeAttribute("samples", info.samples)
.writeAttribute("resamples", info.resamples)
.writeAttribute("iterations", info.iterations)
.writeAttribute("clockResolution", static_cast<uint64_t>(info.clockResolution))
.writeAttribute("estimatedDuration", static_cast<uint64_t>(info.estimatedDuration))
.writeAttribute("clockResolution", info.clockResolution)
.writeAttribute("estimatedDuration", info.estimatedDuration)
.writeComment("All values in nano seconds");
}

void XmlReporter::benchmarkEnded(BenchmarkStats<> const& benchmarkStats) {
m_xml.startElement("mean")
.writeAttribute("value", static_cast<uint64_t>(benchmarkStats.mean.point.count()))
.writeAttribute("lowerBound", static_cast<uint64_t>(benchmarkStats.mean.lower_bound.count()))
.writeAttribute("upperBound", static_cast<uint64_t>(benchmarkStats.mean.upper_bound.count()))
.writeAttribute("value", benchmarkStats.mean.point.count())
.writeAttribute("lowerBound", benchmarkStats.mean.lower_bound.count())
.writeAttribute("upperBound", benchmarkStats.mean.upper_bound.count())
.writeAttribute("ci", benchmarkStats.mean.confidence_interval);
m_xml.endElement();
m_xml.startElement("standardDeviation")
Expand Down

0 comments on commit 022b61f

Please sign in to comment.