test-common.h revision 0db47f171fc79209f95703f8f928c8487df15fcf
a8c5a86d183db25a57bf193c06b41e092ec2e151Timo Sirainen#ifndef TEST_COMMON_H
0cb2e8eb55e70f8ebe1e8349bdf49e4cbe5d8834Timo Sirainen#define TEST_COMMON_H
0cb2e8eb55e70f8ebe1e8349bdf49e4cbe5d8834Timo Sirainen
8aacc9e7c84f8376822823ec98c2f551d4919b2eTimo Sirainenstruct istream *test_istream_create(const char *data);
16f816d3f3c32ae3351834253f52ddd0212bcbf3Timo Sirainenstruct istream *test_istream_create_data(const void *data, size_t size);
0cb2e8eb55e70f8ebe1e8349bdf49e4cbe5d8834Timo Sirainenvoid test_istream_set_size(struct istream *input, uoff_t size);
a2f250a332dfc1e6cd4ffd196c621eb9dbf7b8a1Timo Sirainenvoid test_istream_set_allow_eof(struct istream *input, bool allow);
0cb2e8eb55e70f8ebe1e8349bdf49e4cbe5d8834Timo Sirainenvoid test_istream_set_max_buffer_size(struct istream *input, size_t size);
0cb2e8eb55e70f8ebe1e8349bdf49e4cbe5d8834Timo Sirainen
0cb2e8eb55e70f8ebe1e8349bdf49e4cbe5d8834Timo Sirainenvoid test_begin(const char *name);
463e82bdf0e990f4f2252d2b53ea23a5abe5883cTimo Sirainen#define test_assert(code) STMT_START { \
0cb2e8eb55e70f8ebe1e8349bdf49e4cbe5d8834Timo Sirainen if (!(code)) test_assert_failed(#code, __FILE__, __LINE__); \
d41573018e85896ec836d897fd554e87126147f5Timo Sirainen } STMT_END
d41573018e85896ec836d897fd554e87126147f5Timo Sirainen/* Additional parameter may be int or unsigned int, to indicate which of
d41573018e85896ec836d897fd554e87126147f5Timo Sirainen * a barrage of tests have failed (such as in a loop).
d41573018e85896ec836d897fd554e87126147f5Timo Sirainen */
945631faab2bf1aed8d95a1fd0c317a9ce153725Timo Sirainen#define test_assert_idx(code, i) STMT_START { \
945631faab2bf1aed8d95a1fd0c317a9ce153725Timo Sirainen if (!(code)) test_assert_failed_idx(#code, __FILE__, __LINE__, i); \
2c677e9d339bc91d5b54376ba2986f71476c06abTimo Sirainen } STMT_END
945631faab2bf1aed8d95a1fd0c317a9ce153725Timo Sirainenvoid test_assert_failed(const char *code, const char *file, unsigned int line);
945631faab2bf1aed8d95a1fd0c317a9ce153725Timo Sirainenvoid test_assert_failed_idx(const char *code, const char *file, unsigned int line, long long i);
945631faab2bf1aed8d95a1fd0c317a9ce153725Timo Sirainenbool test_has_failed(void);
945631faab2bf1aed8d95a1fd0c317a9ce153725Timo Sirainenvoid test_end(void);
945631faab2bf1aed8d95a1fd0c317a9ce153725Timo Sirainen
945631faab2bf1aed8d95a1fd0c317a9ce153725Timo Sirainenvoid test_out(const char *name, bool success);
20c892309312df8f4f73cfcaf8acd2ededda8b05Timo Sirainenvoid test_out_quiet(const char *name, bool success); /* only prints failures */
20c892309312df8f4f73cfcaf8acd2ededda8b05Timo Sirainenvoid test_out_reason(const char *name, bool success, const char *reason)
20c892309312df8f4f73cfcaf8acd2ededda8b05Timo Sirainen ATTR_NULL(3);
20c892309312df8f4f73cfcaf8acd2ededda8b05Timo Sirainen
945631faab2bf1aed8d95a1fd0c317a9ce153725Timo Sirainenint test_run(void (*test_functions[])(void));
f81a4d2002da0db33d11ca694d3a91b3ee2a0fdbTimo Sirainen
f81a4d2002da0db33d11ca694d3a91b3ee2a0fdbTimo Sirainen#endif
f81a4d2002da0db33d11ca694d3a91b3ee2a0fdbTimo Sirainen