diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-27 18:24:20 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-27 18:24:20 +0000 |
commit | 483eb2f56657e8e7f419ab1a4fab8dce9ade8609 (patch) | |
tree | e5d88d25d870d5dedacb6bbdbe2a966086a0a5cf /src/boost/libs/hof/test/function.cpp | |
parent | Initial commit. (diff) | |
download | ceph-483eb2f56657e8e7f419ab1a4fab8dce9ade8609.tar.xz ceph-483eb2f56657e8e7f419ab1a4fab8dce9ade8609.zip |
Adding upstream version 14.2.21.upstream/14.2.21upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'src/boost/libs/hof/test/function.cpp')
-rw-r--r-- | src/boost/libs/hof/test/function.cpp | 106 |
1 files changed, 106 insertions, 0 deletions
diff --git a/src/boost/libs/hof/test/function.cpp b/src/boost/libs/hof/test/function.cpp new file mode 100644 index 00000000..fc4a4774 --- /dev/null +++ b/src/boost/libs/hof/test/function.cpp @@ -0,0 +1,106 @@ +/*============================================================================= + Copyright (c) 2017 Paul Fultz II + function.cpp + 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/hof/function.hpp> +#include <boost/hof/partial.hpp> +#include <boost/hof/infix.hpp> +#include <memory> +#include "test.hpp" + +namespace test_constexpr { + +struct sum_f +{ + template<class T, class U> + constexpr T operator()(T x, U y) const + { + return x+y; + } +}; + +BOOST_HOF_STATIC_FUNCTION(sum_init) = sum_f(); + +BOOST_HOF_TEST_CASE() +{ +// TODO: Should be empty on MSVC as well +#ifndef _MSC_VER + STATIC_ASSERT_EMPTY(sum_init); +#endif + BOOST_HOF_TEST_CHECK(3 == sum_init(1, 2)); + + BOOST_HOF_STATIC_TEST_CHECK(3 == sum_init(1, 2)); +} + +BOOST_HOF_STATIC_FUNCTION(sum_partial) = boost::hof::partial(sum_f()); +BOOST_HOF_TEST_CASE() +{ +#ifndef _MSC_VER + STATIC_ASSERT_EMPTY(sum_partial); +#endif + BOOST_HOF_TEST_CHECK(3 == sum_partial(1, 2)); + BOOST_HOF_TEST_CHECK(3 == sum_partial(1)(2)); + + BOOST_HOF_STATIC_TEST_CHECK(3 == sum_partial(1, 2)); + BOOST_HOF_STATIC_TEST_CHECK(3 == sum_partial(1)(2)); +} + +} + +namespace test_static { + +struct sum_f +{ + template<class T, class U> + constexpr T operator()(T x, U y) const + { + return x+y; + } +}; + +struct add_one_f +{ + template<class T> + constexpr T operator()(T x) const + { + return x+1; + } +}; + +BOOST_HOF_STATIC_FUNCTION(sum_partial) = boost::hof::partial(sum_f()); + +BOOST_HOF_TEST_CASE() +{ +#ifndef _MSC_VER + STATIC_ASSERT_EMPTY(sum_partial); +#endif + BOOST_HOF_TEST_CHECK(3 == sum_partial(1, 2)); + BOOST_HOF_TEST_CHECK(3 == sum_partial(1)(2)); +} + +BOOST_HOF_STATIC_FUNCTION(add_one_pipable) = boost::hof::pipable(add_one_f()); + +BOOST_HOF_TEST_CASE() +{ +// TODO: Make this work on msvc +#ifndef _MSC_VER + STATIC_ASSERT_EMPTY(add_one_pipable); +#endif + BOOST_HOF_TEST_CHECK(3 == add_one_pipable(2)); + BOOST_HOF_TEST_CHECK(3 == (2 | add_one_pipable)); +} + +BOOST_HOF_STATIC_FUNCTION(sum_infix) = boost::hof::infix(sum_f()); + +BOOST_HOF_TEST_CASE() +{ +// TODO: Make this work on msvc +#ifndef _MSC_VER + STATIC_ASSERT_EMPTY(sum_infix); +#endif + BOOST_HOF_TEST_CHECK(3 == (1 <sum_infix> 2)); +} + +} |