• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1The headers in this directory provide facilities for automatic unit testing.
2Basically, each header defines unit tests for an algorithm or a set of related
3algorithms. To get the tests for these algorithms, simply include the header
4at global scope. However, before including the header, you must define the
5following macros:
6
7    `MAKE_TUPLE(...)`
8        Must expand to a sequence holding `__VA_ARGS__`. A valid definition
9        would be `hana::make_tuple(__VA_ARGS__)`.
10
11    `TUPLE_TYPE(...)`
12        Must expand to the type of a sequence holding objects of type `__VA_ARGS__`.
13        A valid definition would be `hana::tuple<__VA_ARGS__>`.
14
15    `TUPLE_TAG`
16        Must expand to the tag of the sequence. A valid definition would
17        be `hana::tuple_tag`.
18
19
20The following macros may or may not be defined:
21
22    `MAKE_TUPLE_NO_CONSTEXPR`
23        Must be defined if the `MAKE_TUPLE` macro can't be used inside a
24        constant expression. Otherwise, `MAKE_TUPLE` is assumed to be able
25        to construct a `constexpr` container.
26
27The following directories contain automatic unit tests, and the following is
28sufficient when adding a new automatic unit test (in a file `${FILE}`):
29
30```sh
31DIRECTORIES=$(find test -type d -name auto | grep -v test/_include/auto)
32for d in ${DIRECTORIES}; do
33    cat > ${d}/${FILE}.cpp <<EOF
34// Copyright Louis Dionne 2013-2017
35// Distributed under the Boost Software License, Version 1.0.
36// (See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
37
38#include "_specs.hpp"
39#include <auto/${FILE}.hpp>
40
41int main() { }
42EOF
43done
44```
45