summaryrefslogtreecommitdiffstats
path: root/src/boost/libs/hana/test/experimental/view/transformed
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/experimental/view/transformed
parentInitial commit. (diff)
downloadceph-6d07fdb6bb33b1af39833b850bb6cf8af79fe293.tar.xz
ceph-6d07fdb6bb33b1af39833b850bb6cf8af79fe293.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/experimental/view/transformed')
-rw-r--r--src/boost/libs/hana/test/experimental/view/transformed/ap.cpp122
-rw-r--r--src/boost/libs/hana/test/experimental/view/transformed/at.cpp73
-rw-r--r--src/boost/libs/hana/test/experimental/view/transformed/drop_front.cpp98
-rw-r--r--src/boost/libs/hana/test/experimental/view/transformed/equal.cpp50
-rw-r--r--src/boost/libs/hana/test/experimental/view/transformed/is_empty.cpp36
-rw-r--r--src/boost/libs/hana/test/experimental/view/transformed/laziness.cpp20
-rw-r--r--src/boost/libs/hana/test/experimental/view/transformed/length.cpp49
-rw-r--r--src/boost/libs/hana/test/experimental/view/transformed/less.cpp58
-rw-r--r--src/boost/libs/hana/test/experimental/view/transformed/transform.cpp57
-rw-r--r--src/boost/libs/hana/test/experimental/view/transformed/unpack.cpp34
10 files changed, 597 insertions, 0 deletions
diff --git a/src/boost/libs/hana/test/experimental/view/transformed/ap.cpp b/src/boost/libs/hana/test/experimental/view/transformed/ap.cpp
new file mode 100644
index 000000000..b04d54fe5
--- /dev/null
+++ b/src/boost/libs/hana/test/experimental/view/transformed/ap.cpp
@@ -0,0 +1,122 @@
+// 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)
+
+#include <boost/hana/ap.hpp>
+#include <boost/hana/assert.hpp>
+#include <boost/hana/equal.hpp>
+#include <boost/hana/experimental/view.hpp>
+#include <boost/hana/functional/id.hpp>
+
+#include <laws/base.hpp>
+#include <support/seq.hpp>
+namespace hana = boost::hana;
+using hana::test::_injection;
+using hana::test::ct_eq;
+
+
+int main() {
+ auto container = ::seq;
+ auto f = hana::test::_injection<99>{};
+
+ {
+ auto storage = container();
+ auto functions = container();
+ auto transformed_storage = hana::experimental::transformed(storage, f);
+ auto transformed_functions = hana::experimental::transformed(functions, hana::id);
+ BOOST_HANA_CONSTANT_CHECK(hana::equal(
+ hana::ap(transformed_functions, transformed_storage),
+ container()
+ ));
+ }{
+ auto storage = container(ct_eq<0>{});
+ auto functions = container();
+ auto transformed_storage = hana::experimental::transformed(storage, f);
+ auto transformed_functions = hana::experimental::transformed(functions, hana::id);
+ BOOST_HANA_CONSTANT_CHECK(hana::equal(
+ hana::ap(transformed_functions, transformed_storage),
+ container()
+ ));
+ }{
+ auto storage = container();
+ auto functions = container(ct_eq<0>{});
+ auto transformed_storage = hana::experimental::transformed(storage, f);
+ auto transformed_functions = hana::experimental::transformed(functions, hana::id);
+ BOOST_HANA_CONSTANT_CHECK(hana::equal(
+ hana::ap(transformed_functions, transformed_storage),
+ container()
+ ));
+ }
+
+ {
+ auto storage = container(ct_eq<0>{});
+ auto functions = container(_injection<0>{});
+ auto transformed_storage = hana::experimental::transformed(storage, f);
+ auto transformed_functions = hana::experimental::transformed(functions, hana::id);
+ BOOST_HANA_CONSTANT_CHECK(hana::equal(
+ hana::ap(transformed_functions, transformed_storage),
+ container(_injection<0>{}(f(ct_eq<0>{})))
+ ));
+ }{
+ auto storage = container(ct_eq<0>{});
+ auto functions = container(_injection<0>{}, _injection<1>{});
+ auto transformed_storage = hana::experimental::transformed(storage, f);
+ auto transformed_functions = hana::experimental::transformed(functions, hana::id);
+ BOOST_HANA_CONSTANT_CHECK(hana::equal(
+ hana::ap(transformed_functions, transformed_storage),
+ container(_injection<0>{}(f(ct_eq<0>{})),
+ _injection<1>{}(f(ct_eq<0>{})))
+ ));
+ }{
+ auto storage = container(ct_eq<0>{});
+ auto functions = container(_injection<0>{}, _injection<1>{}, _injection<2>{});
+ auto transformed_storage = hana::experimental::transformed(storage, f);
+ auto transformed_functions = hana::experimental::transformed(functions, hana::id);
+ BOOST_HANA_CONSTANT_CHECK(hana::equal(
+ hana::ap(transformed_functions, transformed_storage),
+ container(_injection<0>{}(f(ct_eq<0>{})),
+ _injection<1>{}(f(ct_eq<0>{})),
+ _injection<2>{}(f(ct_eq<0>{})))
+ ));
+ }
+
+ {
+ auto storage = container(ct_eq<0>{}, ct_eq<1>{});
+ auto functions = container(_injection<0>{});
+ auto transformed_storage = hana::experimental::transformed(storage, f);
+ auto transformed_functions = hana::experimental::transformed(functions, hana::id);
+ BOOST_HANA_CONSTANT_CHECK(hana::equal(
+ hana::ap(transformed_functions, transformed_storage),
+ container(_injection<0>{}(f(ct_eq<0>{})),
+ _injection<0>{}(f(ct_eq<1>{})))
+ ));
+ }{
+ auto storage = container(ct_eq<0>{}, ct_eq<1>{}, ct_eq<2>{});
+ auto functions = container(_injection<0>{});
+ auto transformed_storage = hana::experimental::transformed(storage, f);
+ auto transformed_functions = hana::experimental::transformed(functions, hana::id);
+ BOOST_HANA_CONSTANT_CHECK(hana::equal(
+ hana::ap(transformed_functions, transformed_storage),
+ container(_injection<0>{}(f(ct_eq<0>{})),
+ _injection<0>{}(f(ct_eq<1>{})),
+ _injection<0>{}(f(ct_eq<2>{})))
+ ));
+ }
+
+ {
+ auto storage = container(ct_eq<0>{}, ct_eq<1>{}, ct_eq<2>{});
+ auto functions = container(_injection<0>{}, _injection<1>{});
+ auto transformed_storage = hana::experimental::transformed(storage, f);
+ auto transformed_functions = hana::experimental::transformed(functions, hana::id);
+ BOOST_HANA_CONSTANT_CHECK(hana::equal(
+ hana::ap(transformed_functions, transformed_storage),
+ container(_injection<0>{}(f(ct_eq<0>{})),
+ _injection<0>{}(f(ct_eq<1>{})),
+ _injection<0>{}(f(ct_eq<2>{})),
+
+ _injection<1>{}(f(ct_eq<0>{})),
+ _injection<1>{}(f(ct_eq<1>{})),
+ _injection<1>{}(f(ct_eq<2>{})))
+ ));
+ }
+}
diff --git a/src/boost/libs/hana/test/experimental/view/transformed/at.cpp b/src/boost/libs/hana/test/experimental/view/transformed/at.cpp
new file mode 100644
index 000000000..2379f2878
--- /dev/null
+++ b/src/boost/libs/hana/test/experimental/view/transformed/at.cpp
@@ -0,0 +1,73 @@
+// 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)
+
+#include <boost/hana/assert.hpp>
+#include <boost/hana/at.hpp>
+#include <boost/hana/equal.hpp>
+#include <boost/hana/experimental/view.hpp>
+
+#include <laws/base.hpp>
+#include <support/seq.hpp>
+namespace hana = boost::hana;
+using hana::test::ct_eq;
+
+
+int main() {
+ auto container = ::seq;
+ auto f = hana::test::_injection<0>{};
+
+ {
+ auto storage = container(ct_eq<0>{});
+ auto transformed = hana::experimental::transformed(storage, f);
+ BOOST_HANA_CONSTANT_CHECK(hana::equal(
+ hana::at_c<0>(transformed),
+ f(ct_eq<0>{})
+ ));
+ }{
+ auto storage = container(ct_eq<0>{}, ct_eq<1>{});
+ auto transformed = hana::experimental::transformed(storage, f);
+ BOOST_HANA_CONSTANT_CHECK(hana::equal(
+ hana::at_c<0>(transformed),
+ f(ct_eq<0>{})
+ ));
+ BOOST_HANA_CONSTANT_CHECK(hana::equal(
+ hana::at_c<1>(transformed),
+ f(ct_eq<1>{})
+ ));
+ }{
+ auto storage = container(ct_eq<0>{}, ct_eq<1>{}, ct_eq<2>{});
+ auto transformed = hana::experimental::transformed(storage, f);
+ BOOST_HANA_CONSTANT_CHECK(hana::equal(
+ hana::at_c<0>(transformed),
+ f(ct_eq<0>{})
+ ));
+ BOOST_HANA_CONSTANT_CHECK(hana::equal(
+ hana::at_c<1>(transformed),
+ f(ct_eq<1>{})
+ ));
+ BOOST_HANA_CONSTANT_CHECK(hana::equal(
+ hana::at_c<2>(transformed),
+ f(ct_eq<2>{})
+ ));
+ }{
+ auto storage = container(ct_eq<0>{}, ct_eq<1>{}, ct_eq<2>{}, ct_eq<3>{});
+ auto transformed = hana::experimental::transformed(storage, f);
+ BOOST_HANA_CONSTANT_CHECK(hana::equal(
+ hana::at_c<0>(transformed),
+ f(ct_eq<0>{})
+ ));
+ BOOST_HANA_CONSTANT_CHECK(hana::equal(
+ hana::at_c<1>(transformed),
+ f(ct_eq<1>{})
+ ));
+ BOOST_HANA_CONSTANT_CHECK(hana::equal(
+ hana::at_c<2>(transformed),
+ f(ct_eq<2>{})
+ ));
+ BOOST_HANA_CONSTANT_CHECK(hana::equal(
+ hana::at_c<3>(transformed),
+ f(ct_eq<3>{})
+ ));
+ }
+}
diff --git a/src/boost/libs/hana/test/experimental/view/transformed/drop_front.cpp b/src/boost/libs/hana/test/experimental/view/transformed/drop_front.cpp
new file mode 100644
index 000000000..0db64fd41
--- /dev/null
+++ b/src/boost/libs/hana/test/experimental/view/transformed/drop_front.cpp
@@ -0,0 +1,98 @@
+// 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)
+
+#include <boost/hana/assert.hpp>
+#include <boost/hana/drop_front.hpp>
+#include <boost/hana/equal.hpp>
+#include <boost/hana/experimental/view.hpp>
+#include <boost/hana/integral_constant.hpp>
+
+#include <laws/base.hpp>
+#include <support/seq.hpp>
+namespace hana = boost::hana;
+using hana::test::ct_eq;
+
+
+int main() {
+ auto container = ::seq;
+ auto f = hana::test::_injection<0>{};
+
+ {
+ auto storage = container();
+ auto transformed = hana::experimental::transformed(storage, f);
+ BOOST_HANA_CONSTANT_CHECK(hana::equal(
+ hana::drop_front(transformed, hana::size_c<0>),
+ container()
+ ));
+ }
+
+ {
+ auto storage = container(ct_eq<0>{});
+ auto transformed = hana::experimental::transformed(storage, f);
+ BOOST_HANA_CONSTANT_CHECK(hana::equal(
+ hana::drop_front(transformed, hana::size_c<0>),
+ container(f(ct_eq<0>{}))
+ ));
+ }{
+ auto storage = container(ct_eq<0>{});
+ auto transformed = hana::experimental::transformed(storage, f);
+ BOOST_HANA_CONSTANT_CHECK(hana::equal(
+ hana::drop_front(transformed, hana::size_c<1>),
+ container()
+ ));
+ }
+
+ {
+ auto storage = container(ct_eq<0>{}, ct_eq<1>{});
+ auto transformed = hana::experimental::transformed(storage, f);
+ BOOST_HANA_CONSTANT_CHECK(hana::equal(
+ hana::drop_front(transformed, hana::size_c<0>),
+ container(f(ct_eq<0>{}), f(ct_eq<1>{}))
+ ));
+ }{
+ auto storage = container(ct_eq<0>{}, ct_eq<1>{});
+ auto transformed = hana::experimental::transformed(storage, f);
+ BOOST_HANA_CONSTANT_CHECK(hana::equal(
+ hana::drop_front(transformed, hana::size_c<1>),
+ container(f(ct_eq<1>{}))
+ ));
+ }{
+ auto storage = container(ct_eq<0>{}, ct_eq<1>{});
+ auto transformed = hana::experimental::transformed(storage, f);
+ BOOST_HANA_CONSTANT_CHECK(hana::equal(
+ hana::drop_front(transformed, hana::size_c<2>),
+ container()
+ ));
+ }
+
+ {
+ auto storage = container(ct_eq<0>{}, ct_eq<1>{}, ct_eq<2>{});
+ auto transformed = hana::experimental::transformed(storage, f);
+ BOOST_HANA_CONSTANT_CHECK(hana::equal(
+ hana::drop_front(transformed, hana::size_c<0>),
+ container(f(ct_eq<0>{}), f(ct_eq<1>{}), f(ct_eq<2>{}))
+ ));
+ }{
+ auto storage = container(ct_eq<0>{}, ct_eq<1>{}, ct_eq<2>{});
+ auto transformed = hana::experimental::transformed(storage, f);
+ BOOST_HANA_CONSTANT_CHECK(hana::equal(
+ hana::drop_front(transformed, hana::size_c<1>),
+ container(f(ct_eq<1>{}), f(ct_eq<2>{}))
+ ));
+ }{
+ auto storage = container(ct_eq<0>{}, ct_eq<1>{}, ct_eq<2>{});
+ auto transformed = hana::experimental::transformed(storage, f);
+ BOOST_HANA_CONSTANT_CHECK(hana::equal(
+ hana::drop_front(transformed, hana::size_c<2>),
+ container(f(ct_eq<2>{}))
+ ));
+ }{
+ auto storage = container(ct_eq<0>{}, ct_eq<1>{}, ct_eq<2>{});
+ auto transformed = hana::experimental::transformed(storage, f);
+ BOOST_HANA_CONSTANT_CHECK(hana::equal(
+ hana::drop_front(transformed, hana::size_c<3>),
+ container()
+ ));
+ }
+}
diff --git a/src/boost/libs/hana/test/experimental/view/transformed/equal.cpp b/src/boost/libs/hana/test/experimental/view/transformed/equal.cpp
new file mode 100644
index 000000000..f7723c0cf
--- /dev/null
+++ b/src/boost/libs/hana/test/experimental/view/transformed/equal.cpp
@@ -0,0 +1,50 @@
+// 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)
+
+#include <boost/hana/assert.hpp>
+#include <boost/hana/equal.hpp>
+#include <boost/hana/experimental/view.hpp>
+#include <boost/hana/functional/id.hpp>
+#include <boost/hana/not.hpp>
+
+#include <support/seq.hpp>
+namespace hana = boost::hana;
+
+
+int main() {
+ auto container = ::seq;
+
+ auto xs = container(0, '1', 2.2);
+ auto tr = hana::experimental::transformed(xs, hana::id);
+
+ BOOST_HANA_CONSTANT_CHECK(hana::not_(hana::equal(
+ tr,
+ container()
+ )));
+
+ BOOST_HANA_CONSTANT_CHECK(hana::not_(hana::equal(
+ tr,
+ container(0)
+ )));
+
+ BOOST_HANA_CONSTANT_CHECK(hana::not_(hana::equal(
+ tr,
+ container(0, '1')
+ )));
+
+ BOOST_HANA_RUNTIME_CHECK(hana::equal(
+ tr,
+ container(0, '1', 2.2)
+ ));
+
+ BOOST_HANA_CONSTANT_CHECK(hana::not_(hana::equal(
+ tr,
+ container(0, '1', 2.2, 345)
+ )));
+
+ BOOST_HANA_RUNTIME_CHECK(hana::not_(hana::equal(
+ tr,
+ container('0', '1', '2')
+ )));
+}
diff --git a/src/boost/libs/hana/test/experimental/view/transformed/is_empty.cpp b/src/boost/libs/hana/test/experimental/view/transformed/is_empty.cpp
new file mode 100644
index 000000000..aafec8ab5
--- /dev/null
+++ b/src/boost/libs/hana/test/experimental/view/transformed/is_empty.cpp
@@ -0,0 +1,36 @@
+// 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)
+
+#include <boost/hana/assert.hpp>
+#include <boost/hana/experimental/view.hpp>
+#include <boost/hana/is_empty.hpp>
+#include <boost/hana/not.hpp>
+
+#include <support/seq.hpp>
+namespace hana = boost::hana;
+
+
+struct undefined { };
+
+int main() {
+ auto container = ::seq;
+
+ {
+ auto xs = container();
+ auto tr = hana::experimental::transformed(xs, undefined{});
+ BOOST_HANA_CONSTANT_CHECK(hana::is_empty(tr));
+ }
+
+ {
+ auto xs = container(undefined{});
+ auto tr = hana::experimental::transformed(xs, undefined{});
+ BOOST_HANA_CONSTANT_CHECK(hana::not_(hana::is_empty(tr)));
+ }
+
+ {
+ auto xs = container(undefined{}, undefined{});
+ auto tr = hana::experimental::transformed(xs, undefined{});
+ BOOST_HANA_CONSTANT_CHECK(hana::not_(hana::is_empty(tr)));
+ }
+}
diff --git a/src/boost/libs/hana/test/experimental/view/transformed/laziness.cpp b/src/boost/libs/hana/test/experimental/view/transformed/laziness.cpp
new file mode 100644
index 000000000..c1c9fc4ca
--- /dev/null
+++ b/src/boost/libs/hana/test/experimental/view/transformed/laziness.cpp
@@ -0,0 +1,20 @@
+// 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)
+
+#include <boost/hana/experimental/view.hpp>
+
+#include <laws/base.hpp>
+#include <support/seq.hpp>
+namespace hana = boost::hana;
+using hana::test::ct_eq;
+
+
+struct undefined { };
+
+int main() {
+ // Make sure we do not evaluate the function unless required
+ auto storage = ::seq(ct_eq<0>{}, ct_eq<1>{}, ct_eq<2>{});
+ auto transformed = hana::experimental::transformed(storage, undefined{});
+ (void)transformed;
+}
diff --git a/src/boost/libs/hana/test/experimental/view/transformed/length.cpp b/src/boost/libs/hana/test/experimental/view/transformed/length.cpp
new file mode 100644
index 000000000..516df7da8
--- /dev/null
+++ b/src/boost/libs/hana/test/experimental/view/transformed/length.cpp
@@ -0,0 +1,49 @@
+// 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)
+
+#include <boost/hana/assert.hpp>
+#include <boost/hana/equal.hpp>
+#include <boost/hana/experimental/view.hpp>
+#include <boost/hana/integral_constant.hpp>
+#include <boost/hana/length.hpp>
+
+#include <support/seq.hpp>
+namespace hana = boost::hana;
+
+
+template <int> struct undefined { };
+
+int main() {
+ auto container = ::seq;
+
+ {
+ auto storage = container();
+ auto transformed = hana::experimental::transformed(storage, undefined<99>{});
+ BOOST_HANA_CONSTANT_CHECK(hana::equal(
+ hana::length(transformed),
+ hana::size_c<0>
+ ));
+ }{
+ auto storage = container(undefined<0>{});
+ auto transformed = hana::experimental::transformed(storage, undefined<99>{});
+ BOOST_HANA_CONSTANT_CHECK(hana::equal(
+ hana::length(transformed),
+ hana::size_c<1>
+ ));
+ }{
+ auto storage = container(undefined<0>{}, undefined<1>{});
+ auto transformed = hana::experimental::transformed(storage, undefined<99>{});
+ BOOST_HANA_CONSTANT_CHECK(hana::equal(
+ hana::length(transformed),
+ hana::size_c<2>
+ ));
+ }{
+ auto storage = container(undefined<0>{}, undefined<1>{}, undefined<2>{});
+ auto transformed = hana::experimental::transformed(storage, undefined<99>{});
+ BOOST_HANA_CONSTANT_CHECK(hana::equal(
+ hana::length(transformed),
+ hana::size_c<3>
+ ));
+ }
+}
diff --git a/src/boost/libs/hana/test/experimental/view/transformed/less.cpp b/src/boost/libs/hana/test/experimental/view/transformed/less.cpp
new file mode 100644
index 000000000..562e0a462
--- /dev/null
+++ b/src/boost/libs/hana/test/experimental/view/transformed/less.cpp
@@ -0,0 +1,58 @@
+// 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)
+
+#include <boost/hana/assert.hpp>
+#include <boost/hana/experimental/view.hpp>
+#include <boost/hana/less.hpp>
+#include <boost/hana/not.hpp>
+
+#include <laws/base.hpp>
+#include <support/seq.hpp>
+namespace hana = boost::hana;
+using hana::test::ct_ord;
+
+
+int main() {
+ auto container = ::seq;
+ auto f = hana::test::_injection<0>{};
+
+ {
+ auto storage = container();
+ auto transformed = hana::experimental::transformed(storage, f);
+ BOOST_HANA_CONSTANT_CHECK(hana::not_(hana::less(
+ transformed,
+ container()
+ )));
+ }{
+ auto storage = container(ct_ord<0>{});
+ auto transformed = hana::experimental::transformed(storage, f);
+ BOOST_HANA_CONSTANT_CHECK(hana::less(
+ container(),
+ transformed
+ ));
+ BOOST_HANA_CONSTANT_CHECK(hana::not_(hana::less(
+ container(f(ct_ord<0>{})),
+ transformed
+ )));
+ BOOST_HANA_CONSTANT_CHECK(hana::not_(hana::less(
+ transformed,
+ container()
+ )));
+ }{
+ auto storage = container(ct_ord<0>{}, ct_ord<1>{});
+ auto transformed = hana::experimental::transformed(storage, f);
+ BOOST_HANA_CONSTANT_CHECK(hana::less(
+ container(),
+ transformed
+ ));
+ BOOST_HANA_CONSTANT_CHECK(hana::less(
+ container(f(ct_ord<0>{})),
+ transformed
+ ));
+ BOOST_HANA_CONSTANT_CHECK(hana::less(
+ container(f(ct_ord<0>{}), f(ct_ord<0>{})),
+ transformed
+ ));
+ }
+}
diff --git a/src/boost/libs/hana/test/experimental/view/transformed/transform.cpp b/src/boost/libs/hana/test/experimental/view/transformed/transform.cpp
new file mode 100644
index 000000000..6fbab6789
--- /dev/null
+++ b/src/boost/libs/hana/test/experimental/view/transformed/transform.cpp
@@ -0,0 +1,57 @@
+// 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)
+
+#include <boost/hana/assert.hpp>
+#include <boost/hana/equal.hpp>
+#include <boost/hana/experimental/view.hpp>
+#include <boost/hana/transform.hpp>
+
+#include <laws/base.hpp>
+#include <support/seq.hpp>
+namespace hana = boost::hana;
+using hana::test::ct_eq;
+
+
+int main() {
+ auto container = ::seq;
+ auto f = hana::test::_injection<0>{};
+ auto g = hana::test::_injection<1>{};
+
+ {
+ auto storage = container();
+ auto transformed = hana::experimental::transformed(storage, f);
+ BOOST_HANA_CONSTANT_CHECK(hana::equal(
+ hana::transform(transformed, g),
+ container()
+ ));
+ }{
+ auto storage = container(ct_eq<0>{});
+ auto transformed = hana::experimental::transformed(storage, f);
+ BOOST_HANA_CONSTANT_CHECK(hana::equal(
+ hana::transform(transformed, g),
+ container(g(f(ct_eq<0>{})))
+ ));
+ }{
+ auto storage = container(ct_eq<0>{}, ct_eq<1>{});
+ auto transformed = hana::experimental::transformed(storage, f);
+ BOOST_HANA_CONSTANT_CHECK(hana::equal(
+ hana::transform(transformed, g),
+ container(g(f(ct_eq<0>{})), g(f(ct_eq<1>{})))
+ ));
+ }{
+ auto storage = container(ct_eq<0>{}, ct_eq<1>{}, ct_eq<2>{});
+ auto transformed = hana::experimental::transformed(storage, f);
+ BOOST_HANA_CONSTANT_CHECK(hana::equal(
+ hana::transform(transformed, g),
+ container(g(f(ct_eq<0>{})), g(f(ct_eq<1>{})), g(f(ct_eq<2>{})))
+ ));
+ }{
+ auto storage = container(ct_eq<0>{}, ct_eq<1>{}, ct_eq<2>{}, ct_eq<3>{});
+ auto transformed = hana::experimental::transformed(storage, f);
+ BOOST_HANA_CONSTANT_CHECK(hana::equal(
+ hana::transform(transformed, g),
+ container(g(f(ct_eq<0>{})), g(f(ct_eq<1>{})), g(f(ct_eq<2>{})), g(f(ct_eq<3>{})))
+ ));
+ }
+}
diff --git a/src/boost/libs/hana/test/experimental/view/transformed/unpack.cpp b/src/boost/libs/hana/test/experimental/view/transformed/unpack.cpp
new file mode 100644
index 000000000..6ade5ed2e
--- /dev/null
+++ b/src/boost/libs/hana/test/experimental/view/transformed/unpack.cpp
@@ -0,0 +1,34 @@
+// 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)
+
+#include <boost/hana/assert.hpp>
+#include <boost/hana/equal.hpp>
+#include <boost/hana/experimental/view.hpp>
+#include <boost/hana/unpack.hpp>
+
+#include <laws/base.hpp>
+#include <support/seq.hpp>
+namespace hana = boost::hana;
+using hana::test::ct_eq;
+
+
+int main() {
+ auto f = hana::test::_injection<0>{};
+ auto g = hana::test::_injection<1>{};
+ auto check = [=](auto ...x) {
+ auto storage = ::seq(x...);
+ auto transformed = hana::experimental::transformed(storage, f);
+
+ BOOST_HANA_CONSTANT_CHECK(hana::equal(
+ hana::unpack(transformed, g),
+ g(f(x)...)
+ ));
+ };
+
+ check();
+ check(ct_eq<0>{});
+ check(ct_eq<0>{}, ct_eq<1>{});
+ check(ct_eq<0>{}, ct_eq<1>{}, ct_eq<2>{});
+ check(ct_eq<0>{}, ct_eq<1>{}, ct_eq<2>{}, ct_eq<3>{});
+}