tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

TestFlatten.cpp (2498B)


      1 /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
      2 /* vim: set ts=8 sts=2 et sw=2 tw=80: */
      3 /* This Source Code Form is subject to the terms of the Mozilla Public
      4 * License, v. 2.0. If a copy of the MPL was not distributed with this file,
      5 * You can obtain one at http://mozilla.org/MPL/2.0/. */
      6 
      7 #include "Flatten.h"
      8 #include "gtest/gtest.h"
      9 #include "nsTArray.h"
     10 
     11 namespace mozilla::dom::quota {
     12 
     13 #ifdef __clang__
     14 #  pragma clang diagnostic push
     15 #  pragma clang diagnostic ignored "-Wunreachable-code-loop-increment"
     16 #endif
     17 TEST(DOM_Quota_Flatten, FlatEmpty)
     18 {
     19  auto range = Flatten<int>(nsTArray<int>{});
     20 
     21  EXPECT_EQ(std::distance(range.begin(), range.end()), 0);
     22 
     23  for (const auto& item : range) {
     24    (void)item;
     25    FAIL();  // should never execute
     26  }
     27 }
     28 
     29 TEST(DOM_Quota_Flatten, NestedOuterEmpty)
     30 {
     31  auto range = Flatten<int>(nsTArray<CopyableTArray<int>>{});
     32 
     33  EXPECT_EQ(std::distance(range.begin(), range.end()), 0);
     34 
     35  for (const auto& item : range) {
     36    (void)item;
     37    FAIL();
     38  }
     39 }
     40 
     41 TEST(DOM_Quota_Flatten, NestedInnerEmpty)
     42 {
     43  auto range =
     44      Flatten<int>(nsTArray<CopyableTArray<int>>{CopyableTArray<int>{}});
     45 
     46  EXPECT_EQ(std::distance(range.begin(), range.end()), 0);
     47 
     48  for (const auto& item : range) {
     49    (void)item;
     50    FAIL();
     51  }
     52 }
     53 #ifdef __clang__
     54 #  pragma clang diagnostic pop
     55 #endif
     56 
     57 TEST(DOM_Quota_Flatten, NestedInnerSingular)
     58 {
     59  auto range =
     60      Flatten<int>(nsTArray<CopyableTArray<int>>{CopyableTArray<int>{1}});
     61 
     62  EXPECT_EQ(std::distance(range.begin(), range.end()), 1);
     63 
     64  nsTArray<int> flattened;
     65  for (const auto& item : range) {
     66    flattened.AppendElement(item);
     67  }
     68 
     69  EXPECT_EQ(nsTArray{1}, flattened);
     70 }
     71 
     72 TEST(DOM_Quota_Flatten, NestedInnerSingulars)
     73 {
     74  auto range = Flatten<int>(nsTArray<CopyableTArray<int>>{
     75      CopyableTArray<int>{1}, CopyableTArray<int>{2}});
     76 
     77  EXPECT_EQ(std::distance(range.begin(), range.end()), 2);
     78 
     79  nsTArray<int> flattened;
     80  for (const auto& item : range) {
     81    flattened.AppendElement(item);
     82  }
     83 
     84  EXPECT_EQ((nsTArray<int>{{1, 2}}), flattened);
     85 }
     86 
     87 TEST(DOM_Quota_Flatten, NestedInnerNonSingulars)
     88 {
     89  auto range = Flatten<int>(nsTArray<CopyableTArray<int>>{
     90      CopyableTArray<int>{1, 2}, CopyableTArray<int>{3, 4}});
     91 
     92  EXPECT_EQ(std::distance(range.begin(), range.end()), 4);
     93 
     94  nsTArray<int> flattened;
     95  for (const auto& item : range) {
     96    flattened.AppendElement(item);
     97  }
     98 
     99  EXPECT_EQ((nsTArray<int>{{1, 2, 3, 4}}), flattened);
    100 }
    101 
    102 }  // namespace mozilla::dom::quota