Refactor extras:

A new directory extras/ is added, and code not part of the official
public Beast interface is moved there.
This commit is contained in:
Vinnie Falco
2016-05-06 19:14:17 -04:00
parent 133e7a3b16
commit b14434456c
48 changed files with 136 additions and 280 deletions

View File

@@ -40,14 +40,17 @@ macro(GroupSources curdir)
endforeach() endforeach()
endmacro() endmacro()
include_directories (extras)
include_directories (include) include_directories (include)
file(GLOB_RECURSE BEAST_INCLUDES file(GLOB_RECURSE BEAST_INCLUDES
${PROJECT_SOURCE_DIR}/include/beast/*.hpp ${PROJECT_SOURCE_DIR}/include/beast/*.hpp
${PROJECT_SOURCE_DIR}/include/beast/*.ipp ${PROJECT_SOURCE_DIR}/include/beast/*.ipp
${PROJECT_SOURCE_DIR}/extras/beast/*.hpp
${PROJECT_SOURCE_DIR}/extras/beast/*.ipp
) )
add_subdirectory (test)
add_subdirectory (examples) add_subdirectory (examples)
add_subdirectory (test)
#enable_testing() #enable_testing()

View File

@@ -64,6 +64,7 @@ variant asan
project beast project beast
: requirements : requirements
<include>. <include>.
<include>./extras
<include>./include <include>./include
#<use>/boost//headers #<use>/boost//headers
<library>/boost/system//boost_system <library>/boost/system//boost_system

3
extras/README.md Normal file
View File

@@ -0,0 +1,3 @@
# Extras
These are not part of the official public Beast interface but they are used by the tests and some third party programs.

View File

@@ -5,18 +5,16 @@
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
// //
#ifndef BEAST_DETAIL_STREAM_ABSTRACT_OSTREAM_HPP #ifndef BEAST_UNIT_TEST_ABSTRACT_OSTREAM_HPP
#define BEAST_DETAIL_STREAM_ABSTRACT_OSTREAM_HPP #define BEAST_UNIT_TEST_ABSTRACT_OSTREAM_HPP
#include <beast/detail/stream/basic_abstract_ostream.hpp> #include <beast/unit_test/basic_abstract_ostream.hpp>
namespace beast { namespace beast {
namespace detail {
/** An abstract ostream for `char`. */ /** An abstract ostream for `char`. */
using abstract_ostream = basic_abstract_ostream <char>; using abstract_ostream = basic_abstract_ostream <char>;
} // detail
} // beast } // beast
#endif #endif

View File

@@ -5,17 +5,14 @@
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
// //
#ifndef BEAST_DETAIL_UNIT_TEST_AMOUNT_HPP #ifndef BEAST_UNIT_TEST_AMOUNT_HPP
#define BEAST_DETAIL_UNIT_TEST_AMOUNT_HPP #define BEAST_UNIT_TEST_AMOUNT_HPP
#include <cstddef> #include <cstddef>
#include <ostream> #include <ostream>
#include <string> #include <string>
namespace beast { namespace beast {
namespace detail {
inline
namespace unit_test { namespace unit_test {
/** Utility for producing nicely composed output of amounts with units. */ /** Utility for producing nicely composed output of amounts with units. */
@@ -53,7 +50,6 @@ operator<< (std::ostream& s, amount const& t)
} }
} // unit_test } // unit_test
} // detail
} // beast } // beast
#endif #endif

View File

@@ -5,16 +5,15 @@
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
// //
#ifndef BEAST_DETAIL_STREAM_BASIC_ABSTRACT_OSTREAM_HPP #ifndef BEAST_UNIT_TEST_BASIC_ABSTRACT_OSTREAM_HPP
#define BEAST_DETAIL_STREAM_BASIC_ABSTRACT_OSTREAM_HPP #define BEAST_UNIT_TEST_BASIC_ABSTRACT_OSTREAM_HPP
#include <beast/detail/stream/basic_scoped_ostream.hpp> #include <beast/unit_test/basic_scoped_ostream.hpp>
#include <functional> #include <functional>
#include <memory> #include <memory>
#include <sstream> #include <sstream>
namespace beast { namespace beast {
namespace detail {
/** Abstraction for an output stream similar to std::basic_ostream. */ /** Abstraction for an output stream similar to std::basic_ostream. */
template < template <
@@ -81,7 +80,6 @@ public:
} }
}; };
} // detail
} // beast } // beast
#endif #endif

View File

@@ -5,8 +5,8 @@
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
// //
#ifndef BEAST_DETAIL_STREAM_BASIC_SCOPED_OSTREAM_HPP #ifndef BEAST_UNIT_TEST_BASIC_SCOPED_OSTREAM_HPP
#define BEAST_DETAIL_STREAM_BASIC_SCOPED_OSTREAM_HPP #define BEAST_UNIT_TEST_BASIC_SCOPED_OSTREAM_HPP
#include <functional> #include <functional>
#include <memory> #include <memory>
@@ -24,7 +24,6 @@
#endif #endif
namespace beast { namespace beast {
namespace detail {
template < template <
class CharT, class CharT,
@@ -132,7 +131,6 @@ public:
} }
}; };
} // detail
} // beast } // beast
#endif #endif

View File

