1294#define FL_REQUIRE_ARRAY_EQ(actual, expected, arrsize) \
1295 do { \
1296 bool _fl_arr_match = true; \
1297 fl::size _fl_arr_mismatch_idx = 0; \
1298 { \
1299 fl::size _fl_arr_i = 0; \
1300 fl::size _fl_arr_sz = static_cast<fl::size>(arrsize); \
1301 while (_fl_arr_i < _fl_arr_sz) { \
1302 if (!((actual)[_fl_arr_i] == (expected)[_fl_arr_i])) { \
1303 _fl_arr_match = false; \
1304 _fl_arr_mismatch_idx = _fl_arr_i; \
1305 break; \
1306 } \
1307 ++_fl_arr_i; \
1308 } \
1309 } \
1310 fl::test::AssertResult _fl_arr_ar(_fl_arr_match); \
1311 _fl_arr_ar.mLocation = fl::test::SourceLocation(__FILE__, __LINE__); \
1312 fl::sstream _fl_arr_ss; \
1313 _fl_arr_ss << #actual << " == " << #expected << " (size=" << (arrsize) << ")"; \
1314 _fl_arr_ar.mExpression = _fl_arr_ss.str(); \
1315 if (!_fl_arr_match) { \
1316 fl::sstream _fl_arr_ess; \
1317 _fl_arr_ess << "Mismatch at index " << _fl_arr_mismatch_idx \
1318 << ": " << (actual)[_fl_arr_mismatch_idx] \
1319 << " != " << (expected)[_fl_arr_mismatch_idx]; \
1320 _fl_arr_ar.mExpanded = _fl_arr_ess.str(); \
1321 fl::test::TestContext::instance().reportAssert(_fl_arr_ar); \
1322 return; \
1323 } \
1324 fl::test::TestContext::instance().reportAssert(_fl_arr_ar); \
1325 } while (0)