| Line |
Branch |
Exec |
Source |
| 1 |
|
|
#pragma once |
| 2 |
|
|
|
| 3 |
|
|
#include <iostream> |
| 4 |
|
|
#include <sstream> |
| 5 |
|
|
#include <streambuf> |
| 6 |
|
|
#include <string> |
| 7 |
|
|
|
| 8 |
|
|
namespace utils { |
| 9 |
|
|
// RedirectCout is a utility class that redirects std::cout to a stringstream. |
| 10 |
|
|
class RedirectCout { |
| 11 |
|
|
public: |
| 12 |
|
8 |
RedirectCout() : oldBuffer_(std::cout.rdbuf()) { |
| 13 |
1/2
✓ Branch 2 taken 8 times.
✗ Branch 3 not taken.
|
8 |
std::cout.rdbuf(buffer_.rdbuf()); |
| 14 |
|
8 |
} |
| 15 |
|
8 |
~RedirectCout() { std::cout.rdbuf(oldBuffer_); } |
| 16 |
|
|
RedirectCout(const RedirectCout&) = delete; // Disable copy constructor |
| 17 |
|
|
RedirectCout& operator=(const RedirectCout&) = |
| 18 |
|
|
delete; // Disable copy assignment |
| 19 |
|
|
RedirectCout(RedirectCout&&) = delete; // Disable move constructor |
| 20 |
|
|
RedirectCout& operator=(RedirectCout&&) = delete; // Disable move assignment |
| 21 |
|
|
|
| 22 |
|
11 |
std::string str() const { return buffer_.str(); } |
| 23 |
2/4
✓ Branch 1 taken 9 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 9 times.
✗ Branch 5 not taken.
|
27 |
void clear() { buffer_.str(""); } |
| 24 |
|
|
|
| 25 |
|
|
private: |
| 26 |
|
|
std::streambuf* oldBuffer_; |
| 27 |
|
|
std::stringstream buffer_; |
| 28 |
|
|
}; |
| 29 |
|
|
} // namespace utils |
| 30 |
|
|
|