@@ -5,14 +5,13 @@
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
// //
#ifndef BEAST_DETAIL_STREAM_BASIC_STD_OSTREAM_H_INCLUDED #ifndef BEAST_UNIT_TEST_BASIC_STD_OSTREAM_HPP
#define BEAST_DETAIL_STREAM_BASIC_STD_OSTREAM_H_INCLUDED #define BEAST_UNIT_TEST_BASIC_STD_OSTREAM_HPP
#include <beast/detail/stream/basic_abstract_ostream.hpp> #include <beast/unit_test/basic_abstract_ostream.hpp>
#include <ostream> #include <ostream>
namespace beast { namespace beast {
namespace detail {
/** Wraps an existing std::basic_ostream as an abstract_ostream. */ /** Wraps an existing std::basic_ostream as an abstract_ostream. */
template < template <
@@ -56,7 +55,6 @@ make_std_ostream (std::basic_ostream <CharT, Traits>& stream)
return basic_std_ostream <CharT, Traits> (stream); return basic_std_ostream <CharT, Traits> (stream);
} }
} // detail
} // beast } // beast
#endif #endif

View File

@@ -5,10 +5,10 @@
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
// //
#ifndef BEAST_DETAIL_STREAM_DEBUG_OSTREAM_HPP #ifndef BEAST_UNIT_TEST_DEBUG_OSTREAM_HPP
#define BEAST_DETAIL_STREAM_DEBUG_OSTREAM_HPP #define BEAST_UNIT_TEST_DEBUG_OSTREAM_HPP
#include <beast/detail/stream/abstract_ostream.hpp> #include <beast/unit_test/abstract_ostream.hpp>
#include <iostream> #include <iostream>
#ifdef _MSC_VER #ifdef _MSC_VER
@@ -28,7 +28,6 @@
#endif #endif
namespace beast { namespace beast {
namespace detail {
#ifdef _MSC_VER #ifdef _MSC_VER
/** A basic_abstract_ostream that redirects output to an attached debugger. */ /** A basic_abstract_ostream that redirects output to an attached debugger. */
@@ -74,7 +73,6 @@ public:
#endif #endif
} // detail
} // beast } // beast
#endif #endif

View File

@@ -5,15 +5,12 @@
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
// //
#ifndef BEAST_DETAIL_UNIT_TEST_GLOBAL_SUITES_HPP #ifndef BEAST_UNIT_TEST_GLOBAL_SUITES_HPP
#define BEAST_DETAIL_UNIT_TEST_GLOBAL_SUITES_HPP #define BEAST_UNIT_TEST_GLOBAL_SUITES_HPP
#include <beast/detail/unit_test/suite_list.hpp> #include <beast/unit_test/suite_list.hpp>
namespace beast { namespace beast {
namespace detail {
inline
namespace unit_test { namespace unit_test {
namespace detail { namespace detail {
@@ -54,7 +51,6 @@ global_suites()
} }
} // unit_test } // unit_test
} // detail
} // beast } // beast
#endif #endif

View File

@@ -5,16 +5,13 @@
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
// //
#ifndef BEAST_DETAIL_UNIT_TEST_MATCH_HPP #ifndef BEAST_UNIT_TEST_MATCH_HPP
#define BEAST_DETAIL_UNIT_TEST_MATCH_HPP #define BEAST_UNIT_TEST_MATCH_HPP
#include <beast/detail/unit_test/suite_info.hpp> #include <beast/unit_test/suite_info.hpp>
#include <string> #include <string>
namespace beast { namespace beast {
namespace detail {
inline
namespace unit_test { namespace unit_test {
// Predicate for implementing matches // Predicate for implementing matches
@@ -171,7 +168,6 @@ match_library (std::string const& name)
} }
} // unit_test } // unit_test
} // detail
} // beast } // beast
#endif #endif

View File

@@ -5,21 +5,18 @@
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
// //
#ifndef BEAST_DETAIL_UNIT_TEST_PRINT_H_INCLUDED #ifndef BEAST_UNIT_TEST_PRINT_H_INCLUDED
#define BEAST_DETAIL_UNIT_TEST_PRINT_H_INCLUDED #define BEAST_UNIT_TEST_PRINT_H_INCLUDED
#include <beast/detail/unit_test/amount.hpp> #include <beast/unit_test/amount.hpp>
#include <beast/detail/unit_test/results.hpp> #include <beast/unit_test/results.hpp>
#include <beast/detail/stream/abstract_ostream.hpp> #include <beast/unit_test/abstract_ostream.hpp>
#include <beast/detail/stream/basic_std_ostream.hpp> #include <beast/unit_test/basic_std_ostream.hpp>
#include <iostream> #include <iostream>
#include <string> #include <string>
namespace beast { namespace beast {
namespace detail {
inline
namespace unit_test { namespace unit_test {
/** Write test results to the specified output stream. */ /** Write test results to the specified output stream. */
@@ -65,7 +62,6 @@ print (results const& r, std::ostream& stream = std::cout)
} }
} // unit_test } // unit_test
} // detail
} // beast } // beast
#endif #endif

View File

@@ -5,16 +5,13 @@
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
// //
#ifndef BEAST_DETAIL_UNIT_TEST_RECORDER_HPP #ifndef BEAST_UNIT_TEST_RECORDER_HPP
#define BEAST_DETAIL_UNIT_TEST_RECORDER_HPP #define BEAST_UNIT_TEST_RECORDER_HPP
#include <beast/detail/unit_test/results.hpp> #include <beast/unit_test/results.hpp>
#include <beast/detail/unit_test/runner.hpp> #include <beast/unit_test/runner.hpp>
namespace beast { namespace beast {
namespace detail {
inline
namespace unit_test { namespace unit_test {
/** A test runner that stores the results. */ /** A test runner that stores the results. */
@@ -90,7 +87,6 @@ private:
}; };
} // unit_test } // unit_test
} // detail
} // beast } // beast
#endif #endif

View File

@@ -5,13 +5,13 @@
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
// //
#ifndef BEAST_DETAIL_UNIT_TEST_REPORTER_HPP #ifndef BEAST_UNIT_TEST_REPORTER_HPP
#define BEAST_DETAIL_UNIT_TEST_REPORTER_HPP #define BEAST_UNIT_TEST_REPORTER_HPP
#include <beast/detail/unit_test/amount.hpp> #include <beast/unit_test/amount.hpp>
#include <beast/detail/unit_test/recorder.hpp> #include <beast/unit_test/recorder.hpp>
#include <beast/detail/stream/abstract_ostream.hpp> #include <beast/unit_test/abstract_ostream.hpp>
#include <beast/detail/stream/basic_std_ostream.hpp> #include <beast/unit_test/basic_std_ostream.hpp>
#include <boost/optional.hpp> #include <boost/optional.hpp>
#include <algorithm> #include <algorithm>
#include <chrono> #include <chrono>
@@ -23,9 +23,6 @@
#include <utility> #include <utility>
namespace beast { namespace beast {
namespace detail {
inline
namespace unit_test { namespace unit_test {
namespace detail { namespace detail {
@@ -87,7 +84,7 @@ private:
}; };
boost::optional <std_ostream> std_ostream_; boost::optional <std_ostream> std_ostream_;
std::reference_wrapper <beast::detail::abstract_ostream> stream_; std::reference_wrapper <beast::abstract_ostream> stream_;
results results_; results results_;
suite_results suite_results_; suite_results suite_results_;
case_results case_results_; case_results case_results_;
@@ -102,7 +99,7 @@ public:
reporter (std::ostream& stream = std::cout); reporter (std::ostream& stream = std::cout);
explicit explicit
reporter (beast::detail::abstract_ostream& stream); reporter (beast::abstract_ostream& stream);
private: private:
static static
@@ -229,7 +226,7 @@ reporter<_>::~reporter()
template <class _> template <class _>
reporter<_>::reporter ( reporter<_>::reporter (
beast::detail::abstract_ostream& stream) abstract_ostream& stream)
: stream_ (stream) : stream_ (stream)
{ {
} }
@@ -318,7 +315,6 @@ reporter<_>::on_log (
using reporter = detail::reporter<>; using reporter = detail::reporter<>;
} // unit_test } // unit_test
} // detail
} // beast } // beast
#endif #endif

View File

@@ -5,8 +5,8 @@
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
// //
#ifndef BEAST_DETAIL_UNIT_TEST_RESULTS_HPP #ifndef BEAST_UNIT_TEST_RESULTS_HPP
#define BEAST_DETAIL_UNIT_TEST_RESULTS_HPP #define BEAST_UNIT_TEST_RESULTS_HPP
#include <beast/detail/const_container.hpp> #include <beast/detail/const_container.hpp>
@@ -14,9 +14,6 @@
#include <vector> #include <vector>
namespace beast { namespace beast {
namespace detail {
inline
namespace unit_test { namespace unit_test {
/** Holds a set of test condition outcomes in a testcase. */ /** Holds a set of test condition outcomes in a testcase. */
@@ -43,7 +40,7 @@ public:
private: private:
class tests_t class tests_t
: public const_container <std::vector <test>> : public beast::detail::const_container <std::vector <test>>
{ {
private: private:
std::size_t failed_; std::size_t failed_;
@@ -85,7 +82,7 @@ private:
}; };
class log_t class log_t
: public const_container <std::vector <std::string>> : public beast::detail::const_container <std::vector <std::string>>
{ {
public: public:
/** Insert a string into the log. */ /** Insert a string into the log. */
@@ -122,7 +119,7 @@ public:
/** Holds the set of testcase results in a suite. */ /** Holds the set of testcase results in a suite. */
class suite_results class suite_results
: public const_container <std::vector <case_results>> : public beast::detail::const_container <std::vector <case_results>>
{ {
private: private:
std::string name_; std::string name_;
@@ -181,7 +178,7 @@ public:
// VFALCO TODO Make this a template class using scoped allocators // VFALCO TODO Make this a template class using scoped allocators
/** Holds the results of running a set of testsuites. */ /** Holds the results of running a set of testsuites. */
class results class results
: public const_container <std::vector <suite_results>> : public beast::detail::const_container <std::vector <suite_results>>
{ {
private: private:
std::size_t m_cases; std::size_t m_cases;
@@ -240,7 +237,6 @@ public:
}; };
} // unit_test } // unit_test
} // detail
} // beast } // beast
#endif #endif

View File

@@ -5,19 +5,16 @@
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
// //
#ifndef BEAST_DETAIL_UNIT_TEST_RUNNER_H_INCLUDED #ifndef BEAST_UNIT_TEST_RUNNER_H_INCLUDED
#define BEAST_DETAIL_UNIT_TEST_RUNNER_H_INCLUDED #define BEAST_UNIT_TEST_RUNNER_H_INCLUDED
#include <beast/detail/unit_test/suite_info.hpp> #include <beast/unit_test/suite_info.hpp>
#include <beast/detail/stream/abstract_ostream.hpp> #include <beast/unit_test/abstract_ostream.hpp>
#include <cassert> #include <cassert>
#include <mutex> #include <mutex>
#include <string> #include <string>
namespace beast { namespace beast {
namespace detail {
inline
namespace unit_test { namespace unit_test {
/** Unit test runner interface. /** Unit test runner interface.
@@ -28,7 +25,7 @@ class runner
{ {
private: private:
// Reroutes log output to the runner // Reroutes log output to the runner
class stream_t : public beast::detail::abstract_ostream class stream_t : public abstract_ostream
{ {
private: private:
runner& owner_; runner& owner_;
@@ -332,7 +329,6 @@ runner::log (std::string const& s)
} }
} // unit_test } // unit_test
} // detail
} // beast } // beast
#endif #endif

View File

@@ -5,17 +5,14 @@
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
// //
#ifndef BEAST_DETAIL_UNIT_TEST_SUITE_HPP #ifndef BEAST_UNIT_TEST_SUITE_HPP
#define BEAST_DETAIL_UNIT_TEST_SUITE_HPP #define BEAST_UNIT_TEST_SUITE_HPP
#include <beast/detail/unit_test/runner.hpp> #include <beast/unit_test/runner.hpp>
#include <string> #include <string>
#include <sstream> #include <sstream>
namespace beast { namespace beast {
namespace detail {
inline
namespace unit_test { namespace unit_test {
class thread; class thread;
@@ -537,7 +534,6 @@ suite::run (runner& r)
} }
} // unit_test } // unit_test
} // detail
} // beast } // beast
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
@@ -545,7 +541,7 @@ suite::run (runner& r)
// detail: // detail:
// This inserts the suite with the given manual flag // This inserts the suite with the given manual flag
#define BEAST_DEFINE_TESTSUITE_INSERT(Class,Module,Library,manual) \ #define BEAST_DEFINE_TESTSUITE_INSERT(Class,Module,Library,manual) \
static beast::detail::unit_test::detail::insert_suite <Class##_test> \ static beast::unit_test::detail::insert_suite <Class##_test> \
Library ## Module ## Class ## _test_instance ( \ Library ## Module ## Class ## _test_instance ( \
#Class, #Module, #Library, manual); #Class, #Module, #Library, manual);
@@ -593,7 +589,7 @@ suite::run (runner& r)
#define BEAST_DEFINE_TESTSUITE(Class,Module,Library) #define BEAST_DEFINE_TESTSUITE(Class,Module,Library)
#else #else
#include <beast/detail/unit_test/global_suites.hpp> #include <beast/unit_test/global_suites.hpp>
#define BEAST_DEFINE_TESTSUITE(Class,Module,Library) \ #define BEAST_DEFINE_TESTSUITE(Class,Module,Library) \
BEAST_DEFINE_TESTSUITE_INSERT(Class,Module,Library,false) BEAST_DEFINE_TESTSUITE_INSERT(Class,Module,Library,false)
#define BEAST_DEFINE_TESTSUITE_MANUAL(Class,Module,Library) \ #define BEAST_DEFINE_TESTSUITE_MANUAL(Class,Module,Library) \

View File

@@ -5,17 +5,14 @@
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
// //
#ifndef BEAST_DETAIL_UNIT_TEST_SUITE_INFO_HPP #ifndef BEAST_UNIT_TEST_SUITE_INFO_HPP
#define BEAST_DETAIL_UNIT_TEST_SUITE_INFO_HPP #define BEAST_UNIT_TEST_SUITE_INFO_HPP
#include <functional> #include <functional>
#include <string> #include <string>
#include <utility> #include <utility>
namespace beast { namespace beast {
namespace detail {
inline
namespace unit_test { namespace unit_test {
class runner; class runner;
@@ -113,7 +110,6 @@ make_suite_info (std::string const& name, std::string const& module,
} }
} // unit_test } // unit_test
} // detail
} // beast } // beast
#endif #endif

View File

@@ -5,10 +5,10 @@
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
// //
#ifndef BEAST_DETAIL_UNIT_TEST_SUITE_LIST_HPP #ifndef BEAST_UNIT_TEST_SUITE_LIST_HPP
#define BEAST_DETAIL_UNIT_TEST_SUITE_LIST_HPP #define BEAST_UNIT_TEST_SUITE_LIST_HPP
#include <beast/detail/unit_test/suite_info.hpp> #include <beast/unit_test/suite_info.hpp>
#include <beast/detail/const_container.hpp> #include <beast/detail/const_container.hpp>
#include <cassert> #include <cassert>
#include <typeindex> #include <typeindex>
@@ -16,14 +16,11 @@
#include <unordered_set> #include <unordered_set>
namespace beast { namespace beast {
namespace detail {
inline
namespace unit_test { namespace unit_test {
/** A container of test suites. */ /** A container of test suites. */
class suite_list class suite_list
: public const_container <std::set <suite_info>> : public detail::const_container <std::set <suite_info>>
{ {
private: private:
#ifndef NDEBUG #ifndef NDEBUG
@@ -68,7 +65,6 @@ suite_list::insert (char const* name, char const* module, char const* library,
} }
} // unit_test } // unit_test
} // detail
} // beast } // beast
#endif #endif

View File

@@ -5,18 +5,15 @@
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
// //
#ifndef BEAST_DETAIL_UNIT_TEST_THREAD_HPP #ifndef BEAST_UNIT_TEST_THREAD_HPP
#define BEAST_DETAIL_UNIT_TEST_THREAD_HPP #define BEAST_UNIT_TEST_THREAD_HPP
#include <beast/detail/unit_test/suite.hpp> #include <beast/unit_test/suite.hpp>
#include <functional> #include <functional>
#include <thread> #include <thread>
#include <utility> #include <utility>
namespace beast { namespace beast {
namespace detail {
inline
namespace unit_test { namespace unit_test {
/** Replacement for std::thread that handles exceptions in unit tests. */ /** Replacement for std::thread that handles exceptions in unit tests. */
@@ -122,7 +119,6 @@ private:
}; };
} // unit_test } // unit_test
} // detail
} // beast } // beast
#endif #endif

View File

@@ -1,90 +0,0 @@
//
// Copyright (c) 2013-2016 Vinnie Falco (vinnie dot falco at gmail dot com)
//
// Distributed under the Boost Software License, Version 1.0. (See accompanying
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
//
#include <beast/detail/unit_test/amount.hpp>
#include <beast/detail/unit_test/global_suites.hpp>
#include <beast/detail/unit_test/suite.hpp>
#include <string>
// Include this .cpp in your project to gain access to the printing suite
namespace beast {
namespace detail {
inline
namespace unit_test {
namespace detail {
/** A suite that prints the list of globally defined suites. */
class print_test : public suite
{
private:
template <class = void>
void
do_run();
public:
template <class = void>
static
std::string
prefix (suite_info const& s);
template <class = void>
void
print (suite_list &c);
void
run()
{
do_run();
}
};
template <class>
void
print_test::do_run()
{
log << "------------------------------------------";
print (global_suites());
log << "------------------------------------------";
pass();
}
template <class>
std::string
print_test::prefix (suite_info const& s)
{
if (s.manual())
return "|M| ";
return " ";
}
template <class>
void
print_test::print (suite_list &c)
{
std::size_t manual (0);
for (auto const& s : c)
{
log <<
prefix (s) <<
s.full_name();
if (s.manual())
++manual;
}
log <<
amount (c.size(), "suite") << " total, " <<
amount (manual, "manual suite")
;
}
BEAST_DEFINE_TESTSUITE_MANUAL(print,unit_test,beast);
} // detail
} // unit_test
} // detail
} // beast

View File

@@ -1,6 +1,7 @@
# Part of Beast # Part of Beast
GroupSources(include/beast) GroupSources(include/beast)
GroupSources(extras)
GroupSources(test) GroupSources(test)
add_executable (core-tests add_executable (core-tests

View File

@@ -10,7 +10,7 @@
#include <beast/streambuf.hpp> #include <beast/streambuf.hpp>
#include <beast/to_string.hpp> #include <beast/to_string.hpp>
#include <beast/detail/unit_test/suite.hpp> #include <beast/unit_test/suite.hpp>
#include <boost/asio/buffer.hpp> #include <boost/asio/buffer.hpp>
#include <algorithm> #include <algorithm>
#include <atomic> #include <atomic>
@@ -136,7 +136,7 @@ public:
} }
}; };
class basic_streambuf_test : public beast::detail::unit_test::suite class basic_streambuf_test : public beast::unit_test::suite
{ {
public: public:
template<class Alloc1, class Alloc2> template<class Alloc1, class Alloc2>

View File

@@ -8,12 +8,12 @@
// Test that header file is self-contained. // Test that header file is self-contained.
#include <beast/bind_handler.hpp> #include <beast/bind_handler.hpp>
#include <beast/detail/unit_test/suite.hpp> #include <beast/unit_test/suite.hpp>
#include <functional> #include <functional>
namespace beast { namespace beast {
class bind_handler_test : public detail::unit_test::suite class bind_handler_test : public unit_test::suite
{ {
public: public:
static void foo (int) static void foo (int)

View File

@@ -8,7 +8,7 @@
// Test that header file is self-contained. // Test that header file is self-contained.
#include <beast/buffer_cat.hpp> #include <beast/buffer_cat.hpp>
#include <beast/detail/unit_test/suite.hpp> #include <beast/unit_test/suite.hpp>
#include <boost/asio/buffer.hpp> #include <boost/asio/buffer.hpp>
#include <boost/asio/streambuf.hpp> #include <boost/asio/streambuf.hpp>
#include <iterator> #include <iterator>
@@ -17,7 +17,7 @@
namespace beast { namespace beast {
class buffer_cat_test : public detail::unit_test::suite class buffer_cat_test : public unit_test::suite
{ {
public: public:
template< class Iterator > template< class Iterator >

View File

@@ -9,14 +9,14 @@
#include <beast/buffers_adapter.hpp> #include <beast/buffers_adapter.hpp>
#include <beast/streambuf.hpp> #include <beast/streambuf.hpp>
#include <beast/detail/unit_test/suite.hpp> #include <beast/unit_test/suite.hpp>
#include <boost/asio/buffer.hpp> #include <boost/asio/buffer.hpp>
#include <boost/asio/streambuf.hpp> #include <boost/asio/streambuf.hpp>
#include <iterator> #include <iterator>
namespace beast { namespace beast {
class buffers_adapter_test : public detail::unit_test::suite class buffers_adapter_test : public unit_test::suite
{ {
public: public:
template<class ConstBufferSequence> template<class ConstBufferSequence>

View File

@@ -8,13 +8,13 @@
// Test that header file is self-contained. // Test that header file is self-contained.
#include <beast/consuming_buffers.hpp> #include <beast/consuming_buffers.hpp>
#include <beast/detail/unit_test/suite.hpp> #include <beast/unit_test/suite.hpp>
#include <boost/asio/buffer.hpp> #include <boost/asio/buffer.hpp>
#include <string> #include <string>
namespace beast { namespace beast {
class consuming_buffers_test : public beast::detail::unit_test::suite class consuming_buffers_test : public beast::unit_test::suite
{ {
public: public:
template<class ConstBufferSequence> template<class ConstBufferSequence>

View File

@@ -6,12 +6,12 @@
// //
#include <beast/detail/base64.hpp> #include <beast/detail/base64.hpp>
#include <beast/detail/unit_test/suite.hpp> #include <beast/unit_test/suite.hpp>
namespace beast { namespace beast {
namespace detail { namespace detail {
class base64_test : public beast::detail::unit_test::suite class base64_test : public beast::unit_test::suite
{ {
public: public:
void void

View File

@@ -6,13 +6,13 @@
// //
#include <beast/detail/empty_base_optimization.hpp> #include <beast/detail/empty_base_optimization.hpp>
#include <beast/detail/unit_test/suite.hpp> #include <beast/unit_test/suite.hpp>
namespace beast { namespace beast {
namespace detail { namespace detail {
class empty_base_optimization_test class empty_base_optimization_test
: public beast::detail::unit_test::suite : public beast::unit_test::suite
{ {
public: public:
template <class T> template <class T>

View File

@@ -6,13 +6,13 @@
// //
#include <beast/detail/sha1.hpp> #include <beast/detail/sha1.hpp>
#include <beast/detail/unit_test/suite.hpp> #include <beast/unit_test/suite.hpp>
#include <array> #include <array>
namespace beast { namespace beast {
namespace detail { namespace detail {
class sha1_test : public beast::detail::unit_test::suite class sha1_test : public beast::unit_test::suite
{ {
public: public:
static static

View File

@@ -8,12 +8,12 @@
// Test that header file is self-contained. // Test that header file is self-contained.
#include <beast/to_string.hpp> #include <beast/to_string.hpp>
#include <beast/detail/unit_test/suite.hpp> #include <beast/unit_test/suite.hpp>
#include <boost/asio/buffer.hpp> #include <boost/asio/buffer.hpp>
namespace beast { namespace beast {
class to_string_test : public beast::detail::unit_test::suite class to_string_test : public beast::unit_test::suite
{ {
public: public:
void run() void run()

View File

@@ -8,12 +8,12 @@
// Test that header file is self-contained. // Test that header file is self-contained.
#include <beast/http/basic_headers.hpp> #include <beast/http/basic_headers.hpp>
#include <beast/detail/unit_test/suite.hpp> #include <beast/unit_test/suite.hpp>
namespace beast { namespace beast {
namespace http { namespace http {
class basic_headers_test : public beast::detail::unit_test::suite class basic_headers_test : public beast::unit_test::suite
{ {
public: public:
template<class Allocator> template<class Allocator>

View File

@@ -15,7 +15,7 @@
#include <beast/write_streambuf.hpp> #include <beast/write_streambuf.hpp>
#include <beast/http/rfc2616.hpp> #include <beast/http/rfc2616.hpp>
#include <beast/detail/ci_char_traits.hpp> #include <beast/detail/ci_char_traits.hpp>
#include <beast/detail/unit_test/suite.hpp> #include <beast/unit_test/suite.hpp>
#include <boost/utility/string_ref.hpp> #include <boost/utility/string_ref.hpp>
#include <cassert> #include <cassert>
#include <climits> #include <climits>
@@ -27,7 +27,7 @@
namespace beast { namespace beast {
namespace http { namespace http {
class basic_parser_v1_test : public beast::detail::unit_test::suite class basic_parser_v1_test : public beast::unit_test::suite
{ {
public: public:
struct cb_req_checker struct cb_req_checker

View File

@@ -20,8 +20,8 @@
// Test that header file is self-contained. // Test that header file is self-contained.
#include <beast/http/message_v1.hpp> #include <beast/http/message_v1.hpp>
#include <beast/detail/unit_test/suite.hpp> #include <beast/unit_test/suite.hpp>
#include <beast/detail/unit_test/thread.hpp> #include <beast/unit_test/thread.hpp>
#include <beast/placeholders.hpp> #include <beast/placeholders.hpp>
#include <beast/streambuf.hpp> #include <beast/streambuf.hpp>
#include <beast/http.hpp> #include <beast/http.hpp>
@@ -39,15 +39,15 @@ public:
using socket_type = boost::asio::ip::tcp::socket; using socket_type = boost::asio::ip::tcp::socket;
private: private:
beast::detail::unit_test::suite& suite_; unit_test::suite& suite_;
boost::asio::io_service ios_; boost::asio::io_service ios_;
socket_type sock_; socket_type sock_;
boost::asio::ip::tcp::acceptor acceptor_; boost::asio::ip::tcp::acceptor acceptor_;
beast::detail::unit_test::thread thread_; unit_test::thread thread_;
public: public:
sync_echo_http_server( sync_echo_http_server(
endpoint_type ep, beast::detail::unit_test::suite& suite) endpoint_type ep, unit_test::suite& suite)
: suite_(suite) : suite_(suite)
, sock_(ios_) , sock_(ios_)
, acceptor_(ios_) , acceptor_(ios_)
@@ -63,7 +63,7 @@ public:
acceptor_.async_accept(sock_, acceptor_.async_accept(sock_,
std::bind(&sync_echo_http_server::on_accept, this, std::bind(&sync_echo_http_server::on_accept, this,
beast::asio::placeholders::error)); beast::asio::placeholders::error));
thread_ = beast::detail::unit_test::thread(suite_, thread_ = unit_test::thread(suite_,
[&] [&]
{ {
ios_.run(); ios_.run();
@@ -132,7 +132,7 @@ private:
} }
}; };
class message_test : public beast::detail::unit_test::suite class message_test : public beast::unit_test::suite
{ {
public: public:
using endpoint_type = boost::asio::ip::tcp::endpoint; using endpoint_type = boost::asio::ip::tcp::endpoint;

View File

@@ -10,7 +10,7 @@
#include <beast/http.hpp> #include <beast/http.hpp>
#include <beast/streambuf.hpp> #include <beast/streambuf.hpp>
#include <beast/to_string.hpp> #include <beast/to_string.hpp>
#include <beast/detail/unit_test/suite.hpp> #include <beast/unit_test/suite.hpp>
#include <chrono> #include <chrono>
#include <iostream> #include <iostream>
#include <vector> #include <vector>
@@ -18,7 +18,7 @@
namespace beast { namespace beast {
namespace http { namespace http {
class parser_bench_test : public beast::detail::unit_test::suite class parser_bench_test : public beast::unit_test::suite
{ {
public: public:
static std::size_t constexpr N = 2000; static std::size_t constexpr N = 2000;

View File

@@ -10,12 +10,12 @@
#include <beast/http/headers.hpp> #include <beast/http/headers.hpp>
#include <beast/http/string_body.hpp> #include <beast/http/string_body.hpp>
#include <beast/detail/unit_test/suite.hpp> #include <beast/unit_test/suite.hpp>
namespace beast { namespace beast {
namespace http { namespace http {
class parser_v1_test : public beast::detail::unit_test::suite class parser_v1_test : public beast::unit_test::suite
{ {
public: public:
void run() override void run() override

View File

@@ -13,14 +13,14 @@
#include "../yield_to.hpp" #include "../yield_to.hpp"
#include <beast/http/streambuf_body.hpp> #include <beast/http/streambuf_body.hpp>
#include <beast/detail/unit_test/suite.hpp> #include <beast/unit_test/suite.hpp>
#include <boost/asio/spawn.hpp> #include <boost/asio/spawn.hpp>
namespace beast { namespace beast {
namespace http { namespace http {
class read_test class read_test
: public beast::detail::unit_test::suite : public beast::unit_test::suite
, public test::enable_yield_to , public test::enable_yield_to
{ {
public: public:

View File

@@ -8,7 +8,7 @@
// Test that header file is self-contained. // Test that header file is self-contained.
#include <beast/http/rfc2616.hpp> #include <beast/http/rfc2616.hpp>
#include <beast/detail/unit_test/suite.hpp> #include <beast/unit_test/suite.hpp>
#include <string> #include <string>
#include <vector> #include <vector>
@@ -16,7 +16,7 @@ namespace beast {
namespace rfc2616 { namespace rfc2616 {
namespace test { namespace test {
class rfc2616_test : public beast::detail::unit_test::suite class rfc2616_test : public beast::unit_test::suite
{ {
public: public:
void void

View File

@@ -16,14 +16,14 @@
#include <beast/http/write.hpp> #include <beast/http/write.hpp>
#include <beast/streambuf.hpp> #include <beast/streambuf.hpp>
#include <beast/to_string.hpp> #include <beast/to_string.hpp>
#include <beast/detail/unit_test/suite.hpp> #include <beast/unit_test/suite.hpp>
#include <boost/asio/error.hpp> #include <boost/asio/error.hpp>
#include <string> #include <string>
namespace beast { namespace beast {
namespace http { namespace http {
class write_test : public beast::detail::unit_test::suite class write_test : public beast::unit_test::suite
{ {
public: public:
struct string_SyncStream struct string_SyncStream

View File

@@ -17,12 +17,12 @@
*/ */
//============================================================================== //==============================================================================
#include <beast/detail/unit_test/amount.hpp> #include <beast/unit_test/amount.hpp>
#include <beast/detail/unit_test/global_suites.hpp> #include <beast/unit_test/global_suites.hpp>
#include <beast/detail/unit_test/match.hpp> #include <beast/unit_test/match.hpp>
#include <beast/detail/unit_test/reporter.hpp> #include <beast/unit_test/reporter.hpp>
#include <beast/detail/unit_test/suite.hpp> #include <beast/unit_test/suite.hpp>
#include <beast/detail/stream/debug_ostream.hpp> #include <beast/unit_test/debug_ostream.hpp>
#include <boost/program_options.hpp> #include <boost/program_options.hpp>
#include <iostream> #include <iostream>
#include <vector> #include <vector>
@@ -40,9 +40,6 @@
#include <cstdlib> #include <cstdlib>
namespace beast { namespace beast {
namespace detail {
inline
namespace unit_test { namespace unit_test {
std::string std::string
@@ -82,7 +79,6 @@ print(Log& log)
} }
} // unit_test } // unit_test
} // detail
} // beast } // beast
// Simple main used to produce stand // Simple main used to produce stand
@@ -90,7 +86,7 @@ print(Log& log)
int main(int ac, char const* av[]) int main(int ac, char const* av[])
{ {
using namespace std; using namespace std;
using namespace beast::detail::unit_test; using namespace beast::unit_test;
#ifdef _MSC_VER #ifdef _MSC_VER
{ {
@@ -113,7 +109,7 @@ int main(int ac, char const* av[])
po::store(po::parse_command_line(ac, av, desc), vm); po::store(po::parse_command_line(ac, av, desc), vm);
po::notify(vm); po::notify(vm);
beast::detail::debug_ostream log; beast::debug_ostream log;
if(vm.count("help")) if(vm.count("help"))
{ {

View File

@@ -9,13 +9,13 @@
#include <beast/prepare_buffers.hpp> #include <beast/prepare_buffers.hpp>
#include <beast/consuming_buffers.hpp> #include <beast/consuming_buffers.hpp>
#include <beast/detail/unit_test/suite.hpp> #include <beast/unit_test/suite.hpp>
#include <boost/asio/buffer.hpp> #include <boost/asio/buffer.hpp>
#include <string> #include <string>
namespace beast { namespace beast {
class prepare_buffers_test : public beast::detail::unit_test::suite class prepare_buffers_test : public beast::unit_test::suite
{ {
public: public:
template<class ConstBufferSequence> template<class ConstBufferSequence>

View File

@@ -8,13 +8,13 @@
// Test that header file is self-contained. // Test that header file is self-contained.
#include <beast/static_streambuf.hpp> #include <beast/static_streambuf.hpp>
#include <beast/detail/unit_test/suite.hpp> #include <beast/unit_test/suite.hpp>
#include <boost/asio/buffer.hpp> #include <boost/asio/buffer.hpp>
#include <string> #include <string>
namespace beast { namespace beast {
class static_streambuf_test : public beast::detail::unit_test::suite class static_streambuf_test : public beast::unit_test::suite
{ {
public: public:
template<class ConstBufferSequence> template<class ConstBufferSequence>

View File

@@ -8,11 +8,11 @@
// Test that header file is self-contained. // Test that header file is self-contained.
#include <beast/static_string.hpp> #include <beast/static_string.hpp>
#include <beast/detail/unit_test/suite.hpp> #include <beast/unit_test/suite.hpp>
namespace beast { namespace beast {
class static_string_test : public beast::detail::unit_test::suite class static_string_test : public beast::unit_test::suite
{ {
public: public:
void testMembers() void testMembers()

View File

@@ -9,12 +9,12 @@
#include <beast/streambuf_readstream.hpp> #include <beast/streambuf_readstream.hpp>
#include <beast/streambuf.hpp> #include <beast/streambuf.hpp>
#include <beast/detail/unit_test/suite.hpp> #include <beast/unit_test/suite.hpp>
#include <boost/asio.hpp> #include <boost/asio.hpp>
namespace beast { namespace beast {
class streambuf_readstream_test : public beast::detail::unit_test::suite class streambuf_readstream_test : public beast::unit_test::suite
{ {
public: public:
void testSpecial() void testSpecial()

View File

@@ -17,7 +17,7 @@
#include <beast/streambuf.hpp> #include <beast/streambuf.hpp>
#include <beast/to_string.hpp> #include <beast/to_string.hpp>
#include <beast/detail/unit_test/suite.hpp> #include <beast/unit_test/suite.hpp>
#include <boost/asio.hpp> #include <boost/asio.hpp>
#include <boost/asio/spawn.hpp> #include <boost/asio/spawn.hpp>
#include <boost/optional.hpp> #include <boost/optional.hpp>
@@ -26,7 +26,7 @@ namespace beast {
namespace websocket { namespace websocket {
class stream_test class stream_test
: public beast::detail::unit_test::suite : public beast::unit_test::suite
, public test::enable_yield_to , public test::enable_yield_to
{ {
public: public:

View File

@@ -9,13 +9,13 @@
#include <beast/websocket/detail/utf8_checker.hpp> #include <beast/websocket/detail/utf8_checker.hpp>
#include <beast/streambuf.hpp> #include <beast/streambuf.hpp>
#include <beast/detail/unit_test/suite.hpp> #include <beast/unit_test/suite.hpp>
#include <array> #include <array>
namespace beast { namespace beast {
namespace websocket { namespace websocket {
class utf8_checker_test : public beast::detail::unit_test::suite class utf8_checker_test : public beast::unit_test::suite
{ {
public: public:
void void

View File

@@ -8,11 +8,11 @@
// Test that header file is self-contained. // Test that header file is self-contained.
#include <beast/write_streambuf.hpp> #include <beast/write_streambuf.hpp>
#include <beast/streambuf.hpp> #include <beast/streambuf.hpp>
#include <beast/detail/unit_test/suite.hpp> #include <beast/unit_test/suite.hpp>
namespace beast { namespace beast {
class write_streambuf_test : public beast::detail::unit_test::suite class write_streambuf_test : public beast::unit_test::suite
{ {
public: public:
void run() override void run() override