diff options
| author | Přemysl Janouch <p.janouch@gmail.com> | 2015-12-08 23:38:02 +0100 | 
|---|---|---|
| committer | Přemysl Janouch <p.janouch@gmail.com> | 2015-12-09 21:07:01 +0100 | 
| commit | 86d7b7aed52c66d12f361a3ee8dc7a0eb419bdbc (patch) | |
| tree | 444426ca7292326bf01fe619351533b908c485a8 | |
| parent | 07201b7bdcff5612f573aee10f3caa007a9d98d5 (diff) | |
| download | xK-86d7b7aed52c66d12f361a3ee8dc7a0eb419bdbc.tar.gz xK-86d7b7aed52c66d12f361a3ee8dc7a0eb419bdbc.tar.xz xK-86d7b7aed52c66d12f361a3ee8dc7a0eb419bdbc.zip | |
degesch: add a unit test for message wrapping algo
| -rw-r--r-- | .travis.yml | 2 | ||||
| -rw-r--r-- | CMakeLists.txt | 17 | ||||
| -rw-r--r-- | degesch.c | 36 | 
3 files changed, 54 insertions, 1 deletions
| diff --git a/.travis.yml b/.travis.yml index e723324..fc34c79 100644 --- a/.travis.yml +++ b/.travis.yml @@ -34,6 +34,6 @@ before_script:  script:   - cmake .. -DCMAKE_INSTALL_PREFIX=/usr     -DWANT_READLINE=$readline -DWANT_LIBEDIT=$libedit - - make + - make all test   - cpack -G DEB   - ../test diff --git a/CMakeLists.txt b/CMakeLists.txt index c4c5db9..296a0f4 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -122,6 +122,23 @@ target_link_libraries (degesch ${project_libraries})  add_executable (kike kike.c kike-replies.c ${common_sources} ${common_headers})  target_link_libraries (kike ${project_libraries}) +# Tests +function (make_tests_for target_name) +	get_target_property (sources   ${target_name} SOURCES) +	get_target_property (libraries ${target_name} LINK_LIBRARIES) + +	set (test test-${target_name}) +	add_executable (${test} ${sources}) +	target_link_libraries (${test} ${libraries}) +	add_test (NAME ${test} COMMAND ${test}) +	set_target_properties (${test} PROPERTIES COMPILE_DEFINITIONS TESTING) +endfunction (make_tests_for) + +include (CTest) +if (BUILD_TESTING) +	make_tests_for (degesch) +endif (BUILD_TESTING) +  # Various clang-based diagnostics, loads of fake positives and spam  file (GLOB clang_tidy_sources *.c)  set (clang_tidy_checks misc-* readability-* @@ -11197,6 +11197,42 @@ init_poller_events (struct app_context *ctx)  	ctx->autoaway_tmr.user_data = ctx;  } +// --- Tests ------------------------------------------------------------------- + +// The application is quite monolithic and can only be partially unit-tested + +#ifdef TESTING + +static void +test_wrapping (void) +{ +	struct str_vector v; +	str_vector_init (&v); + +	static const char *message = " foo bar foobar fóóbárbáz"; +	static const char *split[] = +		{ " foo", "bar", "foob", "ar", "fó", "ób", "árb", "áz" }; + +	hard_assert (wrap_message (message, 4, &v, NULL)); +	hard_assert (v.len == N_ELEMENTS (split)); +	for (size_t i = 0; i < N_ELEMENTS (split); i++) +		hard_assert (!strcmp (v.vector[i], split[i])); + +	str_vector_free (&v); +} + +int +main (int argc, char *argv[]) +{ +	struct test test; +	test_init (&test, argc, argv); +	test_add_simple (&test, "/wrapping", NULL, test_wrapping); +	return test_run (&test); +} + +#define main main_shadowed +#endif // TESTING +  // --- Main program ------------------------------------------------------------  static const char *g_logo[] = | 
