blob: 65ed49f254caba3fdc5b559bcd943a77f31b467c [file] [log] [blame]
// Copyright 2017 The Fuchsia 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 "peridot/bin/agents/clipboard/clipboard_impl.h"
#include <string>
#include "peridot/lib/testing/test_with_ledger.h"
namespace modular {
class ClipboardImplTest : public testing::TestWithLedger {
public:
ClipboardImplTest() = default;
void SetUp() override {
TestWithLedger::SetUp();
clipboard_ = std::make_unique<ClipboardImpl>(ledger_client());
}
void TearDown() override {
clipboard_.reset();
TestWithLedger::TearDown();
}
protected:
void Push(const std::string& text) { clipboard_->Push(text); }
void Peek(const fuchsia::modular::Clipboard::PeekCallback& callback) {
clipboard_->Peek(callback);
}
std::unique_ptr<ClipboardImpl> clipboard_;
};
namespace {
TEST_F(ClipboardImplTest, FirstPeek) {
bool callback_called = false;
Peek([&callback_called](const fidl::StringPtr& text) {
EXPECT_EQ("", text);
callback_called = true;
});
RunLoopWithTimeoutOrUntil([&callback_called] { return callback_called; });
}
TEST_F(ClipboardImplTest, PushAndPeek) {
bool callback_called = false;
std::string expected_value = "a test string";
Push(expected_value);
Peek([&callback_called, expected_value](const fidl::StringPtr& text) {
EXPECT_EQ(expected_value, text);
callback_called = true;
});
RunLoopWithTimeoutOrUntil([&callback_called] { return callback_called; });
}
TEST_F(ClipboardImplTest, PushAndPeekTwice) {
int callback_called = 0;
std::string expected_value = "a test string";
Push(expected_value);
Peek([&callback_called, expected_value](const fidl::StringPtr& text) {
EXPECT_EQ(expected_value, text);
callback_called++;
});
Peek([&callback_called, expected_value](const fidl::StringPtr& text) {
EXPECT_EQ(expected_value, text);
callback_called++;
});
RunLoopWithTimeoutOrUntil(
[&callback_called] { return callback_called == 2; });
}
} // namespace
} // namespace modular