tuple: split tests into separate units
This commit is contained in:
parent
8f2f623520
commit
5f2b1a5c36
@ -537,7 +537,8 @@ if (TESTS)
|
||||
thread/ticketlock
|
||||
time/8601
|
||||
traits
|
||||
tuple
|
||||
tuple/value
|
||||
tuple/type
|
||||
typeidx
|
||||
uri
|
||||
utf8
|
||||
|
@ -1,12 +1,8 @@
|
||||
#include "tuple/type.hpp"
|
||||
#include "tuple/value.hpp"
|
||||
|
||||
#include "tap.hpp"
|
||||
|
||||
#include <array>
|
||||
#include <typeindex>
|
||||
#include <vector>
|
||||
#include "tuple/type.hpp"
|
||||
|
||||
#include <typeindex>
|
||||
|
||||
template <typename T>
|
||||
struct int_mapper
|
||||
@ -14,30 +10,19 @@ struct int_mapper
|
||||
typedef int type;
|
||||
};
|
||||
|
||||
|
||||
int
|
||||
main ()
|
||||
main (void)
|
||||
{
|
||||
util::TAP::logger tap;
|
||||
|
||||
static_assert (
|
||||
util::tuple::type::index<
|
||||
std::tuple<float,int,void>,
|
||||
int
|
||||
>::value == 1
|
||||
);
|
||||
|
||||
{
|
||||
auto tuple = std::make_tuple (1,2,3,4);
|
||||
std::vector<int> expected {{ 1, 2, 3, 4 }};
|
||||
|
||||
std::vector<int> actual;
|
||||
util::tuple::value::each ([&actual] (auto i) { actual.push_back (i); }, tuple);
|
||||
|
||||
tap.expect_eq (actual, expected, "value iteration");
|
||||
using tuple_t = std::tuple<float,int,void>;
|
||||
tap.expect_eq (util::tuple::type::index<tuple_t,int>::value, 1u, "tuple index extraction");
|
||||
}
|
||||
|
||||
{
|
||||
#if !defined(NO_RTTI)
|
||||
#if !defined(NO_RTTI)
|
||||
auto tuple = std::make_tuple (1u, 1, 1.f, 1.);
|
||||
std::vector<std::type_index> expected {
|
||||
std::type_index (typeid (1u)),
|
||||
@ -52,30 +37,18 @@ main ()
|
||||
});
|
||||
|
||||
tap.expect_eq (actual, expected, "type iteration");
|
||||
#else
|
||||
#else
|
||||
tap.skip ("type iteration because no-rtti");
|
||||
#endif
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
{
|
||||
|
||||
using src_t = std::tuple<std::string>;
|
||||
using dst_t = typename util::tuple::type::map<src_t, int_mapper>::type;
|
||||
|
||||
tap.expect (std::is_same<dst_t, std::tuple<int>>::value, "tuple type mapping");
|
||||
}
|
||||
|
||||
|
||||
{
|
||||
std::tuple a (1, 2);
|
||||
std::array<char,2> b { 'a', 'b' };
|
||||
std::tuple c (
|
||||
std::tuple(1, 'a'),
|
||||
std::tuple(2, 'b')
|
||||
);
|
||||
|
||||
tap.expect_eq (c, util::tuple::value::zip (a, b), "tuple zipping");
|
||||
}
|
||||
|
||||
return tap.status ();
|
||||
}
|
||||
}
|
33
test/tuple/value.cpp
Normal file
33
test/tuple/value.cpp
Normal file
@ -0,0 +1,33 @@
|
||||
#include "tap.hpp"
|
||||
|
||||
#include "tuple/value.hpp"
|
||||
|
||||
|
||||
int
|
||||
main (void)
|
||||
{
|
||||
util::TAP::logger tap;
|
||||
|
||||
{
|
||||
auto tuple = std::make_tuple (1,2,3,4);
|
||||
std::vector<int> expected {{ 1, 2, 3, 4 }};
|
||||
|
||||
std::vector<int> actual;
|
||||
util::tuple::value::each ([&actual] (auto i) { actual.push_back (i); }, tuple);
|
||||
|
||||
tap.expect_eq (actual, expected, "value iteration");
|
||||
}
|
||||
|
||||
{
|
||||
std::tuple a (1, 2);
|
||||
std::array<char,2> b { 'a', 'b' };
|
||||
std::tuple c (
|
||||
std::tuple(1, 'a'),
|
||||
std::tuple(2, 'b')
|
||||
);
|
||||
|
||||
tap.expect_eq (c, util::tuple::value::zip (a, b), "tuple zipping");
|
||||
}
|
||||
|
||||
return tap.status ();
|
||||
}
|
Loading…
Reference in New Issue
Block a user