// Copyright 2017 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef BASE_TEST_BIND_TEST_UTIL_H_
#define BASE_TEST_BIND_TEST_UTIL_H_

#include "base/bind.h"

namespace base {
namespace internal {

template <typename F, typename Signature>
struct BindLambdaHelper;

template <typename F, typename R, typename... Args>
struct BindLambdaHelper<F, R(Args...)> {
  static R Run(const std::decay_t<F>& f, Args... args) {
    return f(std::forward<Args>(args)...);
  }
};

}  // namespace internal

// A variant of Bind() that can bind capturing lambdas for testing.
// This doesn't support extra arguments binding as the lambda itself can do.
#if __cplusplus < 201402L
template <typename F>
auto BindLambdaForTesting(F&& f) -> decltype(
    BindRepeating(&internal::BindLambdaHelper<
                      F,
                      internal::ExtractCallableRunType<std::decay_t<F>>>::Run,
                  std::forward<F>(f))) {
  using Signature = internal::ExtractCallableRunType<std::decay_t<F>>;
  return BindRepeating(&internal::BindLambdaHelper<F, Signature>::Run,
                       std::forward<F>(f));
}
#else
template <typename F>
decltype(auto) BindLambdaForTesting(F&& f) {
  using Signature = internal::ExtractCallableRunType<std::decay_t<F>>;
  return BindRepeating(&internal::BindLambdaHelper<F, Signature>::Run,
                       std::forward<F>(f));
}
#endif

}  // namespace base

#endif  // BASE_TEST_BIND_TEST_UTIL_H_
