1 // Copyright 2017 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #include "third_party/blink/renderer/core/editing/markers/composition_marker.h"
6 
7 #include "testing/gtest/include/gtest/gtest.h"
8 
9 using ui::mojom::ImeTextSpanThickness;
10 using ui::mojom::ImeTextSpanUnderlineStyle;
11 
12 namespace blink {
13 
14 class CompositionMarkerTest : public testing::Test {};
15 
TEST_F(CompositionMarkerTest,MarkerType)16 TEST_F(CompositionMarkerTest, MarkerType) {
17   DocumentMarker* marker = MakeGarbageCollected<CompositionMarker>(
18       0, 1, Color::kTransparent, ImeTextSpanThickness::kNone,
19       ImeTextSpanUnderlineStyle::kNone, Color::kTransparent,
20       Color::kTransparent);
21   EXPECT_EQ(DocumentMarker::kComposition, marker->GetType());
22 }
23 
TEST_F(CompositionMarkerTest,IsStyleableMarker)24 TEST_F(CompositionMarkerTest, IsStyleableMarker) {
25   DocumentMarker* marker = MakeGarbageCollected<CompositionMarker>(
26       0, 1, Color::kTransparent, ImeTextSpanThickness::kNone,
27       ImeTextSpanUnderlineStyle::kNone, Color::kTransparent,
28       Color::kTransparent);
29   EXPECT_TRUE(IsStyleableMarker(*marker));
30 }
31 
TEST_F(CompositionMarkerTest,ConstructorAndGetters)32 TEST_F(CompositionMarkerTest, ConstructorAndGetters) {
33   CompositionMarker* marker = MakeGarbageCollected<CompositionMarker>(
34       0, 1, Color::kDarkGray, ImeTextSpanThickness::kThin,
35       ImeTextSpanUnderlineStyle::kSolid, Color::kTransparent, Color::kGray);
36   EXPECT_EQ(Color::kDarkGray, marker->UnderlineColor());
37   EXPECT_TRUE(marker->HasThicknessThin());
38   EXPECT_EQ(ImeTextSpanUnderlineStyle::kSolid, marker->UnderlineStyle());
39   EXPECT_EQ(Color::kTransparent, marker->TextColor());
40   EXPECT_EQ(Color::kGray, marker->BackgroundColor());
41 
42   CompositionMarker* thick_marker = MakeGarbageCollected<CompositionMarker>(
43       0, 1, Color::kDarkGray, ImeTextSpanThickness::kThick,
44       ImeTextSpanUnderlineStyle::kSolid, Color::kTransparent, Color::kGray);
45   EXPECT_TRUE(thick_marker->HasThicknessThick());
46   EXPECT_EQ(ImeTextSpanUnderlineStyle::kSolid, marker->UnderlineStyle());
47   EXPECT_EQ(Color::kTransparent, marker->TextColor());
48 }
49 
TEST_F(CompositionMarkerTest,UnderlineStyleDottedAndGrayText)50 TEST_F(CompositionMarkerTest, UnderlineStyleDottedAndGrayText) {
51   CompositionMarker* marker = MakeGarbageCollected<CompositionMarker>(
52       0, 1, Color::kDarkGray, ImeTextSpanThickness::kThin,
53       ImeTextSpanUnderlineStyle::kDot, Color::kGray, Color::kGray);
54   EXPECT_EQ(Color::kDarkGray, marker->UnderlineColor());
55   EXPECT_TRUE(marker->HasThicknessThin());
56   EXPECT_EQ(ImeTextSpanUnderlineStyle::kDot, marker->UnderlineStyle());
57   EXPECT_EQ(Color::kGray, marker->TextColor());
58   EXPECT_EQ(Color::kGray, marker->BackgroundColor());
59 
60   CompositionMarker* thick_marker = MakeGarbageCollected<CompositionMarker>(
61       0, 1, Color::kDarkGray, ImeTextSpanThickness::kThick,
62       ImeTextSpanUnderlineStyle::kDot, Color::kGray, Color::kGray);
63   EXPECT_TRUE(thick_marker->HasThicknessThick());
64   EXPECT_EQ(ImeTextSpanUnderlineStyle::kDot, marker->UnderlineStyle());
65   EXPECT_EQ(Color::kGray, marker->TextColor());
66 }
67 
TEST_F(CompositionMarkerTest,UnderlineStyleDashed)68 TEST_F(CompositionMarkerTest, UnderlineStyleDashed) {
69   CompositionMarker* marker = MakeGarbageCollected<CompositionMarker>(
70       0, 1, Color::kDarkGray, ImeTextSpanThickness::kThin,
71       ImeTextSpanUnderlineStyle::kDash, Color::kTransparent, Color::kGray);
72   EXPECT_EQ(Color::kDarkGray, marker->UnderlineColor());
73   EXPECT_TRUE(marker->HasThicknessThin());
74   EXPECT_EQ(ImeTextSpanUnderlineStyle::kDash, marker->UnderlineStyle());
75   EXPECT_EQ(Color::kTransparent, marker->TextColor());
76   EXPECT_EQ(Color::kGray, marker->BackgroundColor());
77 
78   CompositionMarker* thick_marker = MakeGarbageCollected<CompositionMarker>(
79       0, 1, Color::kDarkGray, ImeTextSpanThickness::kThick,
80       ImeTextSpanUnderlineStyle::kDash, Color::kTransparent, Color::kGray);
81   EXPECT_TRUE(thick_marker->HasThicknessThick());
82   EXPECT_EQ(ImeTextSpanUnderlineStyle::kDash, marker->UnderlineStyle());
83   EXPECT_EQ(Color::kTransparent, marker->TextColor());
84 }
85 
TEST_F(CompositionMarkerTest,UnderlineStyleSquiggled)86 TEST_F(CompositionMarkerTest, UnderlineStyleSquiggled) {
87   CompositionMarker* marker = MakeGarbageCollected<CompositionMarker>(
88       0, 1, Color::kDarkGray, ImeTextSpanThickness::kThin,
89       ImeTextSpanUnderlineStyle::kSquiggle, Color::kTransparent, Color::kGray);
90   EXPECT_EQ(Color::kDarkGray, marker->UnderlineColor());
91   EXPECT_TRUE(marker->HasThicknessThin());
92   EXPECT_EQ(ImeTextSpanUnderlineStyle::kSquiggle, marker->UnderlineStyle());
93   EXPECT_EQ(Color::kTransparent, marker->TextColor());
94   EXPECT_EQ(Color::kGray, marker->BackgroundColor());
95 
96   CompositionMarker* thick_marker = MakeGarbageCollected<CompositionMarker>(
97       0, 1, Color::kDarkGray, ImeTextSpanThickness::kThick,
98       ImeTextSpanUnderlineStyle::kSquiggle, Color::kTransparent, Color::kGray);
99   EXPECT_TRUE(thick_marker->HasThicknessThick());
100   EXPECT_EQ(ImeTextSpanUnderlineStyle::kSquiggle, marker->UnderlineStyle());
101   EXPECT_EQ(Color::kTransparent, marker->TextColor());
102 }
103 
104 }  // namespace blink
105