From 14b201232832ea05d630a5a25b05b940ea1b5d0d Mon Sep 17 00:00:00 2001 From: Peter Thorson Date: Sat, 2 Mar 2013 20:47:30 -0600 Subject: [PATCH] Adds RNG unit tests --- SConstruct | 2 +- test/random/SConscript | 27 ++++++++++++++++++++ test/random/none.cpp | 40 +++++++++++++++++++++++++++++ test/random/random_device.cpp | 48 +++++++++++++++++++++++++++++++++++ 4 files changed, 116 insertions(+), 1 deletion(-) create mode 100644 test/random/SConscript create mode 100644 test/random/none.cpp create mode 100644 test/random/random_device.cpp diff --git a/SConstruct b/SConstruct index 3a91ec263a..d68749a6d2 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','processors','message_buffer','extension','transport/asio','endpoint','connection'] #,'http','processors','connection' +to_test = ['utility','http','logger','random','processors','message_buffer','extension','transport/asio','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/random/SConscript b/test/random/SConscript new file mode 100644 index 0000000000..7c2aa36a1a --- /dev/null +++ b/test/random/SConscript @@ -0,0 +1,27 @@ +## random number generation 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','random'],env) + [platform_libs] + +objs = env.Object('random_none_boost.o', ["none.cpp"], LIBS = BOOST_LIBS) +objs += env.Object('random_device_boost.o', ["random_device.cpp"], LIBS = BOOST_LIBS) +prgs = env.Program('test_random_none_boost', ["random_none_boost.o"], LIBS = BOOST_LIBS) +prgs += env.Program('test_random_device_boost', ["random_device_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('random_none_stl.o', ["none.cpp"], LIBS = BOOST_LIBS_CPP11) + objs += env_cpp11.Object('random_device_stl.o', ["random_device.cpp"], LIBS = BOOST_LIBS_CPP11) + prgs += env_cpp11.Program('test_random_none_stl', ["random_none_stl.o"], LIBS = BOOST_LIBS_CPP11) + prgs += env_cpp11.Program('test_random_device_stl', ["random_device_stl.o"], LIBS = BOOST_LIBS_CPP11) + +Return('prgs') diff --git a/test/random/none.cpp b/test/random/none.cpp new file mode 100644 index 0000000000..83a56f7bc1 --- /dev/null +++ b/test/random/none.cpp @@ -0,0 +1,40 @@ +/* + * 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 random_none +#include + +#include +#include + +BOOST_AUTO_TEST_CASE( does_it_compile ) { + websocketpp::random::none::int_generator rng; + + int32_t foo = rng(); + + BOOST_CHECK( foo == 0 ); +} \ No newline at end of file diff --git a/test/random/random_device.cpp b/test/random/random_device.cpp new file mode 100644 index 0000000000..136dbec4c9 --- /dev/null +++ b/test/random/random_device.cpp @@ -0,0 +1,48 @@ +/* + * 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 random_device +#include + +#include +#include +#include + +BOOST_AUTO_TEST_CASE( compiles ) { + websocketpp::random::random_device::int_generator rng; + + bool e = false; + + try { + int32_t foo = rng(); + std::cout << foo << std::endl; + } catch (...) { + e = true; + } + + BOOST_CHECK( e == false ); +}