Index: chrome/browser/spellchecker/feedback_unittest.cc |
diff --git a/chrome/browser/spellchecker/feedback_unittest.cc b/chrome/browser/spellchecker/feedback_unittest.cc |
deleted file mode 100644 |
index cc2d1f5cfe77a61103b8f15d40f834aa783cc744..0000000000000000000000000000000000000000 |
--- a/chrome/browser/spellchecker/feedback_unittest.cc |
+++ /dev/null |
@@ -1,302 +0,0 @@ |
-// Copyright (c) 2013 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. |
-// |
-// Unit tests for |Feedback| object. |
- |
-#include "chrome/browser/spellchecker/feedback.h" |
- |
-#include <stddef.h> |
-#include <stdint.h> |
- |
-#include "base/strings/utf_string_conversions.h" |
-#include "testing/gtest/include/gtest/gtest.h" |
- |
-using base::ASCIIToUTF16; |
- |
-namespace spellcheck { |
- |
-namespace { |
- |
-// Maximum number of bytes of feedback that would be sent to the server at once. |
-const size_t kMaxFeedbackSize = 1024; |
- |
-// Identifier for a renderer process. |
-const int kRendererProcessId = 7; |
- |
-// Hash identifier for a misspelling. |
-const uint32_t kMisspellingHash = 42; |
- |
-} // namespace |
- |
-// A test fixture to help keep the tests simple. |
-class FeedbackTest : public testing::Test { |
- public: |
- FeedbackTest() : feedback_(kMaxFeedbackSize) {} |
- ~FeedbackTest() override {} |
- |
- protected: |
- void AddMisspelling(int renderer_process_id, uint32_t hash) { |
- feedback_.AddMisspelling(renderer_process_id, |
- Misspelling(base::string16(), 0, 0, |
- std::vector<base::string16>(), hash)); |
- } |
- |
- spellcheck::Feedback feedback_; |
-}; |
- |
-TEST_F(FeedbackTest, LimitFeedbackSize) { |
- // Adding too much feedback data should prevent adding more feedback. |
- feedback_.AddMisspelling( |
- kRendererProcessId, |
- Misspelling( |
- base::ASCIIToUTF16("0123456789"), 0, 1, |
- std::vector<base::string16>(50, base::ASCIIToUTF16("9876543210")), |
- 0)); |
- feedback_.AddMisspelling( |
- kRendererProcessId, |
- Misspelling( |
- base::ASCIIToUTF16("0123456789"), 0, 1, |
- std::vector<base::string16>(50, base::ASCIIToUTF16("9876543210")), |
- kMisspellingHash)); |
- EXPECT_EQ(nullptr, feedback_.GetMisspelling(kMisspellingHash)); |
- |
- // Clearing the existing feedback data should allow adding feedback again. |
- feedback_.Clear(); |
- feedback_.AddMisspelling( |
- kRendererProcessId, |
- Misspelling( |
- base::ASCIIToUTF16("0123456789"), 0, 1, |
- std::vector<base::string16>(50, base::ASCIIToUTF16("9876543210")), |
- kMisspellingHash)); |
- EXPECT_NE(nullptr, feedback_.GetMisspelling(kMisspellingHash)); |
- feedback_.Clear(); |
- |
- // Erasing finalized misspellings should allow adding feedback again. |
- feedback_.AddMisspelling( |
- kRendererProcessId, |
- Misspelling( |
- base::ASCIIToUTF16("0123456789"), 0, 1, |
- std::vector<base::string16>(50, base::ASCIIToUTF16("9876543210")), |
- 0)); |
- feedback_.FinalizeRemovedMisspellings(kRendererProcessId, |
- std::vector<uint32_t>()); |
- feedback_.EraseFinalizedMisspellings(kRendererProcessId); |
- feedback_.AddMisspelling( |
- kRendererProcessId, |
- Misspelling( |
- base::ASCIIToUTF16("0123456789"), 0, 1, |
- std::vector<base::string16>(50, base::ASCIIToUTF16("9876543210")), |
- kMisspellingHash)); |
- EXPECT_NE(nullptr, feedback_.GetMisspelling(kMisspellingHash)); |
-} |
- |
-// Should be able to retrieve misspelling after it's added. |
-TEST_F(FeedbackTest, RetreiveMisspelling) { |
- EXPECT_EQ(nullptr, feedback_.GetMisspelling(kMisspellingHash)); |
- AddMisspelling(kRendererProcessId, kMisspellingHash); |
- Misspelling* result = feedback_.GetMisspelling(kMisspellingHash); |
- EXPECT_NE(nullptr, result); |
- EXPECT_EQ(kMisspellingHash, result->hash); |
-} |
- |
-// Removed misspellings should be finalized. |
-TEST_F(FeedbackTest, FinalizeRemovedMisspellings) { |
- static const int kRemovedMisspellingHash = 1; |
- static const int kRemainingMisspellingHash = 2; |
- AddMisspelling(kRendererProcessId, kRemovedMisspellingHash); |
- AddMisspelling(kRendererProcessId, kRemainingMisspellingHash); |
- std::vector<uint32_t> remaining_markers(1, kRemainingMisspellingHash); |
- feedback_.FinalizeRemovedMisspellings(kRendererProcessId, remaining_markers); |
- Misspelling* removed_misspelling = |
- feedback_.GetMisspelling(kRemovedMisspellingHash); |
- EXPECT_NE(nullptr, removed_misspelling); |
- EXPECT_TRUE(removed_misspelling->action.IsFinal()); |
- Misspelling* remaining_misspelling = |
- feedback_.GetMisspelling(kRemainingMisspellingHash); |
- EXPECT_NE(nullptr, remaining_misspelling); |
- EXPECT_FALSE(remaining_misspelling->action.IsFinal()); |
-} |
- |
-// Duplicate misspellings should not be finalized. |
-TEST_F(FeedbackTest, DuplicateMisspellingFinalization) { |
- AddMisspelling(kRendererProcessId, kMisspellingHash); |
- AddMisspelling(kRendererProcessId, kMisspellingHash); |
- std::vector<uint32_t> remaining_markers(1, kMisspellingHash); |
- feedback_.FinalizeRemovedMisspellings(kRendererProcessId, remaining_markers); |
- std::vector<Misspelling> misspellings = feedback_.GetAllMisspellings(); |
- EXPECT_EQ(static_cast<size_t>(1), misspellings.size()); |
- EXPECT_FALSE(misspellings[0].action.IsFinal()); |
-} |
- |
-// Misspellings should be associated with a renderer. |
-TEST_F(FeedbackTest, RendererHasMisspellings) { |
- EXPECT_FALSE(feedback_.RendererHasMisspellings(kRendererProcessId)); |
- AddMisspelling(kRendererProcessId, kMisspellingHash); |
- EXPECT_TRUE(feedback_.RendererHasMisspellings(kRendererProcessId)); |
-} |
- |
-// Should be able to retrieve misspellings in renderer. |
-TEST_F(FeedbackTest, GetMisspellingsInRenderer) { |
- AddMisspelling(kRendererProcessId, kMisspellingHash); |
- const std::vector<Misspelling>& renderer_with_misspellings = |
- feedback_.GetMisspellingsInRenderer(kRendererProcessId); |
- EXPECT_EQ(static_cast<size_t>(1), renderer_with_misspellings.size()); |
- EXPECT_EQ(kMisspellingHash, renderer_with_misspellings[0].hash); |
- const std::vector<Misspelling>& renderer_without_misspellings = |
- feedback_.GetMisspellingsInRenderer(kRendererProcessId + 1); |
- EXPECT_EQ(static_cast<size_t>(0), renderer_without_misspellings.size()); |
-} |
- |
-// Finalized misspellings should be erased. |
-TEST_F(FeedbackTest, EraseFinalizedMisspellings) { |
- AddMisspelling(kRendererProcessId, kMisspellingHash); |
- feedback_.FinalizeRemovedMisspellings(kRendererProcessId, |
- std::vector<uint32_t>()); |
- EXPECT_TRUE(feedback_.RendererHasMisspellings(kRendererProcessId)); |
- feedback_.EraseFinalizedMisspellings(kRendererProcessId); |
- EXPECT_FALSE(feedback_.RendererHasMisspellings(kRendererProcessId)); |
- EXPECT_TRUE(feedback_.GetMisspellingsInRenderer(kRendererProcessId).empty()); |
-} |
- |
-// Should be able to check for misspelling existence. |
-TEST_F(FeedbackTest, HasMisspelling) { |
- EXPECT_FALSE(feedback_.HasMisspelling(kMisspellingHash)); |
- AddMisspelling(kRendererProcessId, kMisspellingHash); |
- EXPECT_TRUE(feedback_.HasMisspelling(kMisspellingHash)); |
-} |
- |
-// Should be able to check for feedback data presence. |
-TEST_F(FeedbackTest, EmptyFeedback) { |
- EXPECT_TRUE(feedback_.Empty()); |
- AddMisspelling(kRendererProcessId, kMisspellingHash); |
- EXPECT_FALSE(feedback_.Empty()); |
-} |
- |
-// Should be able to retrieve a list of all renderers with misspellings. |
-TEST_F(FeedbackTest, GetRendersWithMisspellings) { |
- EXPECT_TRUE(feedback_.GetRendersWithMisspellings().empty()); |
- AddMisspelling(kRendererProcessId, kMisspellingHash); |
- AddMisspelling(kRendererProcessId + 1, kMisspellingHash + 1); |
- std::vector<int> result = feedback_.GetRendersWithMisspellings(); |
- EXPECT_EQ(static_cast<size_t>(2), result.size()); |
- EXPECT_NE(result[0], result[1]); |
- EXPECT_TRUE(result[0] == kRendererProcessId || |
- result[0] == kRendererProcessId + 1); |
- EXPECT_TRUE(result[1] == kRendererProcessId || |
- result[1] == kRendererProcessId + 1); |
-} |
- |
-// Should be able to finalize all misspellings. |
-TEST_F(FeedbackTest, FinalizeAllMisspellings) { |
- AddMisspelling(kRendererProcessId, kMisspellingHash); |
- AddMisspelling(kRendererProcessId + 1, kMisspellingHash + 1); |
- { |
- std::vector<Misspelling> pending = feedback_.GetAllMisspellings(); |
- for (std::vector<Misspelling>::const_iterator it = pending.begin(); |
- it != pending.end(); ++it) { |
- EXPECT_FALSE(it->action.IsFinal()); |
- } |
- } |
- feedback_.FinalizeAllMisspellings(); |
- { |
- std::vector<Misspelling> final = feedback_.GetAllMisspellings(); |
- for (std::vector<Misspelling>::const_iterator it = final.begin(); |
- it != final.end(); ++it) { |
- EXPECT_TRUE(it->action.IsFinal()); |
- } |
- } |
-} |
- |
-// Should be able to retrieve a copy of all misspellings. |
-TEST_F(FeedbackTest, GetAllMisspellings) { |
- EXPECT_TRUE(feedback_.GetAllMisspellings().empty()); |
- AddMisspelling(kRendererProcessId, kMisspellingHash); |
- AddMisspelling(kRendererProcessId + 1, kMisspellingHash + 1); |
- const std::vector<Misspelling>& result = feedback_.GetAllMisspellings(); |
- EXPECT_EQ(static_cast<size_t>(2), result.size()); |
- EXPECT_NE(result[0].hash, result[1].hash); |
- EXPECT_TRUE(result[0].hash == kMisspellingHash || |
- result[0].hash == kMisspellingHash + 1); |
- EXPECT_TRUE(result[1].hash == kMisspellingHash || |
- result[1].hash == kMisspellingHash + 1); |
-} |
- |
-// Should be able to clear all misspellings. |
-TEST_F(FeedbackTest, ClearFeedback) { |
- AddMisspelling(kRendererProcessId, kMisspellingHash); |
- AddMisspelling(kRendererProcessId + 1, kMisspellingHash + 1); |
- EXPECT_FALSE(feedback_.Empty()); |
- feedback_.Clear(); |
- EXPECT_TRUE(feedback_.Empty()); |
-} |
- |
-// Should be able to find misspellings by misspelled word. |
-TEST_F(FeedbackTest, FindMisspellingsByText) { |
- static const base::string16 kMisspelledText = |
- ASCIIToUTF16("Helllo world. Helllo world"); |
- static const base::string16 kSuggestion = ASCIIToUTF16("Hello"); |
- static const int kMisspellingStart = 0; |
- static const int kMisspellingLength = 6; |
- static const int kSentenceLength = 14; |
- static const int kNumberOfSentences = 2; |
- static const int kNumberOfRenderers = 2; |
- uint32_t hash = kMisspellingHash; |
- for (int renderer_process_id = kRendererProcessId; |
- renderer_process_id < kRendererProcessId + kNumberOfRenderers; |
- ++renderer_process_id) { |
- for (int j = 0; j < kNumberOfSentences; ++j) { |
- feedback_.AddMisspelling( |
- renderer_process_id, |
- Misspelling(kMisspelledText, kMisspellingStart + j * kSentenceLength, |
- kMisspellingLength, |
- std::vector<base::string16>(1, kSuggestion), ++hash)); |
- } |
- } |
- |
- static const base::string16 kOtherMisspelledText = |
- ASCIIToUTF16("Somethign else"); |
- static const base::string16 kOtherSuggestion = ASCIIToUTF16("Something"); |
- static const int kOtherMisspellingStart = 0; |
- static const int kOtherMisspellingLength = 9; |
- feedback_.AddMisspelling( |
- kRendererProcessId, |
- Misspelling(kOtherMisspelledText, kOtherMisspellingStart, |
- kOtherMisspellingLength, |
- std::vector<base::string16>(1, kOtherSuggestion), hash + 1)); |
- |
- static const base::string16 kMisspelledWord = ASCIIToUTF16("Helllo"); |
- const std::set<uint32_t>& misspellings = |
- feedback_.FindMisspellings(kMisspelledWord); |
- EXPECT_EQ(static_cast<size_t>(kNumberOfSentences * kNumberOfRenderers), |
- misspellings.size()); |
- |
- for (std::set<uint32_t>::const_iterator it = misspellings.begin(); |
- it != misspellings.end(); ++it) { |
- Misspelling* misspelling = feedback_.GetMisspelling(*it); |
- EXPECT_NE(nullptr, misspelling); |
- EXPECT_TRUE(misspelling->hash >= kMisspellingHash && |
- misspelling->hash <= hash); |
- EXPECT_EQ(kMisspelledWord, GetMisspelledString(*misspelling)); |
- } |
-} |
- |
-// Should not be able to find misspellings by misspelled word after they have |
-// been removed. |
-TEST_F(FeedbackTest, CannotFindMisspellingsByTextAfterErased) { |
- static const base::string16 kMisspelledText = ASCIIToUTF16("Helllo world"); |
- static const base::string16 kMisspelledWord = ASCIIToUTF16("Helllo"); |
- static const base::string16 kSuggestion = ASCIIToUTF16("Hello"); |
- static const int kMisspellingStart = 0; |
- static const int kMisspellingLength = 6; |
- feedback_.AddMisspelling( |
- kRendererProcessId, |
- Misspelling(kMisspelledText, kMisspellingStart, kMisspellingLength, |
- std::vector<base::string16>(1, kSuggestion), |
- kMisspellingHash)); |
- feedback_.GetMisspelling(kMisspellingHash)->action.Finalize(); |
- feedback_.EraseFinalizedMisspellings(kRendererProcessId); |
- EXPECT_TRUE(feedback_.FindMisspellings(kMisspelledWord).empty()); |
-} |
- |
-} // namespace spellcheck |