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/logic/test/tribool_rename_test.cpp | |
parent | Initial commit. (diff) | |
download | ceph-upstream.tar.xz ceph-upstream.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/logic/test/tribool_rename_test.cpp')
-rw-r--r-- | src/boost/libs/logic/test/tribool_rename_test.cpp | 123 |
1 files changed, 123 insertions, 0 deletions
diff --git a/src/boost/libs/logic/test/tribool_rename_test.cpp b/src/boost/libs/logic/test/tribool_rename_test.cpp new file mode 100644 index 00000000..3a5b066b --- /dev/null +++ b/src/boost/libs/logic/test/tribool_rename_test.cpp @@ -0,0 +1,123 @@ +// Copyright Douglas Gregor 2002-2003. Use, modification and +// distribution is subject to 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) + +// For more information, see http://www.boost.org + +#include <boost/logic/tribool.hpp> +#include <boost/test/minimal.hpp> +#include <iostream> + +BOOST_TRIBOOL_THIRD_STATE(maybe) + +int test_main(int,char*[]) +{ + using namespace boost::logic; + + tribool x; // false + tribool y(true); // true + tribool z(maybe); // maybe + + BOOST_CHECK(!x); + BOOST_CHECK(x == false); + BOOST_CHECK(false == x); + BOOST_CHECK(x != true); + BOOST_CHECK(true != x); + BOOST_CHECK(maybe(x == maybe)); + BOOST_CHECK(maybe(maybe == x)); + BOOST_CHECK(maybe(x != maybe)); + BOOST_CHECK(maybe(maybe != x)); + BOOST_CHECK(x == x); + BOOST_CHECK(!(x != x)); + BOOST_CHECK(!(x && true)); + BOOST_CHECK(!(true && x)); + BOOST_CHECK(x || true); + BOOST_CHECK(true || x); + + BOOST_CHECK(y); + BOOST_CHECK(y == true); + BOOST_CHECK(true == y); + BOOST_CHECK(y != false); + BOOST_CHECK(false != y); + BOOST_CHECK(maybe(y == maybe)); + BOOST_CHECK(maybe(maybe == y)); + BOOST_CHECK(maybe(y != maybe)); + BOOST_CHECK(maybe(maybe != y)); + BOOST_CHECK(y == y); + BOOST_CHECK(!(y != y)); + + BOOST_CHECK(maybe(z || !z)); + BOOST_CHECK(maybe(z == true)); + BOOST_CHECK(maybe(true == z)); + BOOST_CHECK(maybe(z == false)); + BOOST_CHECK(maybe(false == z)); + BOOST_CHECK(maybe(z == maybe)); + BOOST_CHECK(maybe(maybe == z)); + BOOST_CHECK(maybe(z != maybe)); + BOOST_CHECK(maybe(maybe != z)); + BOOST_CHECK(maybe(z == z)); + BOOST_CHECK(maybe(z != z)); + + BOOST_CHECK(!(x == y)); + BOOST_CHECK(x != y); + BOOST_CHECK(maybe(x == z)); + BOOST_CHECK(maybe(x != z)); + BOOST_CHECK(maybe(y == z)); + BOOST_CHECK(maybe(y != z)); + + BOOST_CHECK(!(x && y)); + BOOST_CHECK(x || y); + BOOST_CHECK(!(x && z)); + BOOST_CHECK(maybe(y && z)); + BOOST_CHECK(maybe(z && z)); + BOOST_CHECK(maybe(z || z)); + BOOST_CHECK(maybe(x || z)); + BOOST_CHECK(y || z); + + BOOST_CHECK(maybe(y && maybe)); + BOOST_CHECK(maybe(maybe && y)); + BOOST_CHECK(!(x && maybe)); + BOOST_CHECK(!(maybe && x)); + + BOOST_CHECK(maybe || y); + BOOST_CHECK(y || maybe); + BOOST_CHECK(maybe(x || maybe)); + BOOST_CHECK(maybe(maybe || x)); + + // Test the if (z) ... else (!z) ... else ... idiom + if (z) { + BOOST_CHECK(false); + } + else if (!z) { + BOOST_CHECK(false); + } + else { + BOOST_CHECK(true); + } + + z = true; + if (z) { + BOOST_CHECK(true); + } + else if (!z) { + BOOST_CHECK(false); + } + else { + BOOST_CHECK(false); + } + + z = false; + if (z) { + BOOST_CHECK(false); + } + else if (!z) { + BOOST_CHECK(true); + } + else { + BOOST_CHECK(false); + } + + std::cout << "no errors detected\n"; + return 0; +} |