1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82
|
// Copyright 2012 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include <tuple>
#include <vector>
#include "base/run_loop.h"
#include "base/strings/utf_string_conversions.h"
#include "components/spellcheck/common/spellcheck_result.h"
#include "components/spellcheck/renderer/spellcheck_provider_test.h"
#include "testing/gtest/include/gtest/gtest.h"
namespace {
class SpellCheckProviderMacTest : public SpellCheckProviderTest {};
TEST_F(SpellCheckProviderMacTest, SingleRoundtripSuccess) {
FakeTextCheckingResult completion;
provider_.RequestTextChecking(
u"hello ", std::make_unique<FakeTextCheckingCompletion>(&completion));
EXPECT_EQ(completion.completion_count_, 0U);
EXPECT_EQ(provider_.text_check_requests_.size(), 1U);
EXPECT_EQ(provider_.pending_text_request_size(), 1U);
const auto& text = provider_.text_check_requests_.back().first;
auto& callback = provider_.text_check_requests_.back().second;
EXPECT_EQ(text, u"hello ");
EXPECT_TRUE(callback);
std::vector<SpellCheckResult> fake_results;
std::move(callback).Run(fake_results);
base::RunLoop().RunUntilIdle();
EXPECT_EQ(completion.completion_count_, 1U);
EXPECT_EQ(provider_.pending_text_request_size(), 0U);
provider_.text_check_requests_.clear();
}
TEST_F(SpellCheckProviderMacTest, TwoRoundtripSuccess) {
FakeTextCheckingResult completion1;
provider_.RequestTextChecking(
u"hello ", std::make_unique<FakeTextCheckingCompletion>(&completion1));
FakeTextCheckingResult completion2;
provider_.RequestTextChecking(
u"bye ", std::make_unique<FakeTextCheckingCompletion>(&completion2));
EXPECT_EQ(completion1.completion_count_, 0U);
EXPECT_EQ(completion2.completion_count_, 0U);
EXPECT_EQ(provider_.text_check_requests_.size(), 2U);
EXPECT_EQ(provider_.pending_text_request_size(), 2U);
const auto& text1 = provider_.text_check_requests_[0].first;
auto& callback1 = provider_.text_check_requests_[0].second;
EXPECT_EQ(text1, u"hello ");
EXPECT_TRUE(callback1);
const auto& text2 = provider_.text_check_requests_[1].first;
auto& callback2 = provider_.text_check_requests_[1].second;
EXPECT_EQ(text2, u"bye ");
EXPECT_TRUE(callback2);
std::vector<SpellCheckResult> fake_results;
std::move(callback1).Run(fake_results);
base::RunLoop().RunUntilIdle();
EXPECT_EQ(completion1.completion_count_, 1U);
EXPECT_EQ(completion2.completion_count_, 0U);
EXPECT_EQ(provider_.pending_text_request_size(), 1U);
std::move(callback2).Run(fake_results);
base::RunLoop().RunUntilIdle();
EXPECT_EQ(completion1.completion_count_, 1U);
EXPECT_EQ(completion2.completion_count_, 1U);
EXPECT_EQ(provider_.pending_text_request_size(), 0U);
provider_.text_check_requests_.clear();
}
} // namespace
|