summaryrefslogtreecommitdiffstats
path: root/src/boost/libs/lambda2/test/lambda2_test.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/boost/libs/lambda2/test/lambda2_test.cpp')
-rw-r--r--src/boost/libs/lambda2/test/lambda2_test.cpp69
1 files changed, 69 insertions, 0 deletions
diff --git a/src/boost/libs/lambda2/test/lambda2_test.cpp b/src/boost/libs/lambda2/test/lambda2_test.cpp
new file mode 100644
index 000000000..5e1d81ea3
--- /dev/null
+++ b/src/boost/libs/lambda2/test/lambda2_test.cpp
@@ -0,0 +1,69 @@
+// Copyright 2020 Peter Dimov
+// Distributed under the Boost Software License, Version 1.0.
+// https://www.boost.org/LICENSE_1_0.txt
+
+#if defined(_MSC_VER) && _MSC_VER == 1900
+# pragma warning(disable: 4552) // '<<': operator has no effect; expected operator with side-effect
+#endif
+
+#include <boost/lambda2.hpp>
+#include <boost/core/lightweight_test.hpp>
+
+#define TEST_UNARY(Op) \
+ BOOST_TEST_EQ( (Op _1)( 0 ), Op 0 ); \
+ BOOST_TEST_EQ( (Op _1)( 1 ), Op 1 ); \
+ BOOST_TEST_EQ( (Op _1)( 5 ), Op 5 ); \
+ BOOST_TEST_EQ( (Op (Op _1))( 5 ), Op (Op 5) ); \
+ BOOST_TEST_EQ( ((Op _1) + (Op _2))( 1, 2 ), (Op 1) + (Op 2) ); \
+ BOOST_TEST_EQ( ((Op _1) && (Op _2))( 1, 2 ), (Op 1) && (Op 2) );
+
+#define TEST_BINARY(Op) \
+ BOOST_TEST_EQ( (_1 Op _2)( 0, 1 ), 0 Op 1 ); \
+ BOOST_TEST_EQ( (_1 Op _2)( 3, 5 ), 3 Op 5 ); \
+ BOOST_TEST_EQ( (_1 Op 2)( 1, 2 ), 1 Op 2 ); \
+ BOOST_TEST_EQ( (1 Op _2)( 1, 2 ), 1 Op 2 ); \
+ BOOST_TEST_EQ( ((_1 Op _2) + (_3 Op _4))( 1, 2, 3, 4 ), (1 Op 2) + (3 Op 4) );
+
+int main()
+{
+ using namespace boost::lambda2;
+
+ TEST_BINARY(+)
+ TEST_BINARY(-)
+ TEST_BINARY(*)
+ TEST_BINARY(/)
+ TEST_BINARY(%)
+ TEST_UNARY(-)
+
+ TEST_BINARY(==)
+ TEST_BINARY(!=)
+ TEST_BINARY(>)
+ TEST_BINARY(<)
+ TEST_BINARY(>=)
+ TEST_BINARY(<=)
+
+ TEST_BINARY(&&)
+ TEST_BINARY(||)
+ TEST_UNARY(!)
+
+ TEST_BINARY(&)
+ TEST_BINARY(|)
+ TEST_BINARY(^)
+ TEST_UNARY(~)
+
+#if defined(_MSC_VER) && _MSC_VER == 1900 && !defined(_DEBUG)
+
+ // prevents crash in TEST_BINARY(/)
+ // no idea why
+
+ BOOST_TEST_EQ( (_1 / _2)( 0, 1 ), 0 / 1 );
+
+#endif
+
+ TEST_BINARY(<<)
+ TEST_BINARY(>>)
+
+ TEST_UNARY(+)
+
+ return boost::report_errors();
+}