| Index: third_party/WebKit/Source/core/editing/markers/SpellCheckMarkerListTest.cpp
|
| diff --git a/third_party/WebKit/Source/core/editing/markers/SpellCheckMarkerListTest.cpp b/third_party/WebKit/Source/core/editing/markers/SpellCheckMarkerListTest.cpp
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..a665ae0f5015d5293bf2215d1d8312f83aea5ecd
|
| --- /dev/null
|
| +++ b/third_party/WebKit/Source/core/editing/markers/SpellCheckMarkerListTest.cpp
|
| @@ -0,0 +1,144 @@
|
| +// 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 "core/editing/markers/SpellCheckMarkerList.h"
|
| +
|
| +#include "platform/heap/Handle.h"
|
| +#include "testing/gtest/include/gtest/gtest.h"
|
| +
|
| +namespace blink {
|
| +
|
| +class SpellCheckMarkerListTest : public ::testing::Test {
|
| + protected:
|
| + SpellCheckMarkerListTest()
|
| + : m_markerList(new SpellCheckMarkerList(DocumentMarker::Spelling)) {}
|
| +
|
| + DocumentMarker* createMarker(unsigned startOffset, unsigned endOffset) {
|
| + return new DocumentMarker(DocumentMarker::Spelling, startOffset, endOffset,
|
| + emptyString);
|
| + }
|
| +
|
| + Persistent<SpellCheckMarkerList> m_markerList;
|
| +};
|
| +
|
| +TEST_F(SpellCheckMarkerListTest, AddSorting) {
|
| + // Insert some markers in an arbitrary order and verify that the list stays
|
| + // sorted
|
| + m_markerList->add(createMarker(80, 85));
|
| + m_markerList->add(createMarker(40, 45));
|
| + m_markerList->add(createMarker(10, 15));
|
| + m_markerList->add(createMarker(0, 5));
|
| + m_markerList->add(createMarker(70, 75));
|
| + m_markerList->add(createMarker(90, 95));
|
| + m_markerList->add(createMarker(60, 65));
|
| + m_markerList->add(createMarker(50, 55));
|
| + m_markerList->add(createMarker(30, 35));
|
| + m_markerList->add(createMarker(20, 25));
|
| +
|
| + EXPECT_EQ(10u, m_markerList->size());
|
| +
|
| + EXPECT_EQ(0u, m_markerList->at(0)->startOffset());
|
| + EXPECT_EQ(5u, m_markerList->at(0)->endOffset());
|
| +
|
| + EXPECT_EQ(10u, m_markerList->at(1)->startOffset());
|
| + EXPECT_EQ(15u, m_markerList->at(1)->endOffset());
|
| +
|
| + EXPECT_EQ(20u, m_markerList->at(2)->startOffset());
|
| + EXPECT_EQ(25u, m_markerList->at(2)->endOffset());
|
| +
|
| + EXPECT_EQ(30u, m_markerList->at(3)->startOffset());
|
| + EXPECT_EQ(35u, m_markerList->at(3)->endOffset());
|
| +
|
| + EXPECT_EQ(40u, m_markerList->at(4)->startOffset());
|
| + EXPECT_EQ(45u, m_markerList->at(4)->endOffset());
|
| +
|
| + EXPECT_EQ(50u, m_markerList->at(5)->startOffset());
|
| + EXPECT_EQ(55u, m_markerList->at(5)->endOffset());
|
| +
|
| + EXPECT_EQ(60u, m_markerList->at(6)->startOffset());
|
| + EXPECT_EQ(65u, m_markerList->at(6)->endOffset());
|
| +
|
| + EXPECT_EQ(70u, m_markerList->at(7)->startOffset());
|
| + EXPECT_EQ(75u, m_markerList->at(7)->endOffset());
|
| +
|
| + EXPECT_EQ(80u, m_markerList->at(8)->startOffset());
|
| + EXPECT_EQ(85u, m_markerList->at(8)->endOffset());
|
| +
|
| + EXPECT_EQ(90u, m_markerList->at(9)->startOffset());
|
| + EXPECT_EQ(95u, m_markerList->at(9)->endOffset());
|
| +}
|
| +
|
| +TEST_F(SpellCheckMarkerListTest, AddIntoEmptyList) {
|
| + m_markerList->add(createMarker(5, 10));
|
| + EXPECT_EQ(1u, m_markerList->size());
|
| +
|
| + EXPECT_EQ(5u, m_markerList->at(0)->startOffset());
|
| + EXPECT_EQ(10u, m_markerList->at(0)->endOffset());
|
| +}
|
| +
|
| +TEST_F(SpellCheckMarkerListTest, AddMarkerNonMerging) {
|
| + m_markerList->add(createMarker(5, 10));
|
| + m_markerList->add(createMarker(15, 20));
|
| + EXPECT_EQ(2u, m_markerList->size());
|
| +
|
| + EXPECT_EQ(5u, m_markerList->at(0)->startOffset());
|
| + EXPECT_EQ(10u, m_markerList->at(0)->endOffset());
|
| +
|
| + EXPECT_EQ(15u, m_markerList->at(1)->startOffset());
|
| + EXPECT_EQ(20u, m_markerList->at(1)->endOffset());
|
| +}
|
| +
|
| +TEST_F(SpellCheckMarkerListTest, AddMarkerMergingLater) {
|
| + m_markerList->add(createMarker(5, 10));
|
| + m_markerList->add(createMarker(0, 5));
|
| + EXPECT_EQ(1u, m_markerList->size());
|
| +
|
| + EXPECT_EQ(0u, m_markerList->at(0)->startOffset());
|
| + EXPECT_EQ(10u, m_markerList->at(0)->endOffset());
|
| +}
|
| +
|
| +TEST_F(SpellCheckMarkerListTest, AddMarkerMergingEarlier) {
|
| + m_markerList->add(createMarker(0, 5));
|
| + m_markerList->add(createMarker(5, 10));
|
| + EXPECT_EQ(1u, m_markerList->size());
|
| +
|
| + EXPECT_EQ(0u, m_markerList->at(0)->startOffset());
|
| + EXPECT_EQ(10u, m_markerList->at(0)->endOffset());
|
| +}
|
| +
|
| +TEST_F(SpellCheckMarkerListTest, AddMarkerMergingEarlierAndLater) {
|
| + m_markerList->add(createMarker(0, 5));
|
| + m_markerList->add(createMarker(10, 15));
|
| + m_markerList->add(createMarker(5, 10));
|
| + EXPECT_EQ(1u, m_markerList->size());
|
| +
|
| + EXPECT_EQ(0u, m_markerList->at(0)->startOffset());
|
| + EXPECT_EQ(15u, m_markerList->at(0)->endOffset());
|
| +}
|
| +
|
| +TEST_F(SpellCheckMarkerListTest, RemoveMarkersForWords) {
|
| + // wor
|
| + m_markerList->add(createMarker(0, 3));
|
| +
|
| + // word
|
| + m_markerList->add(createMarker(4, 8));
|
| +
|
| + // words
|
| + m_markerList->add(createMarker(9, 14));
|
| +
|
| + // word2
|
| + m_markerList->add(createMarker(15, 20));
|
| +
|
| + m_markerList->removeMarkersForWords("wor word words word2",
|
| + {"word", "word2"});
|
| + EXPECT_EQ(2u, m_markerList->size());
|
| +
|
| + EXPECT_EQ(0u, m_markerList->at(0)->startOffset());
|
| + EXPECT_EQ(3u, m_markerList->at(0)->endOffset());
|
| +
|
| + EXPECT_EQ(9u, m_markerList->at(1)->startOffset());
|
| + EXPECT_EQ(14u, m_markerList->at(1)->endOffset());
|
| +}
|
| +
|
| +} // namespace
|
|
|