<HTML><BODY><div>Hi, Sergey!</div><div>Thanks for the patch!</div><div>LGTM.</div><div> </div><blockquote style="border-left:1px solid #0857A6; margin:10px; padding:0 0 0 10px;"><div><br>diff --git a/test/tarantool-c-tests/test.h b/test/tarantool-c-tests/test.h<br>new file mode 100644<br>index 00000000..28df9daf<br>--- /dev/null<br>+++ b/test/tarantool-c-tests/test.h<br>@@ -0,0 +1,217 @@</div></blockquote><div>Looks so much better now!</div><blockquote style="border-left:1px solid #0857A6; margin:10px; padding:0 0 0 10px;">+#define LOCATION_FMT "location:\t%s:%d\n"<br>+#define ASSERT_NAME_FMT(name) "failed_assertion:\t" #name "\n"<br>+#define ASSERT_EQUAL_FMT(name_type, type_fmt) \<br>+ LOCATION_FMT \<br>+ ASSERT_NAME_FMT(assert_ ## name_type ## _equal) \<br>+ "got: " type_fmt "\n" \<br>+ "expected: " type_fmt "\n"<br>+<br>+#define ASSERT_NOT_EQUAL_FMT(type_fmt) \<br>+ LOCATION_FMT \<br>+ ASSERT_NAME_FMT(assert_ ## name_type ## _not_equal) \<br>+ "got: " type_fmt "\n" \<br>+ "unexpected: " type_fmt "\n"<br>+<br>+#define assert_true(cond) do { \<br>+ if (!(cond)) { \<br>+ test_save_diag_data(LOCATION_FMT \<br>+ "condition_failed:\t'" #cond "'\n", \<br>+ __FILE__, __LINE__); \<br>+ _test_exit(TEST_LJMP_EXIT_FAILURE); \<br>+ } \<br>+} while (0)<br>+<br>+#define assert_false(cond) assert_true(!(cond))<br>+<br>+#define assert_general(cond, fmt, ...) do { \<br>+ if (!(cond)) { \<br>+ test_save_diag_data(fmt, __VA_ARGS__); \<br>+ _test_exit(TEST_LJMP_EXIT_FAILURE); \<br>+ } \<br>+} while (0)<br>+<br>+#define assert_ptr_equal(got, expected) do { \<br>+ assert_general((got) == (expected), \<br>+ ASSERT_EQUAL_FMT(ptr, "%p"), \<br>+ __FILE__, __LINE__, (got), (expected) \<br>+ ); \<br>+} while (0)<br>+<br>+#define assert_ptr_not_equal(got, unexpected) do { \<br>+ assert_general((got) != (unexpected), \<br>+ ASSERT_NOT_EQUAL_FMT(ptr, "%p"), \<br>+ __FILE__, __LINE__, (got), (unexpected) \<br>+ ); \<br>+} while (0)<br>+<br>+<br>+#define assert_int_equal(got, expected) do { \<br>+ assert_general((got) == (expected), \<br>+ ASSERT_EQUAL_FMT(int, "%d"), \<br>+ __FILE__, __LINE__, (got), (expected) \<br>+ ); \<br>+} while (0)<br>+<br>+#define assert_int_not_equal(got, unexpected) do { \<br>+ assert_general((got) != (unexpected), \<br>+ ASSERT_NOT_EQUAL_FMT(int, "%d"), \<br>+ __FILE__, __LINE__, (got), (unexpected) \<br>+ ); \<br>+} while (0)<br>+<br>+#define assert_sizet_equal(got, expected) do { \<br>+ assert_general((got) == (expected), \<br>+ ASSERT_EQUAL_FMT(sizet, "%lu"), \<br>+ __FILE__, __LINE__, (got), (expected) \<br>+ ); \<br>+} while (0)<br>+<br>+#define assert_sizet_not_equal(got, unexpected) do { \<br>+ assert_general((got) != (unexpected), \<br>+ ASSERT_NOT_EQUAL_FMT(sizet, "%lu"), \<br>+ __FILE__, __LINE__, (got), (unexpected) \<br>+ ); \<br>+} while (0)<br>+<br>+/* Check that doubles are __exactly__ the same. */<br>+#define assert_double_equal(got, expected) do { \<br>+ assert_general((got) == (expected), \<br>+ ASSERT_EQUAL_FMT(double, "%lf"), \<br>+ __FILE__, __LINE__, (got), (expected) \<br>+ ); \<br>+} while (0)<br>+<br>+/* Check that doubles are not __exactly__ the same. */<br>+#define assert_double_not_equal(got, unexpected) do { \<br>+ assert_general((got) != (unexpected), \<br>+ ASSERT_NOT_EQUAL_FMT(double, "%lf"), \<br>+ __FILE__, __LINE__, (got), (unexpected) \<br>+ ); \<br>+} while (0)<br>+<br>+#endif /* TEST_H */<br>--<br>2.34.1</blockquote><div><div>--<br>Best regards,</div><div>Maxim Kokryashkin</div></div><div> </div></BODY></HTML>