| // 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 |