/// /// \file src/test/Report.cpp /// \author Kyle Isom /// \date 2017-06-07 /// /// \brief Defines a Report structure that contains information about /// the results of unit tests. /// /// Copyright 2017 K. Isom /// /// Permission to use, copy, modify, and/or distribute this software for /// any purpose with or without fee is hereby granted, provided that /// the above copyright notice and this permission notice appear in all /// copies. /// /// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL /// WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED /// WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE /// AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL /// DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA /// OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER /// TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR /// PERFORMANCE OF THIS SOFTWARE. #include #include #include #include namespace sctest { Report::Report() { this->Reset(0); } size_t Report::Failing() const { return this->failing; } size_t Report::Passing() const { return this->passed; } size_t Report::Total() const { return this->total; } void Report::Failed() { this->failing++; } void Report::Passed() { this->passed++; } void Report::AddTest(size_t testCount) { this->total += testCount; } void Report::Reset(size_t testCount) { auto now = std::chrono::steady_clock::now(); this->total = testCount; this->passed = 0; this->failing = 0; this->Start(); this->end = now; } void Report::Start() { this->start = std::chrono::steady_clock::now(); } void Report::End() { this->end = std::chrono::steady_clock::now(); } std::chrono::duration Report::Elapsed() const { return this->end - this->start; } std::ostream& operator<<(std::ostream &os, const Report &report) { auto elapsed = report.Elapsed(); os << report.Passing() << "/" << report.Total() << " tests passed in " << std::setw(3) << elapsed.count() << "ms"; auto failed = report.Failing(); if (failed > 0) { os << " (" << failed << " tests failed)"; } return os; } } // end namespace sctest