From e54c890b4b29bd7e57431f8286a3b9fa405d1ebd Mon Sep 17 00:00:00 2001 From: Peter Thorson Date: Thu, 28 Mar 2013 22:41:51 -0500 Subject: [PATCH] adds role unit test modules --- SConstruct | 2 +- test/roles/SConscript | 27 ++++++++++++++++++ test/roles/client.cpp | 66 +++++++++++++++++++++++++++++++++++++++++++ test/roles/server.cpp | 59 ++++++++++++++++++++++++++++++++++++++ 4 files changed, 153 insertions(+), 1 deletion(-) create mode 100644 test/roles/SConscript create mode 100644 test/roles/client.cpp create mode 100644 test/roles/server.cpp diff --git a/SConstruct b/SConstruct index d99cfffb76..72d8c44fe8 100644 --- a/SConstruct +++ b/SConstruct @@ -171,7 +171,7 @@ Export('polyfill_libs') ## TARGETS: # Unit tests, add test folders with SConscript files to to_test list. -to_test = ['utility','http','logger','random','processors','message_buffer','extension','transport/iostream','transport/asio','endpoint','connection'] #,'http','processors','connection' +to_test = ['utility','http','logger','random','processors','message_buffer','extension','transport/iostream','transport/asio','roles','endpoint','connection'] #,'http','processors','connection' for t in to_test: new_tests = SConscript('#/test/'+t+'/SConscript',variant_dir = testdir + t, duplicate = 0) diff --git a/test/roles/SConscript b/test/roles/SConscript new file mode 100644 index 0000000000..0eef4bbacd --- /dev/null +++ b/test/roles/SConscript @@ -0,0 +1,27 @@ +## role unit tests +## + +Import('env') +Import('env_cpp11') +Import('boostlibs') +Import('platform_libs') +Import('polyfill_libs') + +env = env.Clone () +env_cpp11 = env_cpp11.Clone () + +BOOST_LIBS = boostlibs(['unit_test_framework','system'],env) + [platform_libs] + +objs = env.Object('client_boost.o', ["client.cpp"], LIBS = BOOST_LIBS) +objs += env.Object('server_boost.o', ["server.cpp"], LIBS = BOOST_LIBS) +prgs = env.Program('test_client_boost', ["client_boost.o"], LIBS = BOOST_LIBS) +prgs += env.Program('test_server_boost', ["server_boost.o"], LIBS = BOOST_LIBS) + +if env_cpp11.has_key('WSPP_CPP11_ENABLED'): + BOOST_LIBS_CPP11 = boostlibs(['unit_test_framework'],env_cpp11) + [platform_libs] + [polyfill_libs] + objs += env_cpp11.Object('client_stl.o', ["client.cpp"], LIBS = BOOST_LIBS_CPP11) + objs += env_cpp11.Object('server_stl.o', ["server.cpp"], LIBS = BOOST_LIBS_CPP11) + prgs += env_cpp11.Program('test_client_stl', ["client_stl.o"], LIBS = BOOST_LIBS_CPP11) + prgs += env_cpp11.Program('test_server_stl', ["server_stl.o"], LIBS = BOOST_LIBS_CPP11) + +Return('prgs') diff --git a/test/roles/client.cpp b/test/roles/client.cpp new file mode 100644 index 0000000000..0b0f385fde --- /dev/null +++ b/test/roles/client.cpp @@ -0,0 +1,66 @@ +/* + * Copyright (c) 2013, Peter Thorson. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the WebSocket++ Project nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL PETER THORSON BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ +//#define BOOST_TEST_DYN_LINK +#define BOOST_TEST_MODULE client +#include + +#include + +#include +#include + +struct stub_config : public websocketpp::config::core { + typedef core::concurrency_type concurrency_type; + + typedef core::request_type request_type; + typedef core::response_type response_type; + + typedef core::message_type message_type; + typedef core::con_msg_manager_type con_msg_manager_type; + typedef core::endpoint_msg_manager_type endpoint_msg_manager_type; + + typedef core::alog_type alog_type; + typedef core::elog_type elog_type; + + typedef core::rng_type rng_type; + + typedef core::transport_type transport_type; + + typedef core::endpoint_base endpoint_base; +}; + +typedef websocketpp::client client; +typedef client::connection_ptr connection_ptr; + +BOOST_AUTO_TEST_CASE( get_connection ) { + client c; + websocketpp::lib::error_code ec; + + connection_ptr con = c.get_connection("foo", ec); + + BOOST_CHECK( ec == websocketpp::error::make_error_code(websocketpp::error::invalid_uri) ); +} diff --git a/test/roles/server.cpp b/test/roles/server.cpp new file mode 100644 index 0000000000..36715ac6c6 --- /dev/null +++ b/test/roles/server.cpp @@ -0,0 +1,59 @@ +/* + * Copyright (c) 2013, Peter Thorson. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the WebSocket++ Project nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL PETER THORSON BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ +//#define BOOST_TEST_DYN_LINK +#define BOOST_TEST_MODULE server +#include + +#include + +#include +#include + +struct stub_config : public websocketpp::config::core { + typedef core::concurrency_type concurrency_type; + + typedef core::request_type request_type; + typedef core::response_type response_type; + + typedef core::message_type message_type; + typedef core::con_msg_manager_type con_msg_manager_type; + typedef core::endpoint_msg_manager_type endpoint_msg_manager_type; + + typedef core::alog_type alog_type; + typedef core::elog_type elog_type; + + typedef core::rng_type rng_type; + + typedef core::transport_type transport_type; + + typedef core::endpoint_base endpoint_base; +}; + + +BOOST_AUTO_TEST_CASE( foo ) { + +}