diff options
| author | Garrett D'Amore <garrett@damore.org> | 2017-09-26 10:17:16 -0700 |
|---|---|---|
| committer | Garrett D'Amore <garrett@damore.org> | 2017-09-26 12:45:47 -0700 |
| commit | 52118e4dcbc105d2b83c774e001926aceb978488 (patch) | |
| tree | 57c65eeb732be3dc7c442f99be1aa8a0e463d886 /tests | |
| parent | 97824a96b06f294476c6e1cabb3216282e86a308 (diff) | |
| download | nng-52118e4dcbc105d2b83c774e001926aceb978488.tar.gz nng-52118e4dcbc105d2b83c774e001926aceb978488.tar.bz2 nng-52118e4dcbc105d2b83c774e001926aceb978488.zip | |
Add C++ test program, proving C++ consumers work.
We fixed up the coverage flags for GNU C, but are not going to run
the C++ tests when doing coverage (they fail linking gcov for reasons
unknown.)
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/CMakeLists.txt | 25 | ||||
| -rw-r--r-- | tests/cplusplus_pair.cc | 66 |
2 files changed, 91 insertions, 0 deletions
diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index c6f6872c..0c0973b2 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -76,9 +76,32 @@ if (NNG_TESTS) math (EXPR TEST_PORT "${TEST_PORT}+10") endmacro (add_nng_compat_test) + macro (add_nng_cpp_test NAME TIMEOUT) + if (NOT NNG_ENABLE_COVERAGE) + enable_language (CXX) + list (APPEND all_tests ${NAME}) + add_executable (${NAME} ${NAME}.cc) + target_link_libraries (${NAME} ${PROJECT_NAME}_static) + target_link_libraries (${NAME} ${NNG_REQUIRED_LIBRARIES}) + target_compile_definitions(${NAME} PUBLIC -DNNG_STATIC_LIB) + if (CMAKE_THREAD_LIBS_INIT) + target_link_libraries (${NAME} "${CMAKE_THREAD_LIBS_INIT}") + endif() + + add_test (NAME ${NAME} COMMAND ${NAME} ${TEST_PORT}) + set_tests_properties (${NAME} PROPERTIES TIMEOUT ${TIMEOUT}) + math (EXPR TEST_PORT "${TEST_PORT}+10") + endif() + endmacro (add_nng_cpp_test) + + else () macro (add_nng_test NAME TIMEOUT) endmacro (add_nng_test) + macro (add_nng_compat_test NAME TIMEOUT) + endmacro (add_nng_compat_test) + macro (add_nng_cpp_test NAME TIMEOUT) + endmacro (add_nng_cpp_test) endif () add_nng_test(bus 5) @@ -120,3 +143,5 @@ add_nng_compat_test(compat_survey 5) add_nng_compat_test(compat_reqttl 5) add_nng_compat_test(compat_shutdown 5) +# c++ tests +add_nng_cpp_test(cplusplus_pair 5) diff --git a/tests/cplusplus_pair.cc b/tests/cplusplus_pair.cc new file mode 100644 index 00000000..54a99737 --- /dev/null +++ b/tests/cplusplus_pair.cc @@ -0,0 +1,66 @@ +// +// Copyright 2017 Garrett D'Amore <garrett@damore.org> +// +// This software is supplied under the terms of the MIT License, a +// copy of which should be located in the distribution where this +// file was obtained (LICENSE.txt). A copy of the license may also be +// found online at https://opensource.org/licenses/MIT. +// + +#include "nng.h" + +#include <cstring> + +#define SOCKET_ADDRESS "inproc://c++" + +int +main(int argc, char **argv) +{ + nng_socket s1; + nng_socket s2; + int rv; + size_t sz; + char buf[8]; + + if ((rv = nng_pair0_open(&s1)) != 0) { + throw nng_strerror(rv); + } + if ((rv = nng_pair0_open(&s2)) != 0) { + throw nng_strerror(rv); + } + if ((rv = nng_listen(s1, SOCKET_ADDRESS, NULL, 0)) != 0) { + throw nng_strerror(rv); + } + if ((rv = nng_dial(s2, SOCKET_ADDRESS, NULL, 0)) != 0) { + throw nng_strerror(rv); + } + if ((rv = nng_send(s2, (void *)"ABC", 4, 0)) != 0) { + throw nng_strerror(rv); + } + sz = sizeof (buf); + if ((rv = nng_recv(s1, buf, &sz, 0)) != 0) { + throw nng_strerror(rv); + } + if ((sz != 4) || (memcmp(buf, "ABC", 4) != 0)) { + throw "Contents did not match"; + } + if ((rv = nng_send(s1, (void *)"DEF", 4, 0)) != 0) { + throw nng_strerror(rv); + } + sz = sizeof (buf); + if ((rv = nng_recv(s2, buf, &sz, 0)) != 0) { + throw nng_strerror(rv); + } + if ((sz != 4) || (memcmp(buf, "DEF", 4) != 0)) { + throw "Contents did not match"; + } + if ((rv = nng_close(s1)) != 0) { + throw nng_strerror(rv); + } + if ((rv = nng_close(s2)) != 0) { + throw nng_strerror(rv); + } + + return (0); +} + |
