//======================================================================= // Copyright Baptiste Wicht 2013-2016. // Distributed under the terms of the MIT License. // (See accompanying file LICENSE or copy at // http://www.opensource.org/licenses/MIT) //======================================================================= #include #include #include #include "test.hpp" namespace { void test_base(){ std::tuple t; std::get<0>(t) = 99; std::get<1>(t) = 1.01; std::get<2>(t) = 'z'; check(std::get<0>(t) == 99, "Invalid std::get"); check(std::get<1>(t) == 1.01, "Invalid std::get"); check(std::get<2>(t) == 'z', "Invalid std::get"); } void test_make_tuple(){ auto t = std::make_tuple(99, 1.01, 'z'); check(std::get<0>(t) == 99, "Invalid std::get"); check(std::get<1>(t) == 1.01, "Invalid std::get"); check(std::get<2>(t) == 'z', "Invalid std::get"); } void test_tie(){ auto t = std::make_tuple(99, 1.01, 'z'); int a; double b; char c; std::tie(a, b, c) = t; check(a == 99, "Invalid std::get"); check(b == 1.01, "Invalid std::get"); check(c == 'z', "Invalid std::get"); } void test_more(){ auto t = std::tuple(); auto t2 = std::tuple(1, 2, 3); auto t3(t2); auto t4 = std::tuple(1, 2, 2); auto t5 = std::tuple(1, 2, 4); check(std::tuple_size::value == 3, "Invalid tuple_size"); check(std::tuple_size::value == 3, "Invalid tuple_size"); check(std::tuple_size::value == 3, "Invalid tuple_size"); check(std::get<0>(t2) == 1, "Invalid std::get"); check(std::get<1>(t2) == 2, "Invalid std::get"); check(std::get<2>(t2) == 3, "Invalid std::get"); check(std::get<0>(t3) == 1, "Invalid std::get"); check(std::get<1>(t3) == 2, "Invalid std::get"); check(std::get<2>(t3) == 3, "Invalid std::get"); check(std::get<0>(t4) == 1, "Invalid std::get"); check(std::get<1>(t4) == 2, "Invalid std::get"); check(std::get<2>(t4) == 2, "Invalid std::get"); check(std::get<0>(t5) == 1, "Invalid std::get"); check(std::get<1>(t5) == 2, "Invalid std::get"); check(std::get<2>(t5) == 4, "Invalid std::get"); t5 = t4; check(std::get<0>(t5) == 1, "Invalid std::get"); check(std::get<1>(t5) == 2, "Invalid std::get"); check(std::get<2>(t5) == 2, "Invalid std::get"); } } //end of anonymous namespace void tuple_tests(){ test_base(); test_make_tuple(); test_tie(); test_more(); }