tor-browser

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

TestFileSystemHelpers.cpp (4046B)


      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 "gtest/gtest.h"
      8 #include "mozilla/RefPtr.h"
      9 #include "mozilla/dom/FileSystemHelpers.h"
     10 
     11 namespace mozilla::dom::fs {
     12 
     13 namespace {
     14 
     15 class TestObject {
     16 public:
     17  explicit TestObject(uint32_t aExpectedAddRefCnt = 0,
     18                      uint32_t aExpectedAddRegCnt = 0)
     19      : mExpectedAddRefCnt(aExpectedAddRefCnt),
     20        mExpectedAddRegCnt(aExpectedAddRegCnt),
     21        mAddRefCnt(0),
     22        mAddRegCnt(0),
     23        mRefCnt(0),
     24        mRegCnt(0),
     25        mClosed(false) {}
     26 
     27  uint32_t AddRef() {
     28    mRefCnt++;
     29    mAddRefCnt++;
     30    return mRefCnt;
     31  }
     32 
     33  uint32_t Release() {
     34    EXPECT_TRUE(mRefCnt > 0);
     35    mRefCnt--;
     36    if (mRefCnt == 0) {
     37      delete this;
     38      return 0;
     39    }
     40    return mRefCnt;
     41  }
     42 
     43  void Register() {
     44    EXPECT_FALSE(mClosed);
     45    mRegCnt++;
     46    mAddRegCnt++;
     47  }
     48 
     49  void Unregister() {
     50    EXPECT_FALSE(mClosed);
     51    EXPECT_TRUE(mRegCnt > 0);
     52    mRegCnt--;
     53    if (mRegCnt == 0) {
     54      mClosed = true;
     55    }
     56  }
     57 
     58  void Foo() const {}
     59 
     60 private:
     61  ~TestObject() {
     62    if (mExpectedAddRefCnt > 0) {
     63      EXPECT_EQ(mAddRefCnt, mExpectedAddRefCnt);
     64    }
     65    if (mExpectedAddRegCnt > 0) {
     66      EXPECT_EQ(mAddRegCnt, mExpectedAddRegCnt);
     67    }
     68  }
     69 
     70  uint32_t mExpectedAddRefCnt;
     71  uint32_t mExpectedAddRegCnt;
     72  uint32_t mAddRefCnt;
     73  uint32_t mAddRegCnt;
     74  uint32_t mRefCnt;
     75  uint32_t mRegCnt;
     76  bool mClosed;
     77 };
     78 
     79 }  // namespace
     80 
     81 TEST(TestFileSystemHelpers_Registered, Construct_Default)
     82 {
     83  {
     84    Registered<TestObject> testObject;
     85  }
     86 }
     87 
     88 TEST(TestFileSystemHelpers_Registered, Construct_Copy)
     89 {
     90  {
     91    Registered<TestObject> testObject1(MakeRefPtr<TestObject>(2, 2));
     92    Registered<TestObject> testObject2(testObject1);
     93    testObject2 = nullptr;
     94  }
     95 }
     96 
     97 TEST(TestFileSystemHelpers_Registered, Construct_Move)
     98 {
     99  {
    100    Registered<TestObject> testObject1(MakeRefPtr<TestObject>(1, 1));
    101    Registered<TestObject> testObject2(std::move(testObject1));
    102  }
    103 }
    104 
    105 TEST(TestFileSystemHelpers_Registered, Construct_FromRefPtr)
    106 {
    107  {
    108    Registered<TestObject> testObject(MakeRefPtr<TestObject>(1, 1));
    109  }
    110 }
    111 
    112 TEST(TestFileSystemHelpers_Registered, Operator_Assign_FromNullPtr)
    113 {
    114  {
    115    Registered<TestObject> testObject;
    116    testObject = nullptr;
    117  }
    118 }
    119 
    120 TEST(TestFileSystemHelpers_Registered, Operator_Assign_Copy)
    121 {
    122  {
    123    Registered<TestObject> testObject1(MakeRefPtr<TestObject>(2, 2));
    124    Registered<TestObject> testObject2;
    125    testObject2 = testObject1;
    126  }
    127 }
    128 
    129 TEST(TestFileSystemHelpers_Registered, Operator_Assign_Move)
    130 {
    131  {
    132    Registered<TestObject> testObject1(MakeRefPtr<TestObject>(1, 1));
    133    Registered<TestObject> testObject2;
    134    testObject2 = std::move(testObject1);
    135  }
    136 }
    137 
    138 TEST(TestFileSystemHelpers_Registered, Method_Inspect)
    139 {
    140  {
    141    Registered<TestObject> testObject1(MakeRefPtr<TestObject>(1, 1));
    142    const RefPtr<TestObject>& testObject2 = testObject1.inspect();
    143    (void)testObject2;
    144  }
    145 }
    146 
    147 TEST(TestFileSystemHelpers_Registered, Method_Unwrap)
    148 {
    149  {
    150    Registered<TestObject> testObject1(MakeRefPtr<TestObject>(1, 1));
    151    RefPtr<TestObject> testObject2 = testObject1.unwrap();
    152    (void)testObject2;
    153  }
    154 }
    155 
    156 TEST(TestFileSystemHelpers_Registered, Method_Get)
    157 {
    158  {
    159    Registered<TestObject> testObject1(MakeRefPtr<TestObject>(1, 1));
    160    TestObject* testObject2 = testObject1.get();
    161    (void)testObject2;
    162  }
    163 }
    164 
    165 TEST(TestFileSystemHelpers_Registered, Operator_Conversion_ToRawPtr)
    166 {
    167  {
    168    Registered<TestObject> testObject1(MakeRefPtr<TestObject>(1, 1));
    169    TestObject* testObject2 = testObject1;
    170    (void)testObject2;
    171  }
    172 }
    173 
    174 TEST(TestFileSystemHelpers_Registered, Operator_Dereference_ToRawPtr)
    175 {
    176  {
    177    Registered<TestObject> testObject(MakeRefPtr<TestObject>(1, 1));
    178    testObject->Foo();
    179  }
    180 }
    181 
    182 }  // namespace mozilla::dom::fs