// Copyright (c) 2012 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. #include "media/base/gmock_callback_support.h" #include "base/bind.h" #include "base/callback.h" #include "testing/gmock/include/gmock/gmock.h" #include "testing/gtest/include/gtest/gtest.h" using testing::ByRef; using testing::MockFunction; namespace media { typedef base::Callback TestCallback; void SetBool(const bool& src, bool* dst) { *dst = src; } TEST(GmockCallbackSupportTest, IsNullCallback) { MockFunction check; EXPECT_CALL(check, Call(IsNullCallback())); check.Call(TestCallback()); } TEST(GmockCallbackSupportTest, IsNotNullCallback) { MockFunction check; EXPECT_CALL(check, Call(IsNotNullCallback())); check.Call(base::Bind(&SetBool)); } TEST(GmockCallbackSupportTest, RunClosure) { MockFunction check; bool dst = false; EXPECT_CALL(check, Call(IsNotNullCallback())) .WillOnce(RunClosure<0>()); check.Call(base::Bind(&SetBool, true, &dst)); EXPECT_TRUE(dst); } TEST(GmockCallbackSupportTest, RunCallback0) { MockFunction check; bool dst = false; EXPECT_CALL(check, Call(IsNotNullCallback())) .WillOnce(RunCallback<0>(true, &dst)); check.Call(base::Bind(&SetBool)); EXPECT_TRUE(dst); } TEST(GmockCallbackSupportTest, RunCallback1) { MockFunction check; bool dst = false; EXPECT_CALL(check, Call(0, IsNotNullCallback())) .WillOnce(RunCallback<1>(true, &dst)); check.Call(0, base::Bind(&SetBool)); EXPECT_TRUE(dst); } TEST(GmockCallbackSupportTest, RunCallbackPassByRef) { MockFunction check; bool dst = false; bool src = false; EXPECT_CALL(check, Call(IsNotNullCallback())) .WillOnce(RunCallback<0>(ByRef(src), &dst)); src = true; check.Call(base::Bind(&SetBool)); EXPECT_TRUE(dst); } TEST(GmockCallbackSupportTest, RunCallbackPassByValue) { MockFunction check; bool dst = false; bool src = true; EXPECT_CALL(check, Call(IsNotNullCallback())) .WillOnce(RunCallback<0>(src, &dst)); src = false; check.Call(base::Bind(&SetBool)); EXPECT_TRUE(dst); } } // namespace media