spellcheck_provider_mac_unittest.cc revision cedac228d2dd51db4b79ea1e72c7f249408ee061
15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <vector> 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include "base/strings/utf_string_conversions.h" 890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#include "chrome/common/spellcheck_marker.h" 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/common/spellcheck_messages.h" 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/common/spellcheck_result.h" 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/renderer/spellchecker/spellcheck_provider_test.h" 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "testing/gtest/include/gtest/gtest.h" 13868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include "third_party/WebKit/public/platform/WebString.h" 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace { 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class SpellCheckProviderMacTest : public SpellCheckProviderTest {}; 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 19cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)void FakeMessageArrival( 20cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) SpellCheckProvider* provider, 21cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) const SpellCheckHostMsg_RequestTextCheck::Param& parameters) { 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::vector<SpellCheckResult> fake_result; 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool handled = provider->OnMessageReceived( 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SpellCheckMsg_RespondTextCheck( 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 0, 26cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) parameters.b, 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fake_result)); 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(handled); 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(SpellCheckProviderMacTest, SingleRoundtripSuccess) { 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FakeTextCheckingCompletion completion; 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 34f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) provider_.RequestTextChecking(blink::WebString("hello "), 3590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) &completion, 3690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) std::vector<SpellCheckMarker>()); 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(completion.completion_count_, 0U); 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(provider_.messages_.size(), 1U); 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(provider_.pending_text_request_size(), 1U); 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 41cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) SpellCheckHostMsg_RequestTextCheck::Param read_parameters1; 42cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) bool ok = SpellCheckHostMsg_RequestTextCheck::Read( 43cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) provider_.messages_[0], &read_parameters1); 44cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) EXPECT_TRUE(ok); 45cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) EXPECT_EQ(read_parameters1.c, base::UTF8ToUTF16("hello ")); 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 47cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) FakeMessageArrival(&provider_, read_parameters1); 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(completion.completion_count_, 1U); 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(provider_.pending_text_request_size(), 0U); 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(SpellCheckProviderMacTest, TwoRoundtripSuccess) { 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FakeTextCheckingCompletion completion1; 54f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) provider_.RequestTextChecking(blink::WebString("hello "), 5590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) &completion1, 5690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) std::vector<SpellCheckMarker>()); 575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FakeTextCheckingCompletion completion2; 58f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) provider_.RequestTextChecking(blink::WebString("bye "), 5990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) &completion2, 6090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) std::vector<SpellCheckMarker>()); 615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(completion1.completion_count_, 0U); 635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(completion2.completion_count_, 0U); 645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(provider_.messages_.size(), 2U); 655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(provider_.pending_text_request_size(), 2U); 665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 67cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) SpellCheckHostMsg_RequestTextCheck::Param read_parameters1; 68cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) bool ok = SpellCheckHostMsg_RequestTextCheck::Read( 69cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) provider_.messages_[0], &read_parameters1); 70cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) EXPECT_TRUE(ok); 71cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) EXPECT_EQ(read_parameters1.c, base::UTF8ToUTF16("hello ")); 725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 73cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) SpellCheckHostMsg_RequestTextCheck::Param read_parameters2; 74cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) ok = SpellCheckHostMsg_RequestTextCheck::Read( 75cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) provider_.messages_[1], &read_parameters2); 76cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) EXPECT_TRUE(ok); 77cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) EXPECT_EQ(read_parameters2.c, base::UTF8ToUTF16("bye ")); 785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FakeMessageArrival(&provider_, read_parameters1); 805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(completion1.completion_count_, 1U); 815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(completion2.completion_count_, 0U); 825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(provider_.pending_text_request_size(), 1U); 835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FakeMessageArrival(&provider_, read_parameters2); 855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(completion1.completion_count_, 1U); 865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(completion2.completion_count_, 1U); 875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(provider_.pending_text_request_size(), 0U); 885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace 91