int do_tests(int lvl) { /* Level of detail: 3 full 2 errors only 1 error summary 0 none */ level = lvl; nr_fail = 0; nr_pass = 0; test_all_abs(); test_all_add(); test_all_divide(); test_all_equal(); test_all_integer(); test_all_integer_divide(); test_all_is_nan(); test_all_is_zero(); test_all_less(); test_all_modulo(); test_all_multiply(); test_all_neg(); test_all_normal(); test_all_not(); test_all_round(); test_all_signum(); test_all_subtract(); printf("\n\n%lli pass, %lli fail.\n", nr_pass, nr_fail); return nr_fail; }
int tc_libcxx_algorithms_alg_min_max_minmax_init_list_comp(void) { TC_ASSERT_EXPR((std::minmax({1, 2, 3}, std::greater<int>()) == std::pair<int, int>(3, 1))); TC_ASSERT_EXPR((std::minmax({1, 3, 2}, std::greater<int>()) == std::pair<int, int>(3, 1))); TC_ASSERT_EXPR((std::minmax({2, 1, 3}, std::greater<int>()) == std::pair<int, int>(3, 1))); TC_ASSERT_EXPR((std::minmax({2, 3, 1}, std::greater<int>()) == std::pair<int, int>(3, 1))); TC_ASSERT_EXPR((std::minmax({3, 1, 2}, std::greater<int>()) == std::pair<int, int>(3, 1))); TC_ASSERT_EXPR((std::minmax({3, 2, 1}, std::greater<int>()) == std::pair<int, int>(3, 1))); TC_ASSERT_EXPR((std::minmax({1, 2, 3}, all_equal ) == std::pair<int, int>(1, 3))); binary_counting_predicate<std::greater<int>, int, int> pred ((std::greater<int>())); TC_ASSERT_EXPR((std::minmax({1, 2, 2, 3, 3, 3, 5, 5, 5, 5, 5, 3}, std::ref(pred)) == std::pair<int, int>(5, 1))); TC_ASSERT_EXPR(pred.count() <= 18); // size == 12 TC_ASSERT_FUNC((test_all_equal({0}))); TC_ASSERT_FUNC((test_all_equal({0,1}))); TC_ASSERT_FUNC((test_all_equal({0,1,2}))); TC_ASSERT_FUNC((test_all_equal({0,1,2,3}))); TC_ASSERT_FUNC((test_all_equal({0,1,2,3,4}))); TC_ASSERT_FUNC((test_all_equal({0,1,2,3,4,5}))); TC_ASSERT_FUNC((test_all_equal({0,1,2,3,4,5,6}))); TC_ASSERT_FUNC((test_all_equal({0,1,2,3,4,5,6,7}))); TC_ASSERT_FUNC((test_all_equal({0,1,2,3,4,5,6,7,8}))); TC_ASSERT_FUNC((test_all_equal({0,1,2,3,4,5,6,7,8,9}))); TC_ASSERT_FUNC((test_all_equal({0,1,2,3,4,5,6,7,8,9,10}))); TC_ASSERT_FUNC((test_all_equal({0,1,2,3,4,5,6,7,8,9,10,11}))); #if TEST_STD_VER >= 14 { static_assert((std::minmax({1, 2, 3}, std::greater<int>()) == std::pair<int, int>(3, 1)), ""); static_assert((std::minmax({1, 3, 2}, std::greater<int>()) == std::pair<int, int>(3, 1)), ""); static_assert((std::minmax({2, 1, 3}, std::greater<int>()) == std::pair<int, int>(3, 1)), ""); static_assert((std::minmax({2, 3, 1}, std::greater<int>()) == std::pair<int, int>(3, 1)), ""); static_assert((std::minmax({3, 1, 2}, std::greater<int>()) == std::pair<int, int>(3, 1)), ""); static_assert((std::minmax({3, 2, 1}, std::greater<int>()) == std::pair<int, int>(3, 1)), ""); } #endif TC_SUCCESS_RESULT(); return 0; }
int main() { assert((std::minmax({1, 2, 3}, std::greater<int>()) == std::pair<int, int>(3, 1))); assert((std::minmax({1, 3, 2}, std::greater<int>()) == std::pair<int, int>(3, 1))); assert((std::minmax({2, 1, 3}, std::greater<int>()) == std::pair<int, int>(3, 1))); assert((std::minmax({2, 3, 1}, std::greater<int>()) == std::pair<int, int>(3, 1))); assert((std::minmax({3, 1, 2}, std::greater<int>()) == std::pair<int, int>(3, 1))); assert((std::minmax({3, 2, 1}, std::greater<int>()) == std::pair<int, int>(3, 1))); assert((std::minmax({1, 2, 3}, all_equal ) == std::pair<int, int>(1, 3))); binary_counting_predicate<std::greater<int>, int, int> pred ((std::greater<int>())); assert((std::minmax({1, 2, 2, 3, 3, 3, 5, 5, 5, 5, 5, 3}, std::ref(pred)) == std::pair<int, int>(5, 1))); assert(pred.count() <= 18); // size == 12 test_all_equal({0}); test_all_equal({0,1}); test_all_equal({0,1,2}); test_all_equal({0,1,2,3}); test_all_equal({0,1,2,3,4}); test_all_equal({0,1,2,3,4,5}); test_all_equal({0,1,2,3,4,5,6}); test_all_equal({0,1,2,3,4,5,6,7}); test_all_equal({0,1,2,3,4,5,6,7,8}); test_all_equal({0,1,2,3,4,5,6,7,8,9}); test_all_equal({0,1,2,3,4,5,6,7,8,9,10}); test_all_equal({0,1,2,3,4,5,6,7,8,9,10,11}); #if TEST_STD_VER >= 14 { static_assert((std::minmax({1, 2, 3}, std::greater<int>()) == std::pair<int, int>(3, 1)), ""); static_assert((std::minmax({1, 3, 2}, std::greater<int>()) == std::pair<int, int>(3, 1)), ""); static_assert((std::minmax({2, 1, 3}, std::greater<int>()) == std::pair<int, int>(3, 1)), ""); static_assert((std::minmax({2, 3, 1}, std::greater<int>()) == std::pair<int, int>(3, 1)), ""); static_assert((std::minmax({3, 1, 2}, std::greater<int>()) == std::pair<int, int>(3, 1)), ""); static_assert((std::minmax({3, 2, 1}, std::greater<int>()) == std::pair<int, int>(3, 1)), ""); } #endif }