chromium/third_party/webrtc/rtc_base/gunit.h

/*
 *  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_