blob: d1d3b4049c206a3b487dcebc8b6f0c652eeeb493 [file] [log] [blame]
// 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 "third_party/blink/renderer/core/editing/markers/composition_marker_list_impl.h"
#include "third_party/blink/renderer/core/editing/markers/composition_marker.h"
#include "third_party/blink/renderer/core/editing/markers/marker_test_utilities.h"
#include "third_party/blink/renderer/core/editing/testing/editing_test_base.h"
namespace blink {
class CompositionMarkerListImplTest : public EditingTestBase {
protected:
CompositionMarkerListImplTest()
: marker_list_(MakeGarbageCollected<CompositionMarkerListImpl>()) {}
DocumentMarker* CreateMarker(unsigned start_offset, unsigned end_offset) {
return MakeGarbageCollected<CompositionMarker>(
start_offset, end_offset, Color::kTransparent,
ui::mojom::ImeTextSpanThickness::kThin, Color::kBlack);
}
Persistent<CompositionMarkerListImpl> marker_list_;
};
TEST_F(CompositionMarkerListImplTest, AddOverlapping) {
// Add some overlapping markers in an arbitrary order and verify that the
// list stores them properly
marker_list_->Add(CreateMarker(40, 50));
marker_list_->Add(CreateMarker(10, 40));
marker_list_->Add(CreateMarker(20, 50));
marker_list_->Add(CreateMarker(10, 30));
marker_list_->Add(CreateMarker(10, 50));
marker_list_->Add(CreateMarker(30, 50));
marker_list_->Add(CreateMarker(30, 40));
marker_list_->Add(CreateMarker(10, 20));
marker_list_->Add(CreateMarker(20, 40));
marker_list_->Add(CreateMarker(20, 30));
DocumentMarkerVector markers = marker_list_->GetMarkers();
std::sort(markers.begin(), markers.end(), compare_markers);
EXPECT_EQ(10u, markers.size());
EXPECT_EQ(10u, markers[0]->StartOffset());
EXPECT_EQ(20u, markers[0]->EndOffset());
EXPECT_EQ(10u, markers[1]->StartOffset());
EXPECT_EQ(30u, markers[1]->EndOffset());
EXPECT_EQ(10u, markers[2]->StartOffset());
EXPECT_EQ(40u, markers[2]->EndOffset());
EXPECT_EQ(10u, markers[3]->StartOffset());
EXPECT_EQ(50u, markers[3]->EndOffset());
EXPECT_EQ(20u, markers[4]->StartOffset());
EXPECT_EQ(30u, markers[4]->EndOffset());
EXPECT_EQ(20u, markers[5]->StartOffset());
EXPECT_EQ(40u, markers[5]->EndOffset());
EXPECT_EQ(20u, markers[6]->StartOffset());
EXPECT_EQ(50u, markers[6]->EndOffset());
EXPECT_EQ(30u, markers[7]->StartOffset());
EXPECT_EQ(40u, markers[7]->EndOffset());
EXPECT_EQ(30u, markers[8]->StartOffset());
EXPECT_EQ(50u, markers[8]->EndOffset());
EXPECT_EQ(40u, markers[9]->StartOffset());
EXPECT_EQ(50u, markers[9]->EndOffset());
}
} // namespace blink