| Index: components/spellcheck/renderer/spellcheck_unittest2.cc
|
| diff --git a/components/spellcheck/renderer/spellcheck_unittest2.cc b/components/spellcheck/renderer/spellcheck_unittest2.cc
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..652f32e74fa42ee7225f126a2852fb930a05d479
|
| --- /dev/null
|
| +++ b/components/spellcheck/renderer/spellcheck_unittest2.cc
|
| @@ -0,0 +1,69 @@
|
| +// Copyright 2017 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 "components/spellcheck/renderer/spellcheck.h"
|
| +
|
| +#include "base/strings/utf_string_conversions.h"
|
| +#include "components/spellcheck/common/spellcheck_result.h"
|
| +#include "testing/gtest/include/gtest/gtest.h"
|
| +#include "third_party/WebKit/public/platform/WebString.h"
|
| +#include "third_party/WebKit/public/platform/WebVector.h"
|
| +#include "third_party/WebKit/public/web/WebTextCheckingResult.h"
|
| +
|
| +class SpellCheckTest : public testing::Test {
|
| + public:
|
| + SpellCheckTest() {}
|
| +
|
| + // Helper function to add a result via UTF8. 'Cause I'm lazy.
|
| + void AddReplacement(const std::string& replacement) {
|
| + if (chrome_results_.empty()) {
|
| + chrome_results_.push_back(SpellCheckResult(
|
| + SpellCheckResult::SPELLING, 0, replacement.size() + 2,
|
| + base::UTF8ToUTF16(replacement)));
|
| + } else {
|
| + chrome_results_.back().replacements.push_back(
|
| + base::UTF8ToUTF16(replacement));
|
| + }
|
| + }
|
| +
|
| + std::vector<SpellCheckResult> chrome_results_;
|
| + SpellCheck spellcheck_;
|
| +};
|
| +
|
| +TEST_F(SpellCheckTest, MultiResultTest) {
|
| + blink::WebVector<blink::WebTextCheckingResult> blink_results;
|
| +
|
| + const base::char16 kApostrophe = 0x27;
|
| + const base::char16 kRightSingleQuotationMark = 0x2019;
|
| +
|
| + // The text to be checked contains a "typographic" apostrophe.
|
| + std::string original_text = "mark's";
|
| + base::string16 typographic_text = base::UTF8ToUTF16(original_text);
|
| + std::replace(typographic_text.begin(), typographic_text.end(), kApostrophe,
|
| + kRightSingleQuotationMark);
|
| +
|
| + // The results contain...
|
| + // ... a "fixed" version without apostrophe
|
| + AddReplacement("marks");
|
| + // ... a version that has just the apostrophe flipped back
|
| + AddReplacement(original_text);
|
| + // ... and a completely different word.
|
| + AddReplacement("markus");
|
| +
|
| + // Let's test that!
|
| + spellcheck_.CreateTextCheckingResults(SpellCheck::DO_NOT_MODIFY, 0,
|
| + typographic_text, chrome_results_,
|
| + &blink_results);
|
| +
|
| + // We expect back two results, the "fixed" non-apostrophe one, and the
|
| + // different word. The apostrophe flip should be ignored.
|
| + ASSERT_EQ(1U, blink_results.size());
|
| + ASSERT_EQ(2U, blink_results[0].replacements.size());
|
| + // First replacement is left intact.
|
| + EXPECT_EQ(chrome_results_[0].replacements[0],
|
| + blink_results[0].replacements[0].Utf16());
|
| + // Second replacement is skipped, third replacement is left intact.
|
| + EXPECT_EQ(chrome_results_[0].replacements[2],
|
| + blink_results[0].replacements[1].Utf16());
|
| +}
|
|
|