45 std::exit(m_failures != 0);
47 #ifndef OIIO_UNIT_TEST_QUIET_SUCCESS
63 operator int() const noexcept {
return m_failures; }
70 template<
typename X,
typename Y>
87 operator<<(std::ostream& out, const std::vector<T>&
v)
93 static OIIO::pvt::UnitTestFailureCounter unit_test_failures;
101 #define OIIO_CHECK_ASSERT(x) \
103 : ((std::cout << OIIO::Sysutil::Term(std::cout).ansi("red,bold") \
104 << __FILE__ << ":" << __LINE__ << ":\n" \
106 << OIIO::Sysutil::Term(std::cout).ansi("normal") << #x \
108 (void)++unit_test_failures))
110 #define OIIO_CHECK_EQUAL(x, y) \
113 : ((std::cout << OIIO::Sysutil::Term(std::cout).ansi("red,bold") \
114 << __FILE__ << ":" << __LINE__ << ":\n" \
116 << OIIO::Sysutil::Term(std::cout).ansi("normal") << #x \
117 << " == " << #y << "\n" \
118 << "\tvalues were '" << (x) << "' and '" << (y) \
120 (void)++unit_test_failures))
122 #define OIIO_CHECK_FALSE(x) OIIO_CHECK_EQUAL(x, false)
124 #define OIIO_CHECK_EQUAL_THRESH(x, y, eps) \
125 ((std::abs((x) - (y)) <= eps) \
127 : ((std::cout << OIIO::Sysutil::Term(std::cout).ansi("red,bold") \
128 << __FILE__ << ":" << __LINE__ << ":\n" \
130 << OIIO::Sysutil::Term(std::cout).ansi("normal") << #x \
131 << " == " << #y << "\n" \
132 << "\tvalues were '" << (x) << "' and '" << (y) << "'" \
133 << ", diff was " << std::abs((x) - (y)) << "\n"), \
134 (void)++unit_test_failures))
136 #define OIIO_CHECK_EQUAL_THRESH_REL(x, y, epsabs, epsrel) \
137 ((std::abs((x) - (y)) <= (epsabs + epsrel * std::max(abs(x), abs(y)))) \
139 : ((std::cout << OIIO::Sysutil::Term(std::cout).ansi("red,bold") \
140 << __FILE__ << ":" << __LINE__ << ":\n" \
142 << OIIO::Sysutil::Term(std::cout).ansi("normal") << #x \
143 << " == " << #y << "\n" \
144 << "\tvalues were '" << (x) << "' and '" << (y) << "'" \
145 << ", diff was " << std::abs((x) - (y)) << "\n"), \
146 (void)++unit_test_failures))
148 #define OIIO_CHECK_EQUAL_APPROX(x, y) \
149 (OIIO::pvt::equal_approx(x, y) \
151 : ((std::cout << OIIO::Sysutil::Term(std::cout).ansi("red,bold") \
152 << __FILE__ << ":" << __LINE__ << ":\n" \
154 << OIIO::Sysutil::Term(std::cout).ansi("normal") << #x \
155 << " == " << #y << "\n" \
156 << "\tvalues were '" << (x) << "' and '" << (y) << "'" \
157 << ", diff was " << ((x) - (y)) << "\n"), \
158 (void)++unit_test_failures))
160 #define OIIO_CHECK_NE(x, y) \
163 : ((std::cout << OIIO::Sysutil::Term(std::cout).ansi("red,bold") \
164 << __FILE__ << ":" << __LINE__ << ":\n" \
166 << OIIO::Sysutil::Term(std::cout).ansi("normal") << #x \
167 << " != " << #y << "\n" \
168 << "\tvalues were '" << (x) << "' and '" << (y) \
170 (void)++unit_test_failures))
172 #define OIIO_CHECK_LT(x, y) \
175 : ((std::cout << OIIO::Sysutil::Term(std::cout).ansi("red,bold") \
176 << __FILE__ << ":" << __LINE__ << ":\n" \
178 << OIIO::Sysutil::Term(std::cout).ansi("normal") << #x \
179 << " < " << #y << "\n" \
180 << "\tvalues were '" << (x) << "' and '" << (y) \
182 (void)++unit_test_failures))
184 #define OIIO_CHECK_GT(x, y) \
187 : ((std::cout << OIIO::Sysutil::Term(std::cout).ansi("red,bold") \
188 << __FILE__ << ":" << __LINE__ << ":\n" \
190 << OIIO::Sysutil::Term(std::cout).ansi("normal") << #x \
191 << " > " << #y << "\n" \
192 << "\tvalues were '" << (x) << "' and '" << (y) \
194 (void)++unit_test_failures))
196 #define OIIO_CHECK_LE(x, y) \
199 : ((std::cout << OIIO::Sysutil::Term(std::cout).ansi("red,bold") \
200 << __FILE__ << ":" << __LINE__ << ":\n" \
202 << OIIO::Sysutil::Term(std::cout).ansi("normal") << #x \
203 << " <= " << #y << "\n" \
204 << "\tvalues were '" << (x) << "' and '" << (y) \
206 (void)++unit_test_failures))
208 #define OIIO_CHECK_GE(x, y) \
211 : ((std::cout << OIIO::Sysutil::Term(std::cout).ansi("red,bold") \
212 << __FILE__ << ":" << __LINE__ << ":\n" \
214 << OIIO::Sysutil::Term(std::cout).ansi("normal") << #x \
215 << " >= " << #y << "\n" \
216 << "\tvalues were '" << (x) << "' and '" << (y) \
218 (void)++unit_test_failures))
222 #define OIIO_CHECK_SIMD_EQUAL(x, y) \
225 : ((std::cout << OIIO::Sysutil::Term(std::cout).ansi("red,bold") \
226 << __FILE__ << ":" << __LINE__ << ":\n" \
228 << OIIO::Sysutil::Term(std::cout).ansi("normal") << #x \
229 << " == " << #y << "\n" \
230 << "\tvalues were '" << (x) << "' and '" << (y) \
232 (void)++unit_test_failures))
234 #define OIIO_CHECK_SIMD_EQUAL_THRESH(x, y, eps) \
235 (all(abs((x) - (y)) <= (eps)) \
237 : ((std::cout << OIIO::Sysutil::Term(std::cout).ansi("red,bold") \
238 << __FILE__ << ":" << __LINE__ << ":\n" \
240 << OIIO::Sysutil::Term(std::cout).ansi("normal") << #x \
241 << " == " << #y << "\n" \
242 << "\tvalues were '" << (x) << "' and '" << (y) \
244 (void)++unit_test_failures))
255 #define OIIO_CHECK_IMAGEBUF_STATUS(buf, x) \
256 ((x && !buf.has_error()) \
258 : ((std::cout << OIIO::Sysutil::Term(std::cout).ansi("red,bold") \
259 << __FILE__ << ":" << __LINE__ << ":\n" \
261 << OIIO::Sysutil::Term(std::cout).ansi("normal") << #x \
262 << ": " << buf.geterror() << "\n"), \
263 (void)++unit_test_failures))
vint4 max(const vint4 &a, const vint4 &b)
typedef int(APIENTRYP RE_PFNGLXSWAPINTERVALSGIPROC)(int)
String-related utilities, all in namespace Strutil.
SIM_API const UT_StringHolder all
vint4 abs(const vint4 &a)
std::string ansi(string_view command) const
Platform-independent utilities for various OS, hardware, and system resource functionality, all in namespace Sysutil.
int operator++(int) noexcept
~UnitTestFailureCounter()
const UnitTestFailureCounter & operator++() noexcept
UnitTestFailureCounter() noexcept
float max(float x, float y)
IMATH_INTERNAL_NAMESPACE_HEADER_ENTER IMATH_HOSTDEVICE constexpr T abs(T a) IMATH_NOEXCEPT
#define OIIO_NAMESPACE_END
Classes for SIMD processing.
UnitTestFailureCounter operator+=(int i) noexcept
#define OIIO_NAMESPACE_BEGIN
bool equal_approx(const X &x, const Y &y)