| // 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 <vector> |
| |
| #include "base/strings/utf_string_conversions.h" |
| #include "chrome/common/spellcheck_marker.h" |
| #include "chrome/common/spellcheck_messages.h" |
| #include "chrome/common/spellcheck_result.h" |
| #include "chrome/renderer/spellchecker/spellcheck_provider_test.h" |
| #include "testing/gtest/include/gtest/gtest.h" |
| #include "third_party/WebKit/public/platform/WebString.h" |
| |
| namespace { |
| |
| class SpellCheckProviderMacTest : public SpellCheckProviderTest {}; |
| |
| void FakeMessageArrival( |
| SpellCheckProvider* provider, |
| const SpellCheckHostMsg_RequestTextCheck::Param& parameters) { |
| std::vector<SpellCheckResult> fake_result; |
| bool handled = provider->OnMessageReceived( |
| SpellCheckMsg_RespondTextCheck( |
| 0, |
| parameters.b, |
| fake_result)); |
| EXPECT_TRUE(handled); |
| } |
| |
| TEST_F(SpellCheckProviderMacTest, SingleRoundtripSuccess) { |
| FakeTextCheckingCompletion completion; |
| |
| provider_.RequestTextChecking(blink::WebString("hello "), |
| &completion, |
| std::vector<SpellCheckMarker>()); |
| EXPECT_EQ(completion.completion_count_, 0U); |
| EXPECT_EQ(provider_.messages_.size(), 1U); |
| EXPECT_EQ(provider_.pending_text_request_size(), 1U); |
| |
| SpellCheckHostMsg_RequestTextCheck::Param read_parameters1; |
| bool ok = SpellCheckHostMsg_RequestTextCheck::Read( |
| provider_.messages_[0], &read_parameters1); |
| EXPECT_TRUE(ok); |
| EXPECT_EQ(read_parameters1.c, base::UTF8ToUTF16("hello ")); |
| |
| FakeMessageArrival(&provider_, read_parameters1); |
| EXPECT_EQ(completion.completion_count_, 1U); |
| EXPECT_EQ(provider_.pending_text_request_size(), 0U); |
| } |
| |
| TEST_F(SpellCheckProviderMacTest, TwoRoundtripSuccess) { |
| FakeTextCheckingCompletion completion1; |
| provider_.RequestTextChecking(blink::WebString("hello "), |
| &completion1, |
| std::vector<SpellCheckMarker>()); |
| FakeTextCheckingCompletion completion2; |
| provider_.RequestTextChecking(blink::WebString("bye "), |
| &completion2, |
| std::vector<SpellCheckMarker>()); |
| |
| EXPECT_EQ(completion1.completion_count_, 0U); |
| EXPECT_EQ(completion2.completion_count_, 0U); |
| EXPECT_EQ(provider_.messages_.size(), 2U); |
| EXPECT_EQ(provider_.pending_text_request_size(), 2U); |
| |
| SpellCheckHostMsg_RequestTextCheck::Param read_parameters1; |
| bool ok = SpellCheckHostMsg_RequestTextCheck::Read( |
| provider_.messages_[0], &read_parameters1); |
| EXPECT_TRUE(ok); |
| EXPECT_EQ(read_parameters1.c, base::UTF8ToUTF16("hello ")); |
| |
| SpellCheckHostMsg_RequestTextCheck::Param read_parameters2; |
| ok = SpellCheckHostMsg_RequestTextCheck::Read( |
| provider_.messages_[1], &read_parameters2); |
| EXPECT_TRUE(ok); |
| EXPECT_EQ(read_parameters2.c, base::UTF8ToUTF16("bye ")); |
| |
| FakeMessageArrival(&provider_, read_parameters1); |
| EXPECT_EQ(completion1.completion_count_, 1U); |
| EXPECT_EQ(completion2.completion_count_, 0U); |
| EXPECT_EQ(provider_.pending_text_request_size(), 1U); |
| |
| FakeMessageArrival(&provider_, read_parameters2); |
| EXPECT_EQ(completion1.completion_count_, 1U); |
| EXPECT_EQ(completion2.completion_count_, 1U); |
| EXPECT_EQ(provider_.pending_text_request_size(), 0U); |
| } |
| |
| } // namespace |