/* * Copyright 2004 The WebRTC Project Authors. All rights reserved. * * Use of this source code is governed by a BSD-style license * that can be found in the LICENSE file in the root of the source * tree. An additional intellectual property rights grant can be found * in the file PATENTS. All contributing project authors may * be found in the AUTHORS file in the root of the source tree. */ #ifndef RTC_BASE_GUNIT_H_ #define RTC_BASE_GUNIT_H_ #include "absl/strings/string_view.h" #include "rtc_base/fake_clock.h" #include "rtc_base/logging.h" #include "rtc_base/thread.h" #include "test/gtest.h" // Wait until "ex" is true, or "timeout" expires. #define WAIT(ex, timeout) … // This returns the result of the test in res, so that we don't re-evaluate // the expression in the XXXX_WAIT macros below, since that causes problems // when the expression is only true the first time you check it. #define WAIT_(ex, timeout, res) … // The typical EXPECT_XXXX and ASSERT_XXXXs, but done until true or a timeout. // One can add failure message by appending "<< msg". #define EXPECT_TRUE_WAIT(ex, timeout) … #define EXPECT_EQ_WAIT(v1, v2, timeout) … #define ASSERT_TRUE_WAIT(ex, timeout) … #define ASSERT_EQ_WAIT(v1, v2, timeout) … // Version with a "soft" timeout and a margin. This logs if the timeout is // exceeded, but it only fails if the expression still isn't true after the // margin time passes. #define EXPECT_TRUE_WAIT_MARGIN(ex, timeout, margin) … // Wait until "ex" is true, or "timeout" expires, using fake clock where // messages are processed every millisecond. // TODO(pthatcher): Allow tests to control how many milliseconds to advance. #define SIMULATED_WAIT(ex, timeout, clock) … // This returns the result of the test in res, so that we don't re-evaluate // the expression in the XXXX_WAIT macros below, since that causes problems // when the expression is only true the first time you check it. #define SIMULATED_WAIT_(ex, timeout, res, clock) … // The typical EXPECT_XXXX, but done until true or a timeout with a fake clock. #define EXPECT_TRUE_SIMULATED_WAIT(ex, timeout, clock) … #define EXPECT_EQ_SIMULATED_WAIT(v1, v2, timeout, clock) … #define ASSERT_TRUE_SIMULATED_WAIT(ex, timeout, clock) … #define ASSERT_EQ_SIMULATED_WAIT(v1, v2, timeout, clock) … #endif // RTC_BASE_GUNIT_H_