Serenity Operating System
at master 65 lines 2.1 kB view raw
1/* 2 * Copyright (c) 2021, the SerenityOS developers. 3 * 4 * SPDX-License-Identifier: BSD-2-Clause 5 */ 6 7#include <LibTest/TestCase.h> 8 9#include <AK/AnyOf.h> 10#include <AK/Array.h> 11#include <AK/Vector.h> 12 13TEST_CASE(should_determine_if_predicate_applies_to_any_element_in_container) 14{ 15 constexpr Array<int, 10> a { 1 }; 16 17 static_assert(any_of(a.begin(), a.end(), [](auto elem) { return elem == 0; })); 18 static_assert(any_of(a.begin(), a.end(), [](auto elem) { return elem == 1; })); 19 static_assert(!any_of(a.begin(), a.end(), [](auto elem) { return elem == 2; })); 20 21 EXPECT(any_of(a.begin(), a.end(), [](auto elem) { return elem == 0; })); 22 EXPECT(any_of(a.begin(), a.end(), [](auto elem) { return elem == 1; })); 23 EXPECT(!any_of(a.begin(), a.end(), [](auto elem) { return elem == 2; })); 24} 25 26TEST_CASE(container_form) 27{ 28 constexpr Array a { 10, 20, 30 }; 29 static_assert(any_of(a, [](auto elem) { return elem == 10; })); 30 static_assert(any_of(a, [](auto elem) { return elem == 20; })); 31 static_assert(!any_of(a, [](auto elem) { return elem == 40; })); 32 33 EXPECT(any_of(a, [](auto elem) { return elem == 10; })); 34 EXPECT(any_of(a, [](auto elem) { return elem == 20; })); 35 EXPECT(!any_of(a, [](auto elem) { return elem == 40; })); 36 37 Vector b { 10, 20, 30 }; 38 EXPECT(any_of(b, [](auto elem) { return elem > 10; })); 39 EXPECT(!any_of(b, [](auto elem) { return elem > 40; })); 40 41 struct ArbitraryIterable { 42 struct ArbitraryIterator { 43 ArbitraryIterator(int v) 44 : value(v) 45 { 46 } 47 48 bool operator==(ArbitraryIterator const&) const = default; 49 int operator*() const { return value; } 50 ArbitraryIterator& operator++() 51 { 52 ++value; 53 return *this; 54 } 55 56 int value; 57 }; 58 ArbitraryIterator begin() const { return 0; } 59 ArbitraryIterator end() const { return 20; } 60 }; 61 62 ArbitraryIterable c; 63 EXPECT(any_of(c, [](auto elem) { return elem < 20; })); 64 EXPECT(!any_of(c, [](auto elem) { return elem > 31; })); 65}