-
Notifications
You must be signed in to change notification settings - Fork 4
Expand file tree
/
Copy pathRequire.h
More file actions
29 lines (25 loc) · 848 Bytes
/
Require.h
File metadata and controls
29 lines (25 loc) · 848 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#pragma once
#include <sstream>
#include <stdexcept>
template <typename T, typename U>
void require_equal(T expected, U actual)
{
if (expected != actual)
{
std::ostringstream message;
message << "expected " << expected << ", got " << actual;
throw std::runtime_error(message.str().c_str());
}
}
template <typename T, typename U>
void require_equal(char const *file, unsigned line, T expected, U actual)
{
if (expected != actual)
{
std::ostringstream message;
message << file << '(' << line << "): error: expected " << expected << ", got " << actual;
message << file << '(' << line << "): error: expected != got\n";
throw std::runtime_error(message.str().c_str());
}
}
#define REQUIRE_EQUAL(expected_, actual_) require_equal(__FILE__, __LINE__, expected_, actual_)