tor-browser

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

gtest_utils.h (1544B)


      1 /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
      2 /* vim: set ts=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 #ifndef gtest_utils_h__
      8 #define gtest_utils_h__
      9 
     10 #define GTEST_HAS_RTTI 0
     11 #include "gtest/gtest.h"
     12 #include "test_io.h"
     13 
     14 namespace nss_test {
     15 
     16 // Gtest utilities
     17 class Timeout : public PollTarget {
     18 public:
     19  Timeout(int32_t timer_ms) : handle_(nullptr) {
     20    Poller::Instance()->SetTimer(timer_ms, this, &Timeout::ExpiredCallback,
     21                                 &handle_);
     22  }
     23  ~Timeout() {
     24    if (handle_) {
     25      handle_->Cancel();
     26    }
     27  }
     28 
     29  static void ExpiredCallback(PollTarget* target, Event event) {
     30    Timeout* timeout = static_cast<Timeout*>(target);
     31    timeout->handle_ = nullptr;
     32  }
     33 
     34  bool timed_out() const { return !handle_; }
     35 
     36 private:
     37  std::shared_ptr<Poller::Timer> handle_;
     38 };
     39 
     40 }  // namespace nss_test
     41 
     42 #define WAIT_(expression, timeout) \
     43  do {                             \
     44    Timeout tm(timeout);           \
     45    while (!(expression)) {        \
     46      Poller::Instance()->Poll();  \
     47      if (tm.timed_out()) break;   \
     48    }                              \
     49  } while (0)
     50 
     51 #define ASSERT_TRUE_WAIT(expression, timeout) \
     52  do {                                        \
     53    WAIT_(expression, timeout);               \
     54    ASSERT_TRUE(expression);                  \
     55  } while (0)
     56 
     57 #endif