Просмотр исходного кода

AK: Add tests for AllOf and AnyOf

Martin Janiczek 1 год назад
Родитель
Сommit
6c1626e83b
2 измененных файлов с 56 добавлено и 0 удалено
  1. 28 0
      Tests/AK/TestAllOf.cpp
  2. 28 0
      Tests/AK/TestAnyOf.cpp

+ 28 - 0
Tests/AK/TestAllOf.cpp

@@ -10,6 +10,34 @@
 #include <AK/Array.h>
 #include <AK/Vector.h>
 
+using namespace Test::Randomized;
+
+TEST_CASE(vacuous_truth)
+{
+    constexpr Array<int, 0> a {};
+    static_assert(all_of(a.begin(), a.end(), [](auto) { return false; }));
+    EXPECT(all_of(a.begin(), a.end(), [](auto) { return false; }));
+}
+
+TEST_CASE(all_but_one_false)
+{
+    constexpr Array<int, 5> a { 0, 1, 2, 3, 4 };
+    static_assert(!all_of(a.begin(), a.end(), [](auto n) { return n != 3; }));
+    EXPECT(!all_of(a.begin(), a.end(), [](auto n) { return n != 3; }));
+}
+
+RANDOMIZED_TEST_CASE(trivial_all_true)
+{
+    GEN(vec, Gen::vector(0, 10, []() { return Gen::unsigned_int(); }));
+    EXPECT(all_of(vec.begin(), vec.end(), [](auto) { return true; }));
+}
+
+RANDOMIZED_TEST_CASE(trivial_all_false)
+{
+    GEN(vec, Gen::vector(1, 10, []() { return Gen::unsigned_int(); }));
+    EXPECT(!all_of(vec.begin(), vec.end(), [](auto) { return false; }));
+}
+
 TEST_CASE(should_determine_if_predicate_applies_to_all_elements_in_container)
 {
     constexpr Array<int, 10> a {};

+ 28 - 0
Tests/AK/TestAnyOf.cpp

@@ -10,6 +10,34 @@
 #include <AK/Array.h>
 #include <AK/Vector.h>
 
+using namespace Test::Randomized;
+
+TEST_CASE(vacuous_truth)
+{
+    constexpr Array<int, 0> a {};
+    static_assert(!any_of(a.begin(), a.end(), [](auto) { return true; }));
+    EXPECT(!any_of(a.begin(), a.end(), [](auto) { return true; }));
+}
+
+TEST_CASE(all_false)
+{
+    constexpr Array<int, 5> a { 0, 1, 2, 3, 4 };
+    static_assert(!any_of(a.begin(), a.end(), [](auto n) { return n > 10; }));
+    EXPECT(!any_of(a.begin(), a.end(), [](auto n) { return n > 10; }));
+}
+
+RANDOMIZED_TEST_CASE(trivial_all_true)
+{
+    GEN(vec, Gen::vector(1, 10, []() { return Gen::unsigned_int(); }));
+    EXPECT(any_of(vec.begin(), vec.end(), [](auto) { return true; }));
+}
+
+RANDOMIZED_TEST_CASE(trivial_all_false)
+{
+    GEN(vec, Gen::vector(0, 10, []() { return Gen::unsigned_int(); }));
+    EXPECT(!any_of(vec.begin(), vec.end(), [](auto) { return false; }));
+}
+
 TEST_CASE(should_determine_if_predicate_applies_to_any_element_in_container)
 {
     constexpr Array<int, 10> a { 1 };