forked from boostorg/core
Compare commits
2 Commits
boost-1.73
...
lwt_obtain
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
78c87b848c | ||
|
|
6871034931 |
124
.travis.yml
124
.travis.yml
@@ -1,10 +1,12 @@
|
||||
# Copyright 2016-2019 Peter Dimov
|
||||
# Copyright 2016-2018 Peter Dimov
|
||||
# Distributed under the Boost Software License, Version 1.0.
|
||||
# (See accompanying file LICENSE_1_0.txt or copy at http://boost.org/LICENSE_1_0.txt)
|
||||
|
||||
language: cpp
|
||||
|
||||
dist: xenial
|
||||
sudo: false
|
||||
|
||||
python: "2.7"
|
||||
|
||||
branches:
|
||||
only:
|
||||
@@ -97,6 +99,7 @@ matrix:
|
||||
- ubuntu-toolchain-r-test
|
||||
|
||||
- os: linux
|
||||
dist: trusty
|
||||
compiler: g++-7
|
||||
env: TOOLSET=gcc COMPILER=g++-7 CXXSTD=03,11,14,17
|
||||
addons:
|
||||
@@ -117,22 +120,12 @@ matrix:
|
||||
- ubuntu-toolchain-r-test
|
||||
|
||||
- os: linux
|
||||
compiler: g++-9
|
||||
env: TOOLSET=gcc COMPILER=g++-9 CXXSTD=03,11,14,17,2a
|
||||
compiler: g++-8
|
||||
env: UBSAN=1 TOOLSET=gcc COMPILER=g++-8 CXXSTD=03,11,14,17 UBSAN_OPTIONS=print_stacktrace=1 LINKFLAGS=-fuse-ld=gold
|
||||
addons:
|
||||
apt:
|
||||
packages:
|
||||
- g++-9
|
||||
sources:
|
||||
- ubuntu-toolchain-r-test
|
||||
|
||||
- os: linux
|
||||
compiler: g++-9
|
||||
env: UBSAN=1 TOOLSET=gcc COMPILER=g++-9 CXXSTD=03,11,14,17,2a UBSAN_OPTIONS=print_stacktrace=1 LINKFLAGS=-fuse-ld=gold
|
||||
addons:
|
||||
apt:
|
||||
packages:
|
||||
- g++-9
|
||||
- g++-8
|
||||
sources:
|
||||
- ubuntu-toolchain-r-test
|
||||
|
||||
@@ -141,31 +134,13 @@ matrix:
|
||||
env: TOOLSET=clang COMPILER=clang++ CXXSTD=03,11
|
||||
|
||||
- os: linux
|
||||
dist: trusty
|
||||
compiler: /usr/bin/clang++
|
||||
env: TOOLSET=clang COMPILER=/usr/bin/clang++ CXXSTD=03,11
|
||||
addons:
|
||||
apt:
|
||||
packages:
|
||||
- clang-3.3
|
||||
|
||||
- os: linux
|
||||
dist: trusty
|
||||
compiler: /usr/bin/clang++
|
||||
env: TOOLSET=clang COMPILER=/usr/bin/clang++ CXXSTD=03,11
|
||||
addons:
|
||||
apt:
|
||||
packages:
|
||||
- clang-3.4
|
||||
|
||||
- os: linux
|
||||
dist: trusty
|
||||
compiler: clang++-3.5
|
||||
env: TOOLSET=clang COMPILER=clang++-3.5 CXXSTD=03,11
|
||||
env: TOOLSET=clang COMPILER=clang++-3.5 CXXSTD=03,11,14,1z
|
||||
addons:
|
||||
apt:
|
||||
packages:
|
||||
- clang-3.5
|
||||
- libstdc++-4.9-dev
|
||||
sources:
|
||||
- ubuntu-toolchain-r-test
|
||||
|
||||
@@ -176,16 +151,7 @@ matrix:
|
||||
apt:
|
||||
packages:
|
||||
- clang-3.6
|
||||
sources:
|
||||
- ubuntu-toolchain-r-test
|
||||
|
||||
- os: linux
|
||||
compiler: clang++-3.7
|
||||
env: TOOLSET=clang COMPILER=clang++-3.7 CXXSTD=03,11,14,1z
|
||||
addons:
|
||||
apt:
|
||||
packages:
|
||||
- clang-3.7
|
||||
- libstdc++-4.9-dev
|
||||
sources:
|
||||
- ubuntu-toolchain-r-test
|
||||
|
||||
@@ -196,6 +162,7 @@ matrix:
|
||||
apt:
|
||||
packages:
|
||||
- clang-3.8
|
||||
- libstdc++-4.9-dev
|
||||
sources:
|
||||
- ubuntu-toolchain-r-test
|
||||
|
||||
@@ -206,6 +173,7 @@ matrix:
|
||||
apt:
|
||||
packages:
|
||||
- clang-3.9
|
||||
- libstdc++-4.9-dev
|
||||
sources:
|
||||
- ubuntu-toolchain-r-test
|
||||
|
||||
@@ -218,6 +186,7 @@ matrix:
|
||||
- clang-4.0
|
||||
sources:
|
||||
- ubuntu-toolchain-r-test
|
||||
- llvm-toolchain-trusty-4.0
|
||||
|
||||
- os: linux
|
||||
compiler: clang++-5.0
|
||||
@@ -228,6 +197,7 @@ matrix:
|
||||
- clang-5.0
|
||||
sources:
|
||||
- ubuntu-toolchain-r-test
|
||||
- llvm-toolchain-trusty-5.0
|
||||
|
||||
- os: linux
|
||||
compiler: clang++-6.0
|
||||
@@ -238,6 +208,7 @@ matrix:
|
||||
- clang-6.0
|
||||
sources:
|
||||
- ubuntu-toolchain-r-test
|
||||
- llvm-toolchain-trusty-6.0
|
||||
|
||||
- os: linux
|
||||
compiler: clang++-7
|
||||
@@ -248,44 +219,21 @@ matrix:
|
||||
- clang-7
|
||||
sources:
|
||||
- ubuntu-toolchain-r-test
|
||||
- llvm-toolchain-xenial-7
|
||||
- llvm-toolchain-trusty-7
|
||||
|
||||
- os: linux
|
||||
compiler: clang++-8
|
||||
env: TOOLSET=clang COMPILER=clang++-8 CXXSTD=03,11,14,17,2a
|
||||
compiler: clang++-6.0
|
||||
env: UBSAN=1 TOOLSET=clang COMPILER=clang++-6.0 CXXSTD=03,11,14,1z UBSAN_OPTIONS=print_stacktrace=1
|
||||
addons:
|
||||
apt:
|
||||
packages:
|
||||
- clang-8
|
||||
- clang-6.0
|
||||
- libstdc++-5-dev
|
||||
sources:
|
||||
- ubuntu-toolchain-r-test
|
||||
- llvm-toolchain-xenial-8
|
||||
- llvm-toolchain-trusty-6.0
|
||||
|
||||
- os: linux
|
||||
compiler: clang++-9
|
||||
env: TOOLSET=clang COMPILER=clang++-9 CXXSTD=03,11,14,17,2a
|
||||
addons:
|
||||
apt:
|
||||
packages:
|
||||
- clang-9
|
||||
sources:
|
||||
- ubuntu-toolchain-r-test
|
||||
- sourceline: 'deb https://apt.llvm.org/xenial/ llvm-toolchain-xenial-9 main'
|
||||
key_url: 'https://apt.llvm.org/llvm-snapshot.gpg.key'
|
||||
|
||||
- os: linux
|
||||
compiler: clang++-8
|
||||
env: UBSAN=1 TOOLSET=clang COMPILER=clang++-8 CXXSTD=03,11,14,17,2a UBSAN_OPTIONS=print_stacktrace=1
|
||||
addons:
|
||||
apt:
|
||||
packages:
|
||||
- clang-8
|
||||
sources:
|
||||
- ubuntu-toolchain-r-test
|
||||
- llvm-toolchain-xenial-8
|
||||
|
||||
- os: linux
|
||||
dist: trusty
|
||||
compiler: clang++-libc++
|
||||
env: TOOLSET=clang COMPILER=clang++-libc++ CXXSTD=03,11,14,1z
|
||||
addons:
|
||||
@@ -295,7 +243,6 @@ matrix:
|
||||
- libc++abi-dev
|
||||
|
||||
- os: linux
|
||||
dist: trusty
|
||||
compiler: clang++-libc++
|
||||
env: UBSAN=1 TOOLSET=clang COMPILER=clang++-libc++ CXXSTD=03,11,14,1z UBSAN_OPTIONS=print_stacktrace=1
|
||||
addons:
|
||||
@@ -325,36 +272,14 @@ matrix:
|
||||
osx_image: xcode10.1
|
||||
|
||||
- os: linux
|
||||
env: CMAKE_TEST=1
|
||||
script:
|
||||
- mkdir __build__ && cd __build__
|
||||
- cmake -DBOOST_ENABLE_CMAKE=1 -DBoost_VERBOSE=1 -DBOOST_INCLUDE_LIBRARIES=core ..
|
||||
- ctest --output-on-failure -R boost_core
|
||||
|
||||
- os: linux
|
||||
compiler: g++
|
||||
env: CMAKE_SUBDIR_TEST=1
|
||||
install:
|
||||
- BOOST_BRANCH=develop
|
||||
- if [ "$TRAVIS_BRANCH" = "master" ]; then BOOST_BRANCH=master; fi
|
||||
- git clone -b $BOOST_BRANCH https://github.com/boostorg/config.git ../config
|
||||
- git clone -b $BOOST_BRANCH https://github.com/boostorg/assert.git ../assert
|
||||
script:
|
||||
- cd test/cmake_subdir_test && mkdir __build__ && cd __build__
|
||||
- cd libs/core/test/cmake_subdir_test && mkdir __build__ && cd __build__
|
||||
- cmake ..
|
||||
- cmake --build .
|
||||
- cmake --build . --target check
|
||||
|
||||
- os: linux
|
||||
env: CMAKE_INSTALL_TEST=1
|
||||
script:
|
||||
- mkdir __build__ && cd __build__
|
||||
- cmake -DBOOST_ENABLE_CMAKE=1 -DBoost_VERBOSE=1 -DBOOST_INCLUDE_LIBRARIES="assert;config;core" -DCMAKE_INSTALL_PREFIX=~/.local ..
|
||||
- cmake --build . --target install
|
||||
- cd ../libs/core/test/cmake_install_test && mkdir __build__ && cd __build__
|
||||
- cmake -DCMAKE_INSTALL_PREFIX=~/.local ..
|
||||
- cmake --build .
|
||||
- cmake --build . --target check
|
||||
|
||||
install:
|
||||
- BOOST_BRANCH=develop
|
||||
- if [ "$TRAVIS_BRANCH" = "master" ]; then BOOST_BRANCH=master; fi
|
||||
@@ -370,7 +295,6 @@ install:
|
||||
- git submodule init libs/type_traits
|
||||
- git submodule init tools/build
|
||||
- git submodule init tools/boost_install
|
||||
- git submodule init tools/cmake
|
||||
- git submodule update --jobs 4
|
||||
- cp -r $TRAVIS_BUILD_DIR/* libs/core
|
||||
- ./bootstrap.sh
|
||||
|
||||
@@ -1,10 +1,13 @@
|
||||
# Copyright 2018, 2019 Peter Dimov
|
||||
# Copyright 2018 Peter Dimov
|
||||
# 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
|
||||
|
||||
cmake_minimum_required(VERSION 3.5...3.16)
|
||||
# Partial (add_subdirectory only) and experimental CMake support
|
||||
# Subject to change; please do not rely on the contents of this file yet
|
||||
|
||||
project(boost_core VERSION "${BOOST_SUPERPROJECT_VERSION}" LANGUAGES CXX)
|
||||
cmake_minimum_required(VERSION 3.5)
|
||||
|
||||
project(BoostCore LANGUAGES CXX)
|
||||
|
||||
add_library(boost_core INTERFACE)
|
||||
add_library(Boost::core ALIAS boost_core)
|
||||
@@ -12,20 +15,7 @@ add_library(Boost::core ALIAS boost_core)
|
||||
target_include_directories(boost_core INTERFACE include)
|
||||
|
||||
target_link_libraries(boost_core
|
||||
INTERFACE
|
||||
Boost::assert
|
||||
Boost::config
|
||||
INTERFACE
|
||||
Boost::assert
|
||||
Boost::config
|
||||
)
|
||||
|
||||
if(BOOST_SUPERPROJECT_VERSION)
|
||||
|
||||
include(BoostInstall)
|
||||
boost_install(TARGETS boost_core HEADER_DIRECTORY include/)
|
||||
|
||||
endif()
|
||||
|
||||
if(BUILD_TESTING)
|
||||
|
||||
add_subdirectory(test)
|
||||
|
||||
endif()
|
||||
|
||||
14
appveyor.yml
14
appveyor.yml
@@ -22,19 +22,7 @@ environment:
|
||||
ADDRMD: 32,64
|
||||
|
||||
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017
|
||||
TOOLSET: msvc-14.1
|
||||
ADDRMD: 32,64
|
||||
CXXSTD: 14,17
|
||||
|
||||
# clang-win 32 bit fails to link with "unable to load mspdbcore.dll (error code: 126)"
|
||||
|
||||
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017
|
||||
TOOLSET: clang-win
|
||||
ADDRMD: 64
|
||||
CXXSTD: 14,17
|
||||
|
||||
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2019
|
||||
TOOLSET: msvc-14.2
|
||||
TOOLSET: msvc-14.1,clang-win
|
||||
ADDRMD: 32,64
|
||||
CXXSTD: 14,17
|
||||
|
||||
|
||||
@@ -55,7 +55,6 @@ criteria for inclusion is that the utility component be:
|
||||
[include noinit_adaptor.qbk]
|
||||
[include noncopyable.qbk]
|
||||
[include null_deleter.qbk]
|
||||
[include nvp.qbk]
|
||||
[include pointer_traits.qbk]
|
||||
[include quick_exit.qbk]
|
||||
[include ref.qbk]
|
||||
|
||||
@@ -97,8 +97,6 @@ public:
|
||||
T& get() noexcept;
|
||||
};
|
||||
|
||||
inline constexpr empty_init_t empty_init{ };
|
||||
|
||||
} /* boost */
|
||||
```
|
||||
|
||||
|
||||
@@ -49,7 +49,9 @@ When using `lightweight_test.hpp`, *do not forget* to
|
||||
|
||||
namespace boost
|
||||
{
|
||||
int report_errors();
|
||||
class test_report;
|
||||
int get_error_count();
|
||||
test_report report_errors();
|
||||
}
|
||||
``
|
||||
|
||||
@@ -212,10 +214,47 @@ nothing and `expr` is not evaluated.
|
||||
[section report_errors]
|
||||
|
||||
``
|
||||
int boost::report_errors()
|
||||
boost::test_report boost::report_errors()
|
||||
``
|
||||
|
||||
Return the error count from `main`.
|
||||
Returns the test report. The report can be converted to an `int` to be returned from `main`.
|
||||
|
||||
[endsect]
|
||||
|
||||
[section test_report]
|
||||
|
||||
``
|
||||
class test_report
|
||||
{
|
||||
public:
|
||||
int error_count() const noexcept;
|
||||
operator int() const noexcept;
|
||||
};
|
||||
``
|
||||
|
||||
Contains information about test results.
|
||||
|
||||
``
|
||||
int test_report::error_count() const noexcept;
|
||||
``
|
||||
|
||||
The method returns the number of failed checks.
|
||||
|
||||
``
|
||||
test_report::operator int() const noexcept;
|
||||
``
|
||||
|
||||
Returns 0 if there are no failed checks and 1 otherwise. This operator is suitable for obtaining result code to return from `main`.
|
||||
|
||||
[endsect]
|
||||
|
||||
[section get_error_count]
|
||||
|
||||
``
|
||||
int boost::get_error_count();
|
||||
``
|
||||
|
||||
Returns the number of failed checks.
|
||||
|
||||
[endsect]
|
||||
|
||||
|
||||
108
doc/nvp.qbk
108
doc/nvp.qbk
@@ -1,108 +0,0 @@
|
||||
[/
|
||||
Copyright 2019 Glen Joseph Fernandes
|
||||
(glenjofe@gmail.com)
|
||||
|
||||
Distributed under the Boost Software License, Version 1.0.
|
||||
(http://www.boost.org/LICENSE_1_0.txt)
|
||||
]
|
||||
|
||||
[section:nvp nvp]
|
||||
|
||||
[section Overview]
|
||||
|
||||
The header <boost/core/nvp.hpp> provides the class template `boost::nvp` that
|
||||
pairs a name (`const char*`) with the address of a value (`T*`). It is the new
|
||||
implementation of the NVP type previously provided by the Boost Serialization
|
||||
library. This type now lives in the Core library so that other Boost libraries
|
||||
can support named value serialization without taking a dependency on the
|
||||
Serialization library.
|
||||
|
||||
[endsect]
|
||||
|
||||
[section Examples]
|
||||
|
||||
The following snippet shows use in a member serialize function:
|
||||
|
||||
```
|
||||
template<class A>
|
||||
void serialize(A& archive, unsigned)
|
||||
{
|
||||
archive & boost::make_nvp("x", x_) & boost::make_nvp("y", y_);
|
||||
}
|
||||
```
|
||||
|
||||
[endsect]
|
||||
|
||||
[section Reference]
|
||||
|
||||
```
|
||||
namespace boost {
|
||||
|
||||
template<class T>
|
||||
class nvp {
|
||||
public:
|
||||
nvp(const char* name, T& value) noexcept;
|
||||
|
||||
const char* name() const noexcept;
|
||||
|
||||
T& value() const noexcept;
|
||||
|
||||
const T& const_value() const noexcept;
|
||||
};
|
||||
|
||||
template<class T>
|
||||
const nvp<T> make_nvp(const char* name, T& value) noexcept;
|
||||
|
||||
} /* boost */
|
||||
|
||||
#define BOOST_NVP(object) ``['see below]``
|
||||
```
|
||||
|
||||
[section Constructors]
|
||||
|
||||
[variablelist
|
||||
[[`nvp(const char* name, T& value) noexcept;`]
|
||||
[Initializes the stored name pointer with `name` and the value pointer with
|
||||
`addressof(value)`.]]]
|
||||
|
||||
[endsect]
|
||||
|
||||
[section Members]
|
||||
|
||||
[variablelist
|
||||
[[`const char* name() const noexcept;`]
|
||||
[Returns a pointer to the name.]]
|
||||
[[`T& value() const noexcept;`]
|
||||
[Returns a reference to the value.]]
|
||||
[[`const T& const_value() const noexcept;`]
|
||||
[Returns a reference to the value.]]]
|
||||
|
||||
[endsect]
|
||||
|
||||
[section Functions]
|
||||
|
||||
[variablelist
|
||||
[[`template<class T> const nvp<T> make_nvp(const char* name, T& value)
|
||||
noexcept;`]
|
||||
[Returns `nvp<T>(name, value)`.]]]
|
||||
|
||||
[endsect]
|
||||
|
||||
[section Macros]
|
||||
|
||||
[variablelist
|
||||
[[`#define BOOST_NVP(object) see below`]
|
||||
[Expands to `boost::make_nvp(BOOST_STRINGIZE(object), object)`.]]]
|
||||
|
||||
[endsect]
|
||||
|
||||
[endsect]
|
||||
|
||||
[section History]
|
||||
|
||||
Robert Ramey originally implemented NVP in the Serialization library. Glen
|
||||
Fernandes implemented this new (but compatible) version in the Core library.
|
||||
|
||||
[endsect]
|
||||
|
||||
[endsect]
|
||||
@@ -19,7 +19,7 @@ Distributed under the Boost Software License, Version 1.0.
|
||||
namespace boost {
|
||||
|
||||
#if defined(BOOST_NO_EXCEPTIONS)
|
||||
BOOST_NORETURN void throw_exception(const std::exception&);
|
||||
void throw_exception(const std::exception&);
|
||||
#endif
|
||||
|
||||
namespace default_ {
|
||||
|
||||
@@ -139,8 +139,6 @@ public:
|
||||
|
||||
using empty_::empty_value;
|
||||
|
||||
BOOST_INLINE_CONSTEXPR empty_init_t empty_init = empty_init_t();
|
||||
|
||||
} /* boost */
|
||||
|
||||
#endif
|
||||
|
||||
@@ -30,10 +30,6 @@
|
||||
#include <cstring>
|
||||
#include <cstddef>
|
||||
|
||||
#if defined(_MSC_VER) && defined(_CPPLIB_VER) && defined(_DEBUG)
|
||||
# include <crtdbg.h>
|
||||
#endif
|
||||
|
||||
// IDE's like Visual Studio perform better if output goes to std::cout or
|
||||
// some other stream, so allow user to configure output stream:
|
||||
#ifndef BOOST_LIGHTWEIGHT_TEST_OSTREAM
|
||||
@@ -52,13 +48,7 @@ public:
|
||||
: report_(false)
|
||||
, errors_(0) {
|
||||
#if defined(_MSC_VER) && (_MSC_VER > 1310)
|
||||
// disable message boxes on assert(), abort()
|
||||
::_set_abort_behavior(0, _WRITE_ABORT_MSG | _CALL_REPORTFAULT);
|
||||
#endif
|
||||
#if defined(_MSC_VER) && defined(_CPPLIB_VER) && defined(_DEBUG)
|
||||
// disable message boxes on iterator debugging violations
|
||||
_CrtSetReportMode( _CRT_ASSERT, _CRTDBG_MODE_FILE );
|
||||
_CrtSetReportFile( _CRT_ASSERT, _CRTDBG_FILE_STDERR );
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -93,21 +83,12 @@ inline int& test_errors()
|
||||
return test_results().errors();
|
||||
}
|
||||
|
||||
inline bool test_impl(char const * expr, char const * file, int line, char const * function, bool v)
|
||||
inline void test_failed_impl(char const * expr, char const * file, int line, char const * function)
|
||||
{
|
||||
if( v )
|
||||
{
|
||||
test_results();
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
BOOST_LIGHTWEIGHT_TEST_OSTREAM
|
||||
<< file << "(" << line << "): test '" << expr << "' failed in function '"
|
||||
<< function << "'" << std::endl;
|
||||
++test_results().errors();
|
||||
return false;
|
||||
}
|
||||
BOOST_LIGHTWEIGHT_TEST_OSTREAM
|
||||
<< file << "(" << line << "): test '" << expr << "' failed in function '"
|
||||
<< function << "'" << std::endl;
|
||||
++test_results().errors();
|
||||
}
|
||||
|
||||
inline void error_impl(char const * msg, char const * file, int line, char const * function)
|
||||
@@ -129,14 +110,14 @@ inline void throw_failed_impl(char const * excep, char const * file, int line, c
|
||||
// In the comparisons below, it is possible that T and U are signed and unsigned integer types, which generates warnings in some compilers.
|
||||
// A cleaner fix would require common_type trait or some meta-programming, which would introduce a dependency on Boost.TypeTraits. To avoid
|
||||
// the dependency we just disable the warnings.
|
||||
#if defined(__clang__) && defined(__has_warning)
|
||||
#if defined(_MSC_VER)
|
||||
# pragma warning(push)
|
||||
# pragma warning(disable: 4389)
|
||||
#elif defined(__clang__) && defined(__has_warning)
|
||||
# if __has_warning("-Wsign-compare")
|
||||
# pragma clang diagnostic push
|
||||
# pragma clang diagnostic ignored "-Wsign-compare"
|
||||
# endif
|
||||
#elif defined(_MSC_VER)
|
||||
# pragma warning(push)
|
||||
# pragma warning(disable: 4389)
|
||||
#elif defined(__GNUC__) && !(defined(__INTEL_COMPILER) || defined(__ICL) || defined(__ICC) || defined(__ECC)) && (__GNUC__ * 100 + __GNUC_MINOR__) >= 406
|
||||
# pragma GCC diagnostic push
|
||||
# pragma GCC diagnostic ignored "-Wsign-compare"
|
||||
@@ -193,14 +174,13 @@ struct lw_test_ge {
|
||||
};
|
||||
|
||||
template<class BinaryPredicate, class T, class U>
|
||||
inline bool test_with_impl(BinaryPredicate pred, char const * expr1, char const * expr2,
|
||||
inline void test_with_impl(BinaryPredicate pred, char const * expr1, char const * expr2,
|
||||
char const * file, int line, char const * function,
|
||||
T const & t, U const & u)
|
||||
{
|
||||
if( pred(t, u) )
|
||||
{
|
||||
test_results();
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -209,17 +189,15 @@ inline bool test_with_impl(BinaryPredicate pred, char const * expr1, char const
|
||||
<< "' ('" << test_output_impl(t) << "' " << pred.op() << " '" << test_output_impl(u)
|
||||
<< "') failed in function '" << function << "'" << std::endl;
|
||||
++test_results().errors();
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
inline bool test_cstr_eq_impl( char const * expr1, char const * expr2,
|
||||
inline void test_cstr_eq_impl( char const * expr1, char const * expr2,
|
||||
char const * file, int line, char const * function, char const * const t, char const * const u )
|
||||
{
|
||||
if( std::strcmp(t, u) == 0 )
|
||||
{
|
||||
test_results();
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -227,17 +205,15 @@ inline bool test_cstr_eq_impl( char const * expr1, char const * expr2,
|
||||
<< file << "(" << line << "): test '" << expr1 << " == " << expr2 << "' ('" << t
|
||||
<< "' == '" << u << "') failed in function '" << function << "'" << std::endl;
|
||||
++test_results().errors();
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
inline bool test_cstr_ne_impl( char const * expr1, char const * expr2,
|
||||
inline void test_cstr_ne_impl( char const * expr1, char const * expr2,
|
||||
char const * file, int line, char const * function, char const * const t, char const * const u )
|
||||
{
|
||||
if( std::strcmp(t, u) != 0 )
|
||||
{
|
||||
test_results();
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -245,12 +221,11 @@ inline bool test_cstr_ne_impl( char const * expr1, char const * expr2,
|
||||
<< file << "(" << line << "): test '" << expr1 << " != " << expr2 << "' ('" << t
|
||||
<< "' != '" << u << "') failed in function '" << function << "'" << std::endl;
|
||||
++test_results().errors();
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
template<class FormattedOutputFunction, class InputIterator1, class InputIterator2>
|
||||
bool test_all_eq_impl(FormattedOutputFunction& output,
|
||||
void test_all_eq_impl(FormattedOutputFunction& output,
|
||||
char const * file, int line, char const * function,
|
||||
InputIterator1 first_begin, InputIterator1 first_end,
|
||||
InputIterator2 second_begin, InputIterator2 second_end)
|
||||
@@ -309,18 +284,16 @@ bool test_all_eq_impl(FormattedOutputFunction& output,
|
||||
if (error_count == 0)
|
||||
{
|
||||
test_results();
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
output << std::endl;
|
||||
++test_results().errors();
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
template<class FormattedOutputFunction, class InputIterator1, class InputIterator2, typename BinaryPredicate>
|
||||
bool test_all_with_impl(FormattedOutputFunction& output,
|
||||
void test_all_with_impl(FormattedOutputFunction& output,
|
||||
char const * file, int line, char const * function,
|
||||
InputIterator1 first_begin, InputIterator1 first_end,
|
||||
InputIterator2 second_begin, InputIterator2 second_end,
|
||||
@@ -380,35 +353,83 @@ bool test_all_with_impl(FormattedOutputFunction& output,
|
||||
if (error_count == 0)
|
||||
{
|
||||
test_results();
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
output << std::endl;
|
||||
++test_results().errors();
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
#if defined(__clang__) && defined(__has_warning)
|
||||
#if defined(_MSC_VER)
|
||||
# pragma warning(pop)
|
||||
#elif defined(__clang__) && defined(__has_warning)
|
||||
# if __has_warning("-Wsign-compare")
|
||||
# pragma clang diagnostic pop
|
||||
# endif
|
||||
#elif defined(_MSC_VER)
|
||||
# pragma warning(pop)
|
||||
#elif defined(__GNUC__) && !(defined(__INTEL_COMPILER) || defined(__ICL) || defined(__ICC) || defined(__ECC)) && (__GNUC__ * 100 + __GNUC_MINOR__) >= 406
|
||||
# pragma GCC diagnostic pop
|
||||
#endif
|
||||
|
||||
} // namespace detail
|
||||
|
||||
inline int report_errors()
|
||||
//! Testing report
|
||||
class test_report
|
||||
{
|
||||
private:
|
||||
int m_error_count;
|
||||
|
||||
public:
|
||||
explicit test_report(int error_count) BOOST_NOEXCEPT :
|
||||
m_error_count(error_count)
|
||||
{
|
||||
}
|
||||
|
||||
//! Returns the number of test errors
|
||||
int error_count() const BOOST_NOEXCEPT { return m_error_count; }
|
||||
|
||||
//! Operator for converting to result of main()
|
||||
operator int () const BOOST_NOEXCEPT { return m_error_count > 0 ? 1 : 0; }
|
||||
|
||||
// Protection against comparing report_errors() with the number of errors. Earlier versions of report_errors() did not return
|
||||
// the number of errors, so such comparisons used to give a wrong result and now cause a hard compile time error.
|
||||
// Call report_errors().error_count() if you need to check the error count, but make sure you return the correct value from main().
|
||||
BOOST_DELETED_FUNCTION(bool operator== (int))
|
||||
BOOST_DELETED_FUNCTION(bool operator!= (int))
|
||||
BOOST_DELETED_FUNCTION(bool operator< (int))
|
||||
BOOST_DELETED_FUNCTION(bool operator> (int))
|
||||
BOOST_DELETED_FUNCTION(bool operator>= (int))
|
||||
BOOST_DELETED_FUNCTION(bool operator<= (int))
|
||||
};
|
||||
|
||||
#if !defined(BOOST_NO_CXX11_DELETED_FUNCTIONS)
|
||||
#define BOOST_LIGHTWEIGHT_TEST_DELETED_FUNCTION_MARK = delete
|
||||
#else
|
||||
#define BOOST_LIGHTWEIGHT_TEST_DELETED_FUNCTION_MARK
|
||||
#endif
|
||||
|
||||
bool operator== (int, test_report const&) BOOST_LIGHTWEIGHT_TEST_DELETED_FUNCTION_MARK;
|
||||
bool operator!= (int, test_report const&) BOOST_LIGHTWEIGHT_TEST_DELETED_FUNCTION_MARK;
|
||||
bool operator< (int, test_report const&) BOOST_LIGHTWEIGHT_TEST_DELETED_FUNCTION_MARK;
|
||||
bool operator> (int, test_report const&) BOOST_LIGHTWEIGHT_TEST_DELETED_FUNCTION_MARK;
|
||||
bool operator<= (int, test_report const&) BOOST_LIGHTWEIGHT_TEST_DELETED_FUNCTION_MARK;
|
||||
bool operator>= (int, test_report const&) BOOST_LIGHTWEIGHT_TEST_DELETED_FUNCTION_MARK;
|
||||
|
||||
#undef BOOST_LIGHTWEIGHT_TEST_DELETED_FUNCTION_MARK
|
||||
|
||||
//! Returns the number of test errors encountered
|
||||
inline int get_error_count() BOOST_NOEXCEPT
|
||||
{
|
||||
return boost::detail::test_results().errors();
|
||||
}
|
||||
|
||||
//! Prints the number of test errors and returns test report suitable for returning from main()
|
||||
inline test_report report_errors()
|
||||
{
|
||||
boost::detail::test_result& result = boost::detail::test_results();
|
||||
result.done();
|
||||
|
||||
int errors = result.errors();
|
||||
|
||||
if( errors == 0 )
|
||||
{
|
||||
BOOST_LIGHTWEIGHT_TEST_OSTREAM
|
||||
@@ -420,13 +441,12 @@ inline int report_errors()
|
||||
<< errors << " error" << (errors == 1? "": "s") << " detected." << std::endl;
|
||||
}
|
||||
|
||||
// `return report_errors();` from main only supports 8 bit exit codes
|
||||
return errors < 256? errors: 255;
|
||||
return test_report(errors);
|
||||
}
|
||||
|
||||
} // namespace boost
|
||||
|
||||
#define BOOST_TEST(expr) ( ::boost::detail::test_impl(#expr, __FILE__, __LINE__, BOOST_CURRENT_FUNCTION, (expr)? true: false) )
|
||||
#define BOOST_TEST(expr) ((expr)? (void)::boost::detail::test_results(): ::boost::detail::test_failed_impl(#expr, __FILE__, __LINE__, BOOST_CURRENT_FUNCTION))
|
||||
#define BOOST_TEST_NOT(expr) BOOST_TEST(!(expr))
|
||||
|
||||
#define BOOST_ERROR(msg) ( ::boost::detail::error_impl(msg, __FILE__, __LINE__, BOOST_CURRENT_FUNCTION) )
|
||||
|
||||
@@ -1,57 +0,0 @@
|
||||
/*
|
||||
Copyright 2019 Glen Joseph Fernandes
|
||||
(glenjofe@gmail.com)
|
||||
|
||||
Distributed under the Boost Software License, Version 1.0.
|
||||
(http://www.boost.org/LICENSE_1_0.txt)
|
||||
*/
|
||||
#ifndef BOOST_CORE_NVP_HPP
|
||||
#define BOOST_CORE_NVP_HPP
|
||||
|
||||
#include <boost/core/addressof.hpp>
|
||||
#include <boost/config.hpp>
|
||||
|
||||
namespace boost {
|
||||
namespace serialization {
|
||||
|
||||
template<class T>
|
||||
class nvp {
|
||||
public:
|
||||
nvp(const char* n, T& v) BOOST_NOEXCEPT
|
||||
: n_(n)
|
||||
, v_(boost::addressof(v)) { }
|
||||
|
||||
const char* name() const BOOST_NOEXCEPT {
|
||||
return n_;
|
||||
}
|
||||
|
||||
T& value() const BOOST_NOEXCEPT {
|
||||
return *v_;
|
||||
}
|
||||
|
||||
const T& const_value() const BOOST_NOEXCEPT {
|
||||
return *v_;
|
||||
}
|
||||
|
||||
private:
|
||||
const char* n_;
|
||||
T* v_;
|
||||
};
|
||||
|
||||
template<class T>
|
||||
inline const nvp<T>
|
||||
make_nvp(const char* n, T& v) BOOST_NOEXCEPT
|
||||
{
|
||||
return nvp<T>(n, v);
|
||||
}
|
||||
|
||||
} /* serialization */
|
||||
|
||||
using serialization::nvp;
|
||||
using serialization::make_nvp;
|
||||
|
||||
} /* boost */
|
||||
|
||||
#define BOOST_NVP(v) boost::make_nvp(BOOST_STRINGIZE(v), v)
|
||||
|
||||
#endif
|
||||
@@ -13,7 +13,6 @@ Distributed under the Boost Software License, Version 1.0.
|
||||
#include <memory>
|
||||
#else
|
||||
#include <boost/core/addressof.hpp>
|
||||
#include <cstddef>
|
||||
#endif
|
||||
|
||||
namespace boost {
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
// http://www.boost.org/LICENSE_1_0.txt)
|
||||
|
||||
#include <boost/config.hpp>
|
||||
#include <stdlib.h>
|
||||
#include <cstdlib>
|
||||
|
||||
#if defined(__MINGW32__) && !defined(__MINGW64_VERSION_MAJOR)
|
||||
|
||||
|
||||
@@ -23,11 +23,8 @@
|
||||
|
||||
#include <boost/core/enable_if.hpp>
|
||||
#include <boost/config.hpp>
|
||||
#if __cplusplus >= 201103L || defined(BOOST_MSVC)
|
||||
#include <utility> //for std::swap (C++11)
|
||||
#else
|
||||
#include <algorithm> //for std::swap (C++98)
|
||||
#endif
|
||||
#include <cstddef> //for std::size_t
|
||||
|
||||
namespace boost_swap_impl
|
||||
|
||||
@@ -1,13 +0,0 @@
|
||||
# Copyright 2018, 2019 Peter Dimov
|
||||
# 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(BoostTestJamfile OPTIONAL RESULT_VARIABLE HAVE_BOOST_TEST)
|
||||
|
||||
if(HAVE_BOOST_TEST)
|
||||
|
||||
boost_test_jamfile(FILE Jamfile.v2 LINK_LIBRARIES Boost::core Boost::static_assert Boost::type_traits Boost::throw_exception)
|
||||
|
||||
endif()
|
||||
|
||||
add_subdirectory(swap)
|
||||
@@ -55,12 +55,10 @@ compile-fail explicit_operator_bool_compile_fail_conv_pvoid.cpp ;
|
||||
compile-fail explicit_operator_bool_compile_fail_delete.cpp ;
|
||||
compile-fail explicit_operator_bool_compile_fail_shift.cpp ;
|
||||
|
||||
compile ignore_unused_test.cpp
|
||||
: <warnings>extra
|
||||
<toolset>gcc:<warnings-as-errors>on
|
||||
<toolset>clang:<warnings-as-errors>on
|
||||
<toolset>msvc:<warnings-as-errors>on ;
|
||||
|
||||
compile ignore_unused_test.cpp : <toolset>gcc-4.8:<cxxflags>"-Wunused-variable -Wunused-local-typedefs -Werror"
|
||||
<toolset>gcc:<cxxflags>"-Wunused-variable -Werror"
|
||||
<toolset>clang:<cxxflags>"-Wunused-variable -Werror"
|
||||
<toolset>msvc:<cxxflags>"/we4100 /we4101" ;
|
||||
run sp_typeinfo_test.cpp ;
|
||||
run sp_typeinfo_test.cpp : : : <rtti>off : sp_typeinfo_test_no_rtti ;
|
||||
|
||||
@@ -77,16 +75,10 @@ run lightweight_test_gt_ge_test.cpp ;
|
||||
run lightweight_test_eq_nullptr.cpp ;
|
||||
run lightweight_test_test3.cpp ;
|
||||
run lightweight_test_test4.cpp ;
|
||||
run lightweight_test_test5.cpp
|
||||
: : :
|
||||
<warnings>extra
|
||||
<toolset>msvc:<warnings-as-errors>on
|
||||
<toolset>gcc:<warnings-as-errors>on
|
||||
<toolset>clang:<warnings-as-errors>on
|
||||
<toolset>gcc-4.4.7:<cxxflags>-Wno-sign-compare ;
|
||||
run lightweight_test_test5.cpp ;
|
||||
|
||||
run-fail lightweight_test_all_eq_test.cpp ;
|
||||
run-fail lightweight_test_all_with_fail.cpp ;
|
||||
run lightweight_test_all_eq_test.cpp ;
|
||||
run lightweight_test_all_with_fail.cpp ;
|
||||
|
||||
run-fail lightweight_test_fail.cpp ;
|
||||
run-fail lightweight_test_fail2.cpp ;
|
||||
@@ -100,15 +92,12 @@ run-fail lightweight_test_fail8.cpp ;
|
||||
run-fail lightweight_test_fail8.cpp : : : <rtti>off : lightweight_test_fail8_no_rtti ;
|
||||
run-fail lightweight_test_fail9.cpp ;
|
||||
run-fail lightweight_test_fail10.cpp ;
|
||||
run-fail lightweight_test_fail11.cpp : ;
|
||||
run-fail lightweight_test_fail12.cpp ;
|
||||
run-fail lightweight_test_fail11.cpp ;
|
||||
run-fail lightweight_test_lt_fail.cpp ;
|
||||
run-fail lightweight_test_le_fail.cpp ;
|
||||
run-fail lightweight_test_gt_fail.cpp ;
|
||||
run-fail lightweight_test_ge_fail.cpp ;
|
||||
|
||||
run lightweight_test_bool.cpp ;
|
||||
|
||||
run is_same_test.cpp ;
|
||||
|
||||
run typeinfo_test.cpp ;
|
||||
@@ -117,12 +106,9 @@ run typeinfo_test.cpp : : : <rtti>off : typeinfo_test_no_rtti ;
|
||||
run iterator_test.cpp ;
|
||||
run detail_iterator_test.cpp ;
|
||||
|
||||
run demangle_test.cpp
|
||||
: : : <test-info>always_show_run_output ;
|
||||
|
||||
run demangled_name_test.cpp
|
||||
: : : <test-info>always_show_run_output ;
|
||||
run demangle_test.cpp : : : <test-info>always_show_run_output ;
|
||||
|
||||
run demangled_name_test.cpp : : : <test-info>always_show_run_output ;
|
||||
run demangled_name_test.cpp : : : <rtti>off <test-info>always_show_run_output : demangled_name_test_no_rtti ;
|
||||
|
||||
run scoped_enum.cpp ;
|
||||
@@ -159,8 +145,6 @@ run alloc_construct_test.cpp ;
|
||||
run alloc_construct_throws_test.cpp ;
|
||||
run alloc_construct_cxx11_test.cpp ;
|
||||
|
||||
run nvp_test.cpp ;
|
||||
|
||||
lib lib_typeid : lib_typeid.cpp : <link>shared:<define>LIB_TYPEID_DYN_LINK=1 ;
|
||||
|
||||
run test_lib_typeid.cpp lib_typeid : : : <link>shared : test_lib_typeid_shared ;
|
||||
@@ -169,10 +153,8 @@ run test_lib_typeid.cpp lib_typeid : : : <link>static : test_lib_typeid_static ;
|
||||
run test_lib_typeid.cpp lib_typeid : : : <link>shared <rtti>off : test_lib_typeid_shared_no_rtti ;
|
||||
run test_lib_typeid.cpp lib_typeid : : : <link>static <rtti>off : test_lib_typeid_static_no_rtti ;
|
||||
|
||||
run uncaught_exceptions.cpp
|
||||
: : : <exception-handling>on ;
|
||||
run uncaught_exceptions_np.cpp
|
||||
: : : <exception-handling>on ;
|
||||
run uncaught_exceptions.cpp : : : <exception-handling>on ;
|
||||
run uncaught_exceptions_np.cpp : : : <exception-handling>on ;
|
||||
|
||||
run no_exceptions_support_test.cpp ;
|
||||
run no_exceptions_support_test.cpp : : : <exception-handling>off : no_exceptions_support_test_nx ;
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
// http://www.boost.org/LICENSE_1_0.txt
|
||||
|
||||
#include <boost/utility/addressof.hpp>
|
||||
#include <boost/core/lightweight_test.hpp>
|
||||
#include <boost/detail/lightweight_test.hpp>
|
||||
|
||||
|
||||
void f0()
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
//
|
||||
|
||||
#include <boost/utility/addressof.hpp>
|
||||
#include <boost/core/lightweight_test.hpp>
|
||||
#include <boost/detail/lightweight_test.hpp>
|
||||
#include <cstddef>
|
||||
|
||||
#if defined( BOOST_NO_CXX11_NULLPTR )
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
#pragma warning(pop)
|
||||
#endif
|
||||
|
||||
#include <boost/core/lightweight_test.hpp>
|
||||
#include <boost/detail/lightweight_test.hpp>
|
||||
|
||||
template<class T> void scalar_test( T * = 0 )
|
||||
{
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
#pragma warning(pop)
|
||||
#endif
|
||||
|
||||
#include <boost/core/lightweight_test.hpp>
|
||||
#include <boost/detail/lightweight_test.hpp>
|
||||
|
||||
template<class T> void scalar_test( T * = 0 )
|
||||
{
|
||||
|
||||
@@ -1,17 +0,0 @@
|
||||
# Copyright 2018, 2019 Peter Dimov
|
||||
# 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
|
||||
|
||||
cmake_minimum_required(VERSION 3.5...3.16)
|
||||
|
||||
project(cmake_install_test LANGUAGES CXX)
|
||||
|
||||
find_package(boost_core REQUIRED)
|
||||
|
||||
add_executable(quick ../quick.cpp)
|
||||
target_link_libraries(quick Boost::core)
|
||||
|
||||
enable_testing()
|
||||
add_test(quick quick)
|
||||
|
||||
add_custom_target(check COMMAND ${CMAKE_CTEST_COMMAND} --output-on-failure -C $<CONFIG>)
|
||||
@@ -2,7 +2,7 @@
|
||||
# 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
|
||||
|
||||
cmake_minimum_required(VERSION 3.5...3.16)
|
||||
cmake_minimum_required(VERSION 3.5)
|
||||
|
||||
project(cmake_subdir_test LANGUAGES CXX)
|
||||
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
|
||||
#include <boost/utility/enable_if.hpp>
|
||||
#include <boost/type_traits.hpp>
|
||||
#include <boost/core/lightweight_test.hpp>
|
||||
#include <boost/detail/lightweight_test.hpp>
|
||||
|
||||
using boost::enable_if;
|
||||
using boost::disable_if;
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
|
||||
#include <boost/utility/enable_if.hpp>
|
||||
#include <boost/type_traits/is_arithmetic.hpp>
|
||||
#include <boost/core/lightweight_test.hpp>
|
||||
#include <boost/detail/lightweight_test.hpp>
|
||||
|
||||
using boost::enable_if;
|
||||
using boost::disable_if;
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
|
||||
#include <boost/utility/enable_if.hpp>
|
||||
#include <boost/type_traits/is_same.hpp>
|
||||
#include <boost/core/lightweight_test.hpp>
|
||||
#include <boost/detail/lightweight_test.hpp>
|
||||
|
||||
using boost::enable_if_c;
|
||||
using boost::lazy_enable_if_c;
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
|
||||
#include <boost/utility/enable_if.hpp>
|
||||
#include <boost/type_traits/is_same.hpp>
|
||||
#include <boost/core/lightweight_test.hpp>
|
||||
#include <boost/detail/lightweight_test.hpp>
|
||||
|
||||
using boost::lazy_enable_if;
|
||||
using boost::lazy_disable_if;
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
|
||||
#include <boost/utility/enable_if.hpp>
|
||||
#include <boost/type_traits/is_arithmetic.hpp>
|
||||
#include <boost/core/lightweight_test.hpp>
|
||||
#include <boost/detail/lightweight_test.hpp>
|
||||
|
||||
using boost::enable_if;
|
||||
using boost::disable_if;
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
#include <boost/config.hpp>
|
||||
#include <boost/utility/enable_if.hpp>
|
||||
#include <boost/type_traits/is_arithmetic.hpp>
|
||||
#include <boost/core/lightweight_test.hpp>
|
||||
#include <boost/detail/lightweight_test.hpp>
|
||||
|
||||
using boost::enable_if;
|
||||
using boost::is_arithmetic;
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
#include <boost/config.hpp>
|
||||
#include <boost/utility/enable_if.hpp>
|
||||
#include <boost/type_traits/is_arithmetic.hpp>
|
||||
#include <boost/core/lightweight_test.hpp>
|
||||
#include <boost/detail/lightweight_test.hpp>
|
||||
|
||||
using boost::enable_if;
|
||||
using boost::is_arithmetic;
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
|
||||
#include <boost/utility/enable_if.hpp>
|
||||
#include <boost/type_traits/is_arithmetic.hpp>
|
||||
#include <boost/core/lightweight_test.hpp>
|
||||
#include <boost/detail/lightweight_test.hpp>
|
||||
|
||||
using boost::enable_if_has_type;
|
||||
using boost::enable_if_c;
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
|
||||
#if !defined(BOOST_NO_CXX11_NOEXCEPT)
|
||||
|
||||
#include <boost/core/lightweight_test.hpp>
|
||||
#include <boost/detail/lightweight_test.hpp>
|
||||
#include <boost/utility/explicit_operator_bool.hpp>
|
||||
|
||||
namespace {
|
||||
|
||||
@@ -120,5 +120,5 @@ int main()
|
||||
++test_cases;
|
||||
}
|
||||
|
||||
return boost::report_errors() == test_cases;
|
||||
return boost::report_errors().error_count() == test_cases ? 0 : 1;
|
||||
}
|
||||
|
||||
@@ -101,5 +101,5 @@ int main()
|
||||
test_cases += fail_vector();
|
||||
test_cases += fail_tolerance_predicate();
|
||||
|
||||
return boost::report_errors() == test_cases;
|
||||
return boost::report_errors().error_count() == test_cases ? 0 : 1;
|
||||
}
|
||||
|
||||
@@ -1,63 +0,0 @@
|
||||
// Copyright 2020 Peter Dimov
|
||||
// Distributed under the Boost Software License, Version 1.0.
|
||||
// https://www.boost.org/LICENSE_1_0.txt
|
||||
|
||||
#include <boost/core/lightweight_test.hpp>
|
||||
#include <vector>
|
||||
|
||||
int main()
|
||||
{
|
||||
BOOST_TEST( BOOST_TEST( true ) );
|
||||
BOOST_TEST_NOT( BOOST_TEST( false ) );
|
||||
|
||||
BOOST_TEST( BOOST_TEST_NOT( false ) );
|
||||
BOOST_TEST_NOT( BOOST_TEST_NOT( true ) );
|
||||
|
||||
BOOST_TEST( BOOST_TEST_EQ( 1, 1 ) );
|
||||
BOOST_TEST_NOT( BOOST_TEST_EQ( 1, 2 ) );
|
||||
|
||||
BOOST_TEST( BOOST_TEST_NE( 1, 2 ) );
|
||||
BOOST_TEST_NOT( BOOST_TEST_NE( 1, 1 ) );
|
||||
|
||||
BOOST_TEST( BOOST_TEST_LT( 1, 2 ) );
|
||||
BOOST_TEST_NOT( BOOST_TEST_LT( 1, 1 ) );
|
||||
|
||||
BOOST_TEST( BOOST_TEST_LE( 1, 1 ) );
|
||||
BOOST_TEST_NOT( BOOST_TEST_LE( 2, 1 ) );
|
||||
|
||||
BOOST_TEST( BOOST_TEST_GT( 2, 1 ) );
|
||||
BOOST_TEST_NOT( BOOST_TEST_GT( 1, 1 ) );
|
||||
|
||||
BOOST_TEST( BOOST_TEST_GE( 1, 1 ) );
|
||||
BOOST_TEST_NOT( BOOST_TEST_GE( 1, 2 ) );
|
||||
|
||||
BOOST_TEST( BOOST_TEST_CSTR_EQ( "1", "1" ) );
|
||||
BOOST_TEST_NOT( BOOST_TEST_CSTR_EQ( "1", "2" ) );
|
||||
|
||||
BOOST_TEST( BOOST_TEST_CSTR_NE( "1", "2" ) );
|
||||
BOOST_TEST_NOT( BOOST_TEST_CSTR_NE( "1", "1" ) );
|
||||
|
||||
std::vector<int> v1;
|
||||
v1.push_back( 1 );
|
||||
|
||||
std::vector<int> v2;
|
||||
|
||||
BOOST_TEST( BOOST_TEST_ALL_EQ(v1.begin(), v1.end(), v1.begin(), v1.end()) );
|
||||
BOOST_TEST_NOT( BOOST_TEST_ALL_EQ(v1.begin(), v1.end(), v2.begin(), v2.end()) );
|
||||
|
||||
BOOST_TEST( BOOST_TEST_ALL_WITH(v1.begin(), v1.end(), v1.begin(), v1.end(), boost::detail::lw_test_eq()) );
|
||||
BOOST_TEST_NOT( BOOST_TEST_ALL_WITH(v1.begin(), v1.end(), v2.begin(), v2.end(), boost::detail::lw_test_eq()) );
|
||||
|
||||
int const * p = 0;
|
||||
|
||||
BOOST_TEST( p == 0 ) || BOOST_TEST_EQ( *p, 0 );
|
||||
BOOST_TEST( p != 0 ) && BOOST_TEST_EQ( *p, 0 );
|
||||
|
||||
int x = 0;
|
||||
p = &x;
|
||||
|
||||
BOOST_TEST( p == 0 ) || BOOST_TEST_EQ( *p, 0 );
|
||||
BOOST_TEST( p != 0 ) && BOOST_TEST_EQ( *p, 0 );
|
||||
|
||||
return boost::report_errors() == 14? 0: 1;
|
||||
}
|
||||
@@ -8,7 +8,7 @@
|
||||
// http://www.boost.org/LICENSE_1_0.txt
|
||||
//
|
||||
|
||||
#include <boost/core/lightweight_test.hpp>
|
||||
#include <boost/detail/lightweight_test.hpp>
|
||||
|
||||
int main()
|
||||
{
|
||||
|
||||
@@ -1,68 +0,0 @@
|
||||
//
|
||||
// Negative test for BOOST_TEST_TRAIT_SAME
|
||||
//
|
||||
// Copyright 2014, 2019 Peter Dimov
|
||||
//
|
||||
// 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 <boost/core/lightweight_test_trait.hpp>
|
||||
#include <boost/config.hpp>
|
||||
|
||||
struct X
|
||||
{
|
||||
typedef int type;
|
||||
};
|
||||
|
||||
template<class T1, class T2> struct Y
|
||||
{
|
||||
typedef T1 type;
|
||||
};
|
||||
|
||||
typedef int I1;
|
||||
typedef const int I2;
|
||||
typedef volatile int I3;
|
||||
typedef const volatile int I4;
|
||||
typedef int& I5;
|
||||
typedef const int& I6;
|
||||
typedef volatile int& I7;
|
||||
typedef const volatile int& I8;
|
||||
#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
|
||||
typedef int&& I9;
|
||||
typedef const int&& I10;
|
||||
typedef volatile int&& I11;
|
||||
typedef const volatile int&& I12;
|
||||
#endif
|
||||
|
||||
int main()
|
||||
{
|
||||
BOOST_TEST_TRAIT_SAME(char[1], char[2]);
|
||||
BOOST_TEST_TRAIT_SAME(char[1], char[]);
|
||||
BOOST_TEST_TRAIT_SAME(char[1], char*);
|
||||
BOOST_TEST_TRAIT_SAME(void(), void(int));
|
||||
BOOST_TEST_TRAIT_SAME(void(), void(*)());
|
||||
BOOST_TEST_TRAIT_SAME(X, void);
|
||||
BOOST_TEST_TRAIT_SAME(X::type, void);
|
||||
BOOST_TEST_TRAIT_SAME(X, Y<void, void>);
|
||||
BOOST_TEST_TRAIT_SAME(X::type, Y<float, int>::type);
|
||||
BOOST_TEST_TRAIT_SAME(Y<int, float>, Y<int, double>);
|
||||
BOOST_TEST_TRAIT_SAME(I1, I2);
|
||||
BOOST_TEST_TRAIT_SAME(I3, I4);
|
||||
BOOST_TEST_TRAIT_SAME(I5, I6);
|
||||
BOOST_TEST_TRAIT_SAME(I7, I8);
|
||||
|
||||
int expected = 14;
|
||||
|
||||
#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
|
||||
|
||||
BOOST_TEST_TRAIT_SAME(I9, I10);
|
||||
BOOST_TEST_TRAIT_SAME(I11, I12);
|
||||
|
||||
expected += 2;
|
||||
|
||||
#endif
|
||||
|
||||
return boost::report_errors() == expected;
|
||||
}
|
||||
@@ -8,7 +8,7 @@
|
||||
// http://www.boost.org/LICENSE_1_0.txt
|
||||
//
|
||||
|
||||
#include <boost/core/lightweight_test.hpp>
|
||||
#include <boost/detail/lightweight_test.hpp>
|
||||
|
||||
int main()
|
||||
{
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
// http://www.boost.org/LICENSE_1_0.txt
|
||||
//
|
||||
|
||||
#include <boost/core/lightweight_test.hpp>
|
||||
#include <boost/detail/lightweight_test.hpp>
|
||||
|
||||
int main()
|
||||
{
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
// http://www.boost.org/LICENSE_1_0.txt
|
||||
//
|
||||
|
||||
#include <boost/core/lightweight_test.hpp>
|
||||
#include <boost/detail/lightweight_test.hpp>
|
||||
|
||||
int main()
|
||||
{
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
// http://www.boost.org/LICENSE_1_0.txt
|
||||
//
|
||||
|
||||
#include <boost/core/lightweight_test.hpp>
|
||||
#include <boost/detail/lightweight_test.hpp>
|
||||
|
||||
struct X
|
||||
{
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
// http://www.boost.org/LICENSE_1_0.txt
|
||||
//
|
||||
|
||||
#include <boost/core/lightweight_test.hpp>
|
||||
#include <boost/detail/lightweight_test.hpp>
|
||||
|
||||
struct X
|
||||
{
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
//
|
||||
|
||||
#include <vector>
|
||||
#include <boost/core/lightweight_test.hpp>
|
||||
#include <boost/detail/lightweight_test.hpp>
|
||||
|
||||
struct X
|
||||
{
|
||||
|
||||
@@ -1,19 +1,68 @@
|
||||
//
|
||||
// Test that BOOST_TEST_EQ doesn't emit sign compare warnings
|
||||
// Negative test for BOOST_TEST_TRAIT_SAME
|
||||
//
|
||||
// Copyright 2019 Peter Dimov
|
||||
// Copyright 2014, 2019 Peter Dimov
|
||||
//
|
||||
// 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 <boost/core/lightweight_test.hpp>
|
||||
#include <boost/core/lightweight_test_trait.hpp>
|
||||
#include <boost/config.hpp>
|
||||
|
||||
struct X
|
||||
{
|
||||
typedef int type;
|
||||
};
|
||||
|
||||
template<class T1, class T2> struct Y
|
||||
{
|
||||
typedef T1 type;
|
||||
};
|
||||
|
||||
typedef int I1;
|
||||
typedef const int I2;
|
||||
typedef volatile int I3;
|
||||
typedef const volatile int I4;
|
||||
typedef int& I5;
|
||||
typedef const int& I6;
|
||||
typedef volatile int& I7;
|
||||
typedef const volatile int& I8;
|
||||
#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
|
||||
typedef int&& I9;
|
||||
typedef const int&& I10;
|
||||
typedef volatile int&& I11;
|
||||
typedef const volatile int&& I12;
|
||||
#endif
|
||||
|
||||
int main()
|
||||
{
|
||||
BOOST_TEST_EQ(1, 1u);
|
||||
BOOST_TEST_EQ(~0u, -1);
|
||||
BOOST_TEST_TRAIT_SAME(char[1], char[2]);
|
||||
BOOST_TEST_TRAIT_SAME(char[1], char[]);
|
||||
BOOST_TEST_TRAIT_SAME(char[1], char*);
|
||||
BOOST_TEST_TRAIT_SAME(void(), void(int));
|
||||
BOOST_TEST_TRAIT_SAME(void(), void(*)());
|
||||
BOOST_TEST_TRAIT_SAME(X, void);
|
||||
BOOST_TEST_TRAIT_SAME(X::type, void);
|
||||
BOOST_TEST_TRAIT_SAME(X, Y<void, void>);
|
||||
BOOST_TEST_TRAIT_SAME(X::type, Y<float, int>::type);
|
||||
BOOST_TEST_TRAIT_SAME(Y<int, float>, Y<int, double>);
|
||||
BOOST_TEST_TRAIT_SAME(I1, I2);
|
||||
BOOST_TEST_TRAIT_SAME(I3, I4);
|
||||
BOOST_TEST_TRAIT_SAME(I5, I6);
|
||||
BOOST_TEST_TRAIT_SAME(I7, I8);
|
||||
|
||||
return boost::report_errors();
|
||||
int expected = 14;
|
||||
|
||||
#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
|
||||
|
||||
BOOST_TEST_TRAIT_SAME(I9, I10);
|
||||
BOOST_TEST_TRAIT_SAME(I11, I12);
|
||||
|
||||
expected += 2;
|
||||
|
||||
#endif
|
||||
|
||||
return boost::report_errors().error_count() == expected ? 0 : 1;
|
||||
}
|
||||
|
||||
@@ -1,46 +0,0 @@
|
||||
/*
|
||||
Copyright 2019 Glen Joseph Fernandes
|
||||
(glenjofe@gmail.com)
|
||||
|
||||
Distributed under the Boost Software License, Version 1.0.
|
||||
(http://www.boost.org/LICENSE_1_0.txt)
|
||||
*/
|
||||
#include <boost/core/nvp.hpp>
|
||||
#include <boost/core/lightweight_test.hpp>
|
||||
|
||||
void test()
|
||||
{
|
||||
const char* n = "name";
|
||||
int v = 1;
|
||||
boost::nvp<int> p(n, v);
|
||||
BOOST_TEST_EQ(p.name(), n);
|
||||
BOOST_TEST_EQ(p.value(), 1);
|
||||
BOOST_TEST_EQ(&p.value(), &v);
|
||||
}
|
||||
|
||||
void test_factory()
|
||||
{
|
||||
const char* n = "name";
|
||||
int v = 1;
|
||||
boost::nvp<int> p = boost::make_nvp(n, v);
|
||||
BOOST_TEST_EQ(p.name(), n);
|
||||
BOOST_TEST_EQ(p.value(), 1);
|
||||
BOOST_TEST_EQ(&p.value(), &v);
|
||||
}
|
||||
|
||||
void test_macro()
|
||||
{
|
||||
int v = 1;
|
||||
boost::nvp<int> p = BOOST_NVP(v);
|
||||
BOOST_TEST_CSTR_EQ(p.name(), "v");
|
||||
BOOST_TEST_EQ(p.value(), 1);
|
||||
BOOST_TEST_EQ(&p.value(), &v);
|
||||
}
|
||||
|
||||
int main()
|
||||
{
|
||||
test();
|
||||
test_factory();
|
||||
test_macro();
|
||||
return boost::report_errors();
|
||||
}
|
||||
@@ -9,7 +9,7 @@
|
||||
#include <boost/ref.hpp>
|
||||
#include <boost/core/is_same.hpp>
|
||||
#include <boost/static_assert.hpp>
|
||||
#include <boost/config/workaround.hpp>
|
||||
#include <boost/detail/workaround.hpp>
|
||||
|
||||
namespace {
|
||||
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
// http://www.boost.org/LICENSE_1_0.txt
|
||||
|
||||
#include <boost/ref.hpp>
|
||||
#include <boost/core/lightweight_test.hpp>
|
||||
#include <boost/detail/lightweight_test.hpp>
|
||||
|
||||
|
||||
void f0()
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
// see 'ref_ct_test.cpp' for compile-time part
|
||||
|
||||
#include <boost/ref.hpp>
|
||||
#include <boost/core/lightweight_test.hpp>
|
||||
#include <boost/detail/lightweight_test.hpp>
|
||||
|
||||
namespace {
|
||||
using namespace boost;
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
#define BOOST_ALLOW_DEPRECATED_HEADERS
|
||||
|
||||
#include <boost/detail/sp_typeinfo.hpp>
|
||||
#include <boost/core/lightweight_test.hpp>
|
||||
#include <boost/detail/lightweight_test.hpp>
|
||||
#include <iostream>
|
||||
|
||||
int main()
|
||||
|
||||
@@ -1,11 +0,0 @@
|
||||
# Copyright 2018, 2019 Peter Dimov
|
||||
# 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(BoostTestJamfile OPTIONAL RESULT_VARIABLE HAVE_BOOST_TEST)
|
||||
|
||||
if(HAVE_BOOST_TEST)
|
||||
|
||||
boost_test_jamfile(FILE Jamfile.v2 LINK_LIBRARIES Boost::core)
|
||||
|
||||
endif()
|
||||
@@ -7,31 +7,65 @@
|
||||
# bring in rules for testing
|
||||
import testing ;
|
||||
|
||||
compile swap_root_header_1.cpp ;
|
||||
compile swap_root_header_2.cpp ;
|
||||
compile swap_lib_header_1.cpp ;
|
||||
compile swap_lib_header_2.cpp ;
|
||||
compile swap_mixed_headers_1.cpp ;
|
||||
compile swap_mixed_headers_2.cpp ;
|
||||
local compile_tests =
|
||||
root_header_1.cpp
|
||||
root_header_2.cpp
|
||||
lib_header_1.cpp
|
||||
lib_header_2.cpp
|
||||
mixed_headers_1.cpp
|
||||
mixed_headers_2.cpp
|
||||
;
|
||||
|
||||
compile-fail swap_const_wrapper_fail.cpp ;
|
||||
local compile_fail_tests =
|
||||
const_wrapper_fail.cpp ;
|
||||
|
||||
run swap_primitive.cpp ;
|
||||
run swap_specialized_in_boost.cpp ;
|
||||
run swap_specialized_in_global.cpp ;
|
||||
run swap_specialized_in_other.cpp ;
|
||||
run swap_specialized_in_std.cpp ;
|
||||
run swap_specialized_in_boost_and_other.cpp ;
|
||||
run swap_std_bitset.cpp ;
|
||||
run swap_std_dateorder.cpp ;
|
||||
run swap_std_string.cpp ;
|
||||
run swap_std_typeinfo_ptr.cpp ;
|
||||
run swap_std_vector_of_boost.cpp ;
|
||||
run swap_std_vector_of_global.cpp ;
|
||||
run swap_std_vector_of_other.cpp ;
|
||||
run swap_no_ambiguity_in_boost.cpp ;
|
||||
run swap_array_of_array_of_class.cpp ;
|
||||
run swap_array_of_array_of_int.cpp ;
|
||||
run swap_array_of_class.cpp ;
|
||||
run swap_array_of_int.cpp ;
|
||||
run swap_array_of_template.cpp ;
|
||||
local run_tests =
|
||||
primitive.cpp
|
||||
specialized_in_boost.cpp
|
||||
specialized_in_global.cpp
|
||||
specialized_in_other.cpp
|
||||
specialized_in_std.cpp
|
||||
specialized_in_boost_and_other.cpp
|
||||
std_bitset.cpp
|
||||
std_dateorder.cpp
|
||||
std_string.cpp
|
||||
std_typeinfo_ptr.cpp
|
||||
std_vector_of_boost.cpp
|
||||
std_vector_of_global.cpp
|
||||
std_vector_of_other.cpp
|
||||
no_ambiguity_in_boost.cpp
|
||||
array_of_array_of_class.cpp
|
||||
array_of_array_of_int.cpp
|
||||
array_of_class.cpp
|
||||
array_of_int.cpp
|
||||
array_of_template.cpp
|
||||
;
|
||||
|
||||
rule test_all
|
||||
{
|
||||
local all_rules ;
|
||||
local file ;
|
||||
|
||||
for file in $(compile_tests)
|
||||
{
|
||||
local test_name = [ MATCH "([^.]*).cpp$" : $(file) ] ;
|
||||
all_rules += [ compile $(file) : : "swap-$(test_name)" ] ;
|
||||
}
|
||||
|
||||
for file in $(compile_fail_tests)
|
||||
{
|
||||
local test_name = [ MATCH "([^.]*).cpp$" : $(file) ] ;
|
||||
all_rules += [ compile-fail $(file) : : "swap-$(test_name)" ] ;
|
||||
}
|
||||
|
||||
for file in $(run_tests)
|
||||
{
|
||||
local test_name = [ MATCH "([^.]*).cpp$" : $(file) ] ;
|
||||
all_rules += [ run $(file) : : : : "swap-$(test_name)" ] ;
|
||||
}
|
||||
|
||||
#ECHO All rules: $(all_rules) ;
|
||||
return $(all_rules) ;
|
||||
}
|
||||
|
||||
test-suite core/swap : [ test_all r ] ;
|
||||
|
||||
Reference in New Issue
Block a user