1e44cea59SPiJoules //===-- Unittests for Algorithm -------------------------------------------===// 2e44cea59SPiJoules // 3e44cea59SPiJoules // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4e44cea59SPiJoules // See https://llvm.org/LICENSE.txt for license information. 5e44cea59SPiJoules // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6e44cea59SPiJoules // 7e44cea59SPiJoules //===----------------------------------------------------------------------===// 8e44cea59SPiJoules 9e44cea59SPiJoules #include "src/__support/CPP/algorithm.h" 10e44cea59SPiJoules #include "src/__support/CPP/array.h" 11*5ff3ff33SPetr Hosek #include "src/__support/macros/config.h" 12e44cea59SPiJoules #include "test/UnitTest/Test.h" 13e44cea59SPiJoules 14e44cea59SPiJoules // TODO(https://github.com/llvm/llvm-project/issues/94066): Add unittests for 15e44cea59SPiJoules // the remaining algorithm functions. 16*5ff3ff33SPetr Hosek namespace LIBC_NAMESPACE_DECL { 17*5ff3ff33SPetr Hosek namespace cpp { 18e44cea59SPiJoules 19e44cea59SPiJoules TEST(LlvmLibcAlgorithmTest, FindIfNot) { 20e44cea59SPiJoules array<int, 4> nums{1, 2, 3, 4}; 21e44cea59SPiJoules EXPECT_EQ(find_if_not(nums.begin(), nums.end(), [](int i) { return i == 0; }), 22e44cea59SPiJoules nums.begin()); 23e44cea59SPiJoules EXPECT_EQ(find_if_not(nums.begin(), nums.end(), [](int i) { return i == 1; }), 24e44cea59SPiJoules nums.begin() + 1); 25e44cea59SPiJoules EXPECT_EQ(find_if_not(nums.begin(), nums.end(), [](int i) { return i < 4; }), 26e44cea59SPiJoules nums.begin() + 3); 27e44cea59SPiJoules EXPECT_EQ(find_if_not(nums.begin(), nums.end(), [](int i) { return i < 5; }), 28e44cea59SPiJoules nums.end()); 29e44cea59SPiJoules 30e44cea59SPiJoules EXPECT_EQ( 31e44cea59SPiJoules find_if_not(nums.begin() + 1, nums.end(), [](int i) { return i == 0; }), 32e44cea59SPiJoules nums.begin() + 1); 33e44cea59SPiJoules EXPECT_EQ( 34e44cea59SPiJoules find_if_not(nums.begin(), nums.begin(), [](int i) { return i == 0; }), 35e44cea59SPiJoules nums.begin()); 36e44cea59SPiJoules } 37e44cea59SPiJoules 38e44cea59SPiJoules TEST(LlvmLibcAlgorithmTest, AllOf) { 39e44cea59SPiJoules array<int, 4> nums{1, 2, 3, 4}; 40e44cea59SPiJoules EXPECT_TRUE(all_of(nums.begin(), nums.end(), [](int i) { return i < 5; })); 41e44cea59SPiJoules EXPECT_FALSE(all_of(nums.begin(), nums.end(), [](int i) { return i < 4; })); 42e44cea59SPiJoules EXPECT_TRUE( 43e44cea59SPiJoules all_of(nums.begin(), nums.begin() + 3, [](int i) { return i < 4; })); 44e44cea59SPiJoules EXPECT_TRUE( 45e44cea59SPiJoules all_of(nums.begin() + 1, nums.end(), [](int i) { return i > 1; })); 46e44cea59SPiJoules EXPECT_TRUE(all_of(nums.begin(), nums.begin(), [](int i) { return i < 0; })); 47e44cea59SPiJoules } 48e44cea59SPiJoules 49*5ff3ff33SPetr Hosek } // namespace cpp 50*5ff3ff33SPetr Hosek } // namespace LIBC_NAMESPACE_DECL 51