blob: ed0a91c77f5b234d6f07a6dc86dc70bede312a53 [file] [log] [blame]
// Copyright 2019 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "chrome/browser/sharing/sharing_device_source.h"
#include "base/functional/callback.h"
#include "base/test/bind.h"
#include "chrome/browser/sharing/mock_sharing_device_source.h"
#include "components/sync_device_info/device_info.h"
#include "testing/gmock/include/gmock/gmock.h"
#include "testing/gtest/include/gtest/gtest.h"
TEST(SharingDeviceSourceTest, RunsCallbackImmediatelyIfReady) {
MockSharingDeviceSource device_source;
EXPECT_CALL(device_source, IsReady()).WillOnce(testing::Return(true));
bool did_run_callback = false;
device_source.AddReadyCallback(base::BindLambdaForTesting(
[&did_run_callback]() { did_run_callback = true; }));
EXPECT_TRUE(did_run_callback);
}
TEST(SharingDeviceSourceTest, RunsCallbackAfterIsReady) {
MockSharingDeviceSource device_source;
EXPECT_CALL(device_source, IsReady())
.WillOnce(testing::Return(false))
.WillOnce(testing::Return(true));
bool did_run_callback = false;
device_source.AddReadyCallback(base::BindLambdaForTesting(
[&did_run_callback]() { did_run_callback = true; }));
EXPECT_FALSE(did_run_callback);
device_source.MaybeRunReadyCallbacksForTesting();
EXPECT_TRUE(did_run_callback);
}