summaryrefslogtreecommitdiffstats
path: root/src/boost/libs/hana/test/_include/auto/zips.hpp
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-07 18:45:59 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-07 18:45:59 +0000
commit19fcec84d8d7d21e796c7624e521b60d28ee21ed (patch)
tree42d26aa27d1e3f7c0b8bd3fd14e7d7082f5008dc /src/boost/libs/hana/test/_include/auto/zips.hpp
parentInitial commit. (diff)
downloadceph-upstream/16.2.11+ds.tar.xz
ceph-upstream/16.2.11+ds.zip
Adding upstream version 16.2.11+ds.upstream/16.2.11+dsupstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'src/boost/libs/hana/test/_include/auto/zips.hpp')
-rw-r--r--src/boost/libs/hana/test/_include/auto/zips.hpp342
1 files changed, 342 insertions, 0 deletions
diff --git a/src/boost/libs/hana/test/_include/auto/zips.hpp b/src/boost/libs/hana/test/_include/auto/zips.hpp
new file mode 100644
index 000000000..3d129c90d
--- /dev/null
+++ b/src/boost/libs/hana/test/_include/auto/zips.hpp
@@ -0,0 +1,342 @@
+// Copyright Louis Dionne 2013-2017
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_HANA_TEST_AUTO_ZIPS_HPP
+#define BOOST_HANA_TEST_AUTO_ZIPS_HPP
+
+#include <boost/hana/assert.hpp>
+#include <boost/hana/equal.hpp>
+#include <boost/hana/zip.hpp>
+#include <boost/hana/zip_shortest.hpp>
+#include <boost/hana/zip_shortest_with.hpp>
+#include <boost/hana/zip_with.hpp>
+
+#include <laws/base.hpp>
+#include "test_case.hpp"
+
+
+TestCase test_zip_shortest_with{[]{
+ namespace hana = boost::hana;
+ using hana::test::ct_eq;
+
+ hana::test::_injection<0> f{};
+ auto zip = hana::zip_shortest_with;
+ struct undefined { };
+
+ // zip 1
+ BOOST_HANA_CONSTANT_CHECK(hana::equal(
+ zip(undefined{}, MAKE_TUPLE()),
+ MAKE_TUPLE()
+ ));
+ BOOST_HANA_CONSTANT_CHECK(hana::equal(
+ zip(f, MAKE_TUPLE(ct_eq<0>{})),
+ MAKE_TUPLE(f(ct_eq<0>{}))
+ ));
+ BOOST_HANA_CONSTANT_CHECK(hana::equal(
+ zip(f, MAKE_TUPLE(ct_eq<0>{}, ct_eq<1>{})),
+ MAKE_TUPLE(f(ct_eq<0>{}), f(ct_eq<1>{}))
+ ));
+ BOOST_HANA_CONSTANT_CHECK(hana::equal(
+ zip(f, MAKE_TUPLE(ct_eq<0>{}, ct_eq<1>{}, ct_eq<2>{})),
+ MAKE_TUPLE(f(ct_eq<0>{}), f(ct_eq<1>{}), f(ct_eq<2>{}))
+ ));
+
+ // zip 2
+ BOOST_HANA_CONSTANT_CHECK(hana::equal(
+ zip(undefined{}, MAKE_TUPLE(), MAKE_TUPLE()),
+ MAKE_TUPLE()
+ ));
+ BOOST_HANA_CONSTANT_CHECK(hana::equal(
+ zip(undefined{}, MAKE_TUPLE(undefined{}), MAKE_TUPLE()),
+ MAKE_TUPLE()
+ ));
+ BOOST_HANA_CONSTANT_CHECK(hana::equal(
+ zip(undefined{}, MAKE_TUPLE(), MAKE_TUPLE(undefined{})),
+ MAKE_TUPLE()
+ ));
+ BOOST_HANA_CONSTANT_CHECK(hana::equal(
+ zip(f, MAKE_TUPLE(ct_eq<1>{}), MAKE_TUPLE(ct_eq<-1>{})),
+ MAKE_TUPLE(f(ct_eq<1>{}, ct_eq<-1>{}))
+ ));
+ BOOST_HANA_CONSTANT_CHECK(hana::equal(
+ zip(f, MAKE_TUPLE(ct_eq<1>{}, ct_eq<2>{}), MAKE_TUPLE(ct_eq<-1>{})),
+ MAKE_TUPLE(f(ct_eq<1>{}, ct_eq<-1>{}))
+ ));
+ BOOST_HANA_CONSTANT_CHECK(hana::equal(
+ zip(f, MAKE_TUPLE(ct_eq<1>{}), MAKE_TUPLE(ct_eq<-1>{}, ct_eq<-2>{})),
+ MAKE_TUPLE(f(ct_eq<1>{}, ct_eq<-1>{}))
+ ));
+ BOOST_HANA_CONSTANT_CHECK(hana::equal(
+ zip(f, MAKE_TUPLE(ct_eq<1>{}, ct_eq<2>{}), MAKE_TUPLE(ct_eq<-1>{}, ct_eq<-2>{})),
+ MAKE_TUPLE(f(ct_eq<1>{}, ct_eq<-1>{}), f(ct_eq<2>{}, ct_eq<-2>{}))
+ ));
+ BOOST_HANA_CONSTANT_CHECK(hana::equal(
+ zip(f, MAKE_TUPLE(ct_eq<1>{}, ct_eq<2>{}, ct_eq<3>{}, ct_eq<4>{}),
+ MAKE_TUPLE(ct_eq<-1>{}, ct_eq<-2>{}, ct_eq<-3>{})),
+ MAKE_TUPLE(f(ct_eq<1>{}, ct_eq<-1>{}),
+ f(ct_eq<2>{}, ct_eq<-2>{}),
+ f(ct_eq<3>{}, ct_eq<-3>{}))
+ ));
+
+ // zip 3
+ BOOST_HANA_CONSTANT_CHECK(hana::equal(
+ zip(undefined{}, MAKE_TUPLE(), MAKE_TUPLE(), MAKE_TUPLE()),
+ MAKE_TUPLE()
+ ));
+
+ BOOST_HANA_CONSTANT_CHECK(hana::equal(
+ zip(undefined{}, MAKE_TUPLE(undefined{}), MAKE_TUPLE(), MAKE_TUPLE()),
+ MAKE_TUPLE()
+ ));
+ BOOST_HANA_CONSTANT_CHECK(hana::equal(
+ zip(undefined{}, MAKE_TUPLE(), MAKE_TUPLE(undefined{}), MAKE_TUPLE()),
+ MAKE_TUPLE()
+ ));
+ BOOST_HANA_CONSTANT_CHECK(hana::equal(
+ zip(undefined{}, MAKE_TUPLE(), MAKE_TUPLE(), MAKE_TUPLE(undefined{})),
+ MAKE_TUPLE()
+ ));
+
+ BOOST_HANA_CONSTANT_CHECK(hana::equal(
+ zip(undefined{}, MAKE_TUPLE(), MAKE_TUPLE(undefined{}), MAKE_TUPLE(undefined{})),
+ MAKE_TUPLE()
+ ));
+ BOOST_HANA_CONSTANT_CHECK(hana::equal(
+ zip(undefined{}, MAKE_TUPLE(undefined{}), MAKE_TUPLE(), MAKE_TUPLE(undefined{})),
+ MAKE_TUPLE()
+ ));
+ BOOST_HANA_CONSTANT_CHECK(hana::equal(
+ zip(undefined{}, MAKE_TUPLE(undefined{}), MAKE_TUPLE(undefined{}), MAKE_TUPLE()),
+ MAKE_TUPLE()
+ ));
+
+ BOOST_HANA_CONSTANT_CHECK(hana::equal(
+ zip(f, MAKE_TUPLE(ct_eq<0>{}), MAKE_TUPLE(ct_eq<1>{}), MAKE_TUPLE(ct_eq<2>{})),
+ MAKE_TUPLE(f(ct_eq<0>{}, ct_eq<1>{}, ct_eq<2>{}))
+ ));
+
+ // zip 4
+ BOOST_HANA_CONSTANT_CHECK(hana::equal(
+ zip(f,
+ MAKE_TUPLE(ct_eq<11>{}, ct_eq<12>{}, ct_eq<13>{}, ct_eq<14>{}),
+ MAKE_TUPLE(ct_eq<21>{}, ct_eq<22>{}, ct_eq<23>{}),
+ MAKE_TUPLE(ct_eq<31>{}, ct_eq<32>{}, ct_eq<33>{}, ct_eq<34>{}),
+ MAKE_TUPLE(ct_eq<41>{}, ct_eq<42>{}, ct_eq<43>{}, ct_eq<44>{}, ct_eq<45>{})
+ ),
+ MAKE_TUPLE(
+ f(ct_eq<11>{}, ct_eq<21>{}, ct_eq<31>{}, ct_eq<41>{}),
+ f(ct_eq<12>{}, ct_eq<22>{}, ct_eq<32>{}, ct_eq<42>{}),
+ f(ct_eq<13>{}, ct_eq<23>{}, ct_eq<33>{}, ct_eq<43>{})
+ )
+ ));
+
+ // zip 5
+ BOOST_HANA_CONSTANT_CHECK(hana::equal(
+ zip(f,
+ MAKE_TUPLE(ct_eq<11>{}, ct_eq<12>{}, ct_eq<13>{}, ct_eq<14>{}),
+ MAKE_TUPLE(ct_eq<21>{}, ct_eq<22>{}, ct_eq<23>{}, ct_eq<24>{}, ct_eq<25>{}),
+ MAKE_TUPLE(ct_eq<31>{}, ct_eq<32>{}, ct_eq<33>{}, ct_eq<34>{}),
+ MAKE_TUPLE(ct_eq<41>{}, ct_eq<42>{}, ct_eq<43>{}, ct_eq<44>{}, ct_eq<45>{}, ct_eq<46>{}),
+ MAKE_TUPLE(ct_eq<51>{}, ct_eq<52>{}, ct_eq<53>{}, ct_eq<54>{}, ct_eq<55>{})
+ ),
+ MAKE_TUPLE(
+ f(ct_eq<11>{}, ct_eq<21>{}, ct_eq<31>{}, ct_eq<41>{}, ct_eq<51>{}),
+ f(ct_eq<12>{}, ct_eq<22>{}, ct_eq<32>{}, ct_eq<42>{}, ct_eq<52>{}),
+ f(ct_eq<13>{}, ct_eq<23>{}, ct_eq<33>{}, ct_eq<43>{}, ct_eq<53>{}),
+ f(ct_eq<14>{}, ct_eq<24>{}, ct_eq<34>{}, ct_eq<44>{}, ct_eq<54>{})
+ )
+ ));
+}};
+
+TestCase test_zip_with{[]{
+ namespace hana = boost::hana;
+ using hana::test::ct_eq;
+
+ hana::test::_injection<0> f{};
+ struct undefined { };
+
+ // zip 1
+ BOOST_HANA_CONSTANT_CHECK(hana::equal(
+ hana::zip_with(undefined{}, MAKE_TUPLE()),
+ MAKE_TUPLE()
+ ));
+ BOOST_HANA_CONSTANT_CHECK(hana::equal(
+ hana::zip_with(f, MAKE_TUPLE(ct_eq<0>{})),
+ MAKE_TUPLE(f(ct_eq<0>{}))
+ ));
+ BOOST_HANA_CONSTANT_CHECK(hana::equal(
+ hana::zip_with(f, MAKE_TUPLE(ct_eq<0>{}, ct_eq<1>{})),
+ MAKE_TUPLE(f(ct_eq<0>{}), f(ct_eq<1>{}))
+ ));
+ BOOST_HANA_CONSTANT_CHECK(hana::equal(
+ hana::zip_with(f, MAKE_TUPLE(ct_eq<0>{}, ct_eq<1>{}, ct_eq<2>{})),
+ MAKE_TUPLE(f(ct_eq<0>{}), f(ct_eq<1>{}), f(ct_eq<2>{}))
+ ));
+
+ // zip 2
+ BOOST_HANA_CONSTANT_CHECK(hana::equal(
+ hana::zip_with(undefined{}, MAKE_TUPLE(), MAKE_TUPLE()),
+ MAKE_TUPLE()
+ ));
+ BOOST_HANA_CONSTANT_CHECK(hana::equal(
+ hana::zip_with(f, MAKE_TUPLE(ct_eq<1>{}), MAKE_TUPLE(ct_eq<-1>{})),
+ MAKE_TUPLE(f(ct_eq<1>{}, ct_eq<-1>{}))
+ ));
+ BOOST_HANA_CONSTANT_CHECK(hana::equal(
+ hana::zip_with(f, MAKE_TUPLE(ct_eq<1>{}, ct_eq<2>{}), MAKE_TUPLE(ct_eq<-1>{}, ct_eq<-2>{})),
+ MAKE_TUPLE(f(ct_eq<1>{}, ct_eq<-1>{}), f(ct_eq<2>{}, ct_eq<-2>{}))
+ ));
+ BOOST_HANA_CONSTANT_CHECK(hana::equal(
+ hana::zip_with(f,
+ MAKE_TUPLE(ct_eq<1>{}, ct_eq<2>{}, ct_eq<3>{}),
+ MAKE_TUPLE(ct_eq<-1>{}, ct_eq<-2>{}, ct_eq<-3>{})),
+ MAKE_TUPLE(
+ f(ct_eq<1>{}, ct_eq<-1>{}),
+ f(ct_eq<2>{}, ct_eq<-2>{}),
+ f(ct_eq<3>{}, ct_eq<-3>{}))
+ ));
+
+ // zip 3
+ BOOST_HANA_CONSTANT_CHECK(hana::equal(
+ hana::zip_with(undefined{}, MAKE_TUPLE(), MAKE_TUPLE(), MAKE_TUPLE()),
+ MAKE_TUPLE()
+ ));
+ BOOST_HANA_CONSTANT_CHECK(hana::equal(
+ hana::zip_with(f, MAKE_TUPLE(ct_eq<0>{}), MAKE_TUPLE(ct_eq<1>{}), MAKE_TUPLE(ct_eq<2>{})),
+ MAKE_TUPLE(f(ct_eq<0>{}, ct_eq<1>{}, ct_eq<2>{}))
+ ));
+ BOOST_HANA_CONSTANT_CHECK(hana::equal(
+ hana::zip_with(f,
+ MAKE_TUPLE(ct_eq<0>{}, ct_eq<1>{}),
+ MAKE_TUPLE(ct_eq<2>{}, ct_eq<3>{}),
+ MAKE_TUPLE(ct_eq<4>{}, ct_eq<5>{})
+ ),
+ MAKE_TUPLE(
+ f(ct_eq<0>{}, ct_eq<2>{}, ct_eq<4>{}),
+ f(ct_eq<1>{}, ct_eq<3>{}, ct_eq<5>{})
+ )
+ ));
+
+ // zip 4
+ BOOST_HANA_CONSTANT_CHECK(hana::equal(
+ hana::zip_with(f,
+ MAKE_TUPLE(ct_eq<11>{}, ct_eq<12>{}, ct_eq<13>{}),
+ MAKE_TUPLE(ct_eq<21>{}, ct_eq<22>{}, ct_eq<23>{}),
+ MAKE_TUPLE(ct_eq<31>{}, ct_eq<32>{}, ct_eq<33>{}),
+ MAKE_TUPLE(ct_eq<41>{}, ct_eq<42>{}, ct_eq<43>{})
+ ),
+ MAKE_TUPLE(
+ f(ct_eq<11>{}, ct_eq<21>{}, ct_eq<31>{}, ct_eq<41>{}),
+ f(ct_eq<12>{}, ct_eq<22>{}, ct_eq<32>{}, ct_eq<42>{}),
+ f(ct_eq<13>{}, ct_eq<23>{}, ct_eq<33>{}, ct_eq<43>{})
+ )
+ ));
+
+ // zip 5
+ BOOST_HANA_CONSTANT_CHECK(hana::equal(
+ hana::zip_with(f,
+ MAKE_TUPLE(ct_eq<11>{}, ct_eq<12>{}, ct_eq<13>{}, ct_eq<14>{}),
+ MAKE_TUPLE(ct_eq<21>{}, ct_eq<22>{}, ct_eq<23>{}, ct_eq<24>{}),
+ MAKE_TUPLE(ct_eq<31>{}, ct_eq<32>{}, ct_eq<33>{}, ct_eq<34>{}),
+ MAKE_TUPLE(ct_eq<41>{}, ct_eq<42>{}, ct_eq<43>{}, ct_eq<44>{}),
+ MAKE_TUPLE(ct_eq<51>{}, ct_eq<52>{}, ct_eq<53>{}, ct_eq<54>{})
+ ),
+ MAKE_TUPLE(
+ f(ct_eq<11>{}, ct_eq<21>{}, ct_eq<31>{}, ct_eq<41>{}, ct_eq<51>{}),
+ f(ct_eq<12>{}, ct_eq<22>{}, ct_eq<32>{}, ct_eq<42>{}, ct_eq<52>{}),
+ f(ct_eq<13>{}, ct_eq<23>{}, ct_eq<33>{}, ct_eq<43>{}, ct_eq<53>{}),
+ f(ct_eq<14>{}, ct_eq<24>{}, ct_eq<34>{}, ct_eq<44>{}, ct_eq<54>{})
+ )
+ ));
+}};
+
+TestCase test_zip{[]{
+ namespace hana = boost::hana;
+ using hana::test::ct_eq;
+
+ BOOST_HANA_CONSTANT_CHECK(hana::equal(
+ hana::zip(MAKE_TUPLE()),
+ MAKE_TUPLE()
+ ));
+ BOOST_HANA_CONSTANT_CHECK(hana::equal(
+ hana::zip(MAKE_TUPLE(ct_eq<0>{})),
+ MAKE_TUPLE(MAKE_TUPLE(ct_eq<0>{}))
+ ));
+ BOOST_HANA_CONSTANT_CHECK(hana::equal(
+ hana::zip(MAKE_TUPLE(ct_eq<0>{}, ct_eq<1>{})),
+ MAKE_TUPLE(MAKE_TUPLE(ct_eq<0>{}), MAKE_TUPLE(ct_eq<1>{}))
+ ));
+ BOOST_HANA_CONSTANT_CHECK(hana::equal(
+ hana::zip(MAKE_TUPLE(ct_eq<0>{}, ct_eq<1>{}, ct_eq<2>{})),
+ MAKE_TUPLE(MAKE_TUPLE(ct_eq<0>{}), MAKE_TUPLE(ct_eq<1>{}), MAKE_TUPLE(ct_eq<2>{}))
+ ));
+
+ BOOST_HANA_CONSTANT_CHECK(hana::equal(
+ hana::zip(MAKE_TUPLE(), MAKE_TUPLE()),
+ MAKE_TUPLE()
+ ));
+ BOOST_HANA_CONSTANT_CHECK(hana::equal(
+ hana::zip(MAKE_TUPLE(ct_eq<0>{}), MAKE_TUPLE(ct_eq<1>{})),
+ MAKE_TUPLE(MAKE_TUPLE(ct_eq<0>{}, ct_eq<1>{}))
+ ));
+
+ BOOST_HANA_CONSTANT_CHECK(hana::equal(
+ hana::zip(MAKE_TUPLE(ct_eq<0>{}), MAKE_TUPLE(ct_eq<1>{}), MAKE_TUPLE(ct_eq<2>{})),
+ MAKE_TUPLE(MAKE_TUPLE(ct_eq<0>{}, ct_eq<1>{}, ct_eq<2>{}))
+ ));
+ BOOST_HANA_CONSTANT_CHECK(hana::equal(
+ hana::zip(MAKE_TUPLE(ct_eq<0>{}, ct_eq<3>{}),
+ MAKE_TUPLE(ct_eq<1>{}, ct_eq<4>{}),
+ MAKE_TUPLE(ct_eq<2>{}, ct_eq<5>{})),
+ MAKE_TUPLE(MAKE_TUPLE(ct_eq<0>{}, ct_eq<1>{}, ct_eq<2>{}),
+ MAKE_TUPLE(ct_eq<3>{}, ct_eq<4>{}, ct_eq<5>{}))
+ ));
+}};
+
+TestCase test_zip_shortest{[]{
+ namespace hana = boost::hana;
+ using hana::test::ct_eq;
+
+ BOOST_HANA_CONSTANT_CHECK(hana::equal(
+ hana::zip_shortest(MAKE_TUPLE()),
+ MAKE_TUPLE()
+ ));
+ BOOST_HANA_CONSTANT_CHECK(hana::equal(
+ hana::zip_shortest(MAKE_TUPLE(ct_eq<0>{})),
+ MAKE_TUPLE(MAKE_TUPLE(ct_eq<0>{}))
+ ));
+ BOOST_HANA_CONSTANT_CHECK(hana::equal(
+ hana::zip_shortest(MAKE_TUPLE(ct_eq<0>{}, ct_eq<1>{})),
+ MAKE_TUPLE(MAKE_TUPLE(ct_eq<0>{}), MAKE_TUPLE(ct_eq<1>{}))
+ ));
+ BOOST_HANA_CONSTANT_CHECK(hana::equal(
+ hana::zip_shortest(MAKE_TUPLE(ct_eq<0>{}, ct_eq<1>{}, ct_eq<2>{})),
+ MAKE_TUPLE(MAKE_TUPLE(ct_eq<0>{}), MAKE_TUPLE(ct_eq<1>{}), MAKE_TUPLE(ct_eq<2>{}))
+ ));
+
+ BOOST_HANA_CONSTANT_CHECK(hana::equal(
+ hana::zip_shortest(MAKE_TUPLE(), MAKE_TUPLE()),
+ MAKE_TUPLE()
+ ));
+ BOOST_HANA_CONSTANT_CHECK(hana::equal(
+ hana::zip_shortest(MAKE_TUPLE(ct_eq<0>{}), MAKE_TUPLE(ct_eq<1>{})),
+ MAKE_TUPLE(MAKE_TUPLE(ct_eq<0>{}, ct_eq<1>{}))
+ ));
+
+ BOOST_HANA_CONSTANT_CHECK(hana::equal(
+ hana::zip_shortest(MAKE_TUPLE(ct_eq<0>{}),
+ MAKE_TUPLE(ct_eq<1>{}),
+ MAKE_TUPLE(ct_eq<2>{})),
+ MAKE_TUPLE(MAKE_TUPLE(ct_eq<0>{}, ct_eq<1>{}, ct_eq<2>{}))
+ ));
+ BOOST_HANA_CONSTANT_CHECK(hana::equal(
+ hana::zip_shortest(MAKE_TUPLE(ct_eq<0>{}, ct_eq<3>{}),
+ MAKE_TUPLE(ct_eq<1>{}, ct_eq<4>{}),
+ MAKE_TUPLE(ct_eq<2>{}, ct_eq<5>{}, ct_eq<8>{})),
+ MAKE_TUPLE(MAKE_TUPLE(ct_eq<0>{}, ct_eq<1>{}, ct_eq<2>{}),
+ MAKE_TUPLE(ct_eq<3>{}, ct_eq<4>{}, ct_eq<5>{}))
+ ));
+}};
+
+#endif // !BOOST_HANA_TEST_AUTO_ZIPS_HPP