1*e0cc5187SIlya Isaev /* 2*e0cc5187SIlya Isaev Copyright (c) 2022 Intel Corporation 3*e0cc5187SIlya Isaev 4*e0cc5187SIlya Isaev Licensed under the Apache License, Version 2.0 (the "License"); 5*e0cc5187SIlya Isaev you may not use this file except in compliance with the License. 6*e0cc5187SIlya Isaev You may obtain a copy of the License at 7*e0cc5187SIlya Isaev 8*e0cc5187SIlya Isaev http://www.apache.org/licenses/LICENSE-2.0 9*e0cc5187SIlya Isaev 10*e0cc5187SIlya Isaev Unless required by applicable law or agreed to in writing, software 11*e0cc5187SIlya Isaev distributed under the License is distributed on an "AS IS" BASIS, 12*e0cc5187SIlya Isaev WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13*e0cc5187SIlya Isaev See the License for the specific language governing permissions and 14*e0cc5187SIlya Isaev limitations under the License. 15*e0cc5187SIlya Isaev */ 16*e0cc5187SIlya Isaev 17*e0cc5187SIlya Isaev // Message based key matching is a preview feature 18*e0cc5187SIlya Isaev #define TBB_PREVIEW_FLOW_GRAPH_FEATURES 1 19*e0cc5187SIlya Isaev 20*e0cc5187SIlya Isaev #include "common/config.h" 21*e0cc5187SIlya Isaev 22*e0cc5187SIlya Isaev #include "test_join_node.h" 23*e0cc5187SIlya Isaev 24*e0cc5187SIlya Isaev //! \file test_join_node_msg_key_matching_n_args.cpp 25*e0cc5187SIlya Isaev //! \brief Test for [preview] functionality 26*e0cc5187SIlya Isaev 27*e0cc5187SIlya Isaev template <typename T1, typename T2> 28*e0cc5187SIlya Isaev using make_tuple = decltype(std::tuple_cat(T1(), std::tuple<T2>())); 29*e0cc5187SIlya Isaev using T1 = std::tuple<MyMessageKeyWithoutKeyMethod<std::string, double>>; 30*e0cc5187SIlya Isaev using T2 = make_tuple<T1, MyMessageKeyWithBrokenKey<std::string, int>>; 31*e0cc5187SIlya Isaev using T3 = make_tuple < T2, MyMessageKeyWithoutKey<std::string, int>>; 32*e0cc5187SIlya Isaev using T4 = make_tuple < T3, MyMessageKeyWithoutKeyMethod<std::string, size_t>>; 33*e0cc5187SIlya Isaev using T5 = make_tuple < T4, MyMessageKeyWithBrokenKey<std::string, int>>; 34*e0cc5187SIlya Isaev using T6 = make_tuple < T5, MyMessageKeyWithoutKeyMethod<std::string, short>>; 35*e0cc5187SIlya Isaev using T7 = make_tuple < T6, MyMessageKeyWithoutKeyMethod<std::string, threebyte>>; 36*e0cc5187SIlya Isaev using T8 = make_tuple < T7, MyMessageKeyWithBrokenKey<std::string, int>>; 37*e0cc5187SIlya Isaev using T9 = make_tuple < T8, MyMessageKeyWithoutKeyMethod<std::string, threebyte>>; 38*e0cc5187SIlya Isaev using T10 = make_tuple < T9, MyMessageKeyWithBrokenKey<std::string, size_t>>; 39*e0cc5187SIlya Isaev 40*e0cc5187SIlya Isaev #if TBB_TEST_LOW_WORKLOAD && TBB_USE_DEBUG 41*e0cc5187SIlya Isaev // the compiler might generate huge object file in debug (>64M) 42*e0cc5187SIlya Isaev #define TEST_CASE_TEMPLATE_N_ARGS(dec) TEST_CASE_TEMPLATE(dec, T, T2, T10) 43*e0cc5187SIlya Isaev #else 44*e0cc5187SIlya Isaev #define TEST_CASE_TEMPLATE_N_ARGS(dec) TEST_CASE_TEMPLATE(dec, T, T2, T3, T4, T5, T6, T7, T8, T9, T10) 45*e0cc5187SIlya Isaev #endif 46*e0cc5187SIlya Isaev 47*e0cc5187SIlya Isaev //! Serial test with different tuple sizes 48*e0cc5187SIlya Isaev //! \brief \ref error_guessing 49*e0cc5187SIlya Isaev TEST_CASE_TEMPLATE_N_ARGS("Serial N tests") { 50*e0cc5187SIlya Isaev generate_test<serial_test, T, message_based_key_matching<std::string&> >::do_test(); 51*e0cc5187SIlya Isaev } 52*e0cc5187SIlya Isaev 53*e0cc5187SIlya Isaev //! Parallel test with different tuple sizes 54*e0cc5187SIlya Isaev //! \brief \ref error_guessing 55*e0cc5187SIlya Isaev TEST_CASE_TEMPLATE_N_ARGS("Parallel N tests") { 56*e0cc5187SIlya Isaev generate_test<parallel_test, T, message_based_key_matching<std::string&> >::do_test(); 57*e0cc5187SIlya Isaev } 58