7#include "gtest/gtest.h"
19using ::flutter::testing::DlPathReceiverMock;
20using ::testing::Return;
22TEST(PathSourceTest, RectSourceTest) {
30 ::testing::StrictMock<DlPathReceiverMock> receiver;
33 ::testing::Sequence sequence;
40 EXPECT_CALL(receiver,
Close());
46TEST(PathSourceTest, EllipseSourceTest) {
54 ::testing::StrictMock<DlPathReceiverMock> receiver;
57 ::testing::Sequence sequence;
59 EXPECT_CALL(receiver,
MoveTo(
Point(10, 22.5),
true));
64 EXPECT_CALL(receiver,
Close());
70TEST(PathSourceTest, RoundRectSourceTest) {
74 .top_right =
Size(2, 12),
75 .bottom_left =
Size(4, 14),
76 .bottom_right =
Size(3, 13),
85 ::testing::StrictMock<DlPathReceiverMock> receiver;
88 ::testing::Sequence sequence;
99 EXPECT_CALL(receiver,
Close());
105TEST(PathSourceTest, DiffRoundRectSourceTest) {
108 ASSERT_TRUE(outer_rect.Contains(inner_rect));
111 .top_right =
Size(2, 12),
112 .bottom_left =
Size(4, 14),
113 .bottom_right =
Size(3, 13),
123 ::testing::StrictMock<DlPathReceiverMock> receiver;
126 ::testing::Sequence sequence;
128 EXPECT_CALL(receiver,
MoveTo(
Point(11, 15),
true));
132 EXPECT_CALL(receiver,
139 EXPECT_CALL(receiver,
Close()).RetiresOnSaturation();
141 EXPECT_CALL(receiver,
MoveTo(
Point(51, 60),
true));
145 EXPECT_CALL(receiver,
152 EXPECT_CALL(receiver,
Close()).RetiresOnSaturation();
165 ::testing::StrictMock<DlPathReceiverMock> receiver;
168 ::testing::Sequence sequence;
170 EXPECT_CALL(receiver,
MoveTo(
Point(10, 10),
false));
172 EXPECT_CALL(receiver,
MoveTo(
Point(20, 10),
false));
179TEST(PathSourceTest, EmptyDashedLinePathSource) {
186 ::testing::StrictMock<DlPathReceiverMock> receiver;
189 ::testing::Sequence sequence;
191 EXPECT_CALL(receiver,
MoveTo(
Point(10, 10),
false));
198TEST(PathSourceTest, DashedLinePathSourceZeroOffGaps) {
205 ::testing::StrictMock<DlPathReceiverMock> receiver;
208 ::testing::Sequence sequence;
210 EXPECT_CALL(receiver,
MoveTo(
Point(10, 10),
false));
217TEST(PathSourceTest, DashedLinePathSourceInvalidOffGaps) {
224 ::testing::StrictMock<DlPathReceiverMock> receiver;
227 ::testing::Sequence sequence;
229 EXPECT_CALL(receiver,
MoveTo(
Point(10, 10),
false));
236TEST(PathSourceTest, DashedLinePathSourceInvalidOnRegion) {
243 ::testing::StrictMock<DlPathReceiverMock> receiver;
246 ::testing::Sequence sequence;
248 EXPECT_CALL(receiver,
MoveTo(
Point(10, 10),
false));
255TEST(PathSourceTest, PathTransformerRectSourceTest) {
265 ::testing::StrictMock<DlPathReceiverMock> mock_receiver;
269 ::testing::Sequence sequence;
271 EXPECT_CALL(mock_receiver,
MoveTo(
Point(21.5f, 49.25f),
true));
272 EXPECT_CALL(mock_receiver,
LineTo(
Point(41.5f, 49.25f)));
273 EXPECT_CALL(mock_receiver,
LineTo(
Point(41.5f, 94.25f)));
274 EXPECT_CALL(mock_receiver,
LineTo(
Point(21.5f, 94.25f)));
275 EXPECT_CALL(mock_receiver,
LineTo(
Point(21.5f, 49.25f)));
276 EXPECT_CALL(mock_receiver,
Close());
282TEST(PathSourceTest, PathTransformerAllSegmentsTest) {
286 ::testing::StrictMock<DlPathReceiverMock> mock_receiver;
290 ::testing::Sequence sequence;
292 EXPECT_CALL(mock_receiver,
MoveTo(
Point(21.5f, 49.25f),
false));
293 EXPECT_CALL(mock_receiver,
LineTo(
Point(41.5f, 49.25f)));
295 EXPECT_CALL(mock_receiver,
MoveTo(
Point(221.5f, 349.25f),
true));
296 EXPECT_CALL(mock_receiver,
297 QuadTo(
Point(241.5f, 349.25f),
Point(241.5f, 394.25f)));
298 EXPECT_CALL(mock_receiver,
299 ConicTo(
Point(237.5f, 409.25f),
Point(231.5f, 409.25f), 5))
300 .WillOnce(Return(
true));
301 EXPECT_CALL(mock_receiver,
302 ConicTo(
Point(225.5f, 409.25f),
Point(221.5f, 394.25f), 6))
303 .WillOnce(Return(
false));
304 EXPECT_CALL(mock_receiver,
306 Point(221.5f, 349.25f)));
307 EXPECT_CALL(mock_receiver,
Close());
A PathSource that generates the various segments of a dashed line.
bool IsConvex() const override
FillType GetFillType() const override
Rect GetBounds() const override
void Dispatch(PathReceiver &receiver) const override
Rect GetBounds() const override
bool IsConvex() const override
void Dispatch(PathReceiver &receiver) const override
FillType GetFillType() const override
A PathSource object that provides path iteration for any ellipse inscribed within a Rect bounds.
void Dispatch(PathReceiver &receiver) const override
bool IsConvex() const override
Rect GetBounds() const override
FillType GetFillType() const override
A PathSource object that provides path iteration for any TRect.
FillType GetFillType() const override
bool IsConvex() const override
Rect GetBounds() const override
void Dispatch(PathReceiver &receiver) const override
Rect GetBounds() const override
bool IsConvex() const override
void Dispatch(PathReceiver &receiver) const override
FillType GetFillType() const override
TEST(FrameTimingsRecorderTest, RecordVsync)
constexpr float kSqrt2Over2
void MoveTo(PathBuilder *builder, Scalar x, Scalar y)
void LineTo(PathBuilder *builder, Scalar x, Scalar y)
void CubicTo(PathBuilder *builder, Scalar x1, Scalar y1, Scalar x2, Scalar y2, Scalar x3, Scalar y3)
void Close(PathBuilder *builder)
A 4x4 matrix using column-major storage.
static constexpr Matrix MakeTranslateScale(const Vector3 &s, const Vector3 &t)
static RoundRect MakeRectRadii(const Rect &rect, const RoundingRadii &radii)
static constexpr TRect MakeLTRB(Type left, Type top, Type right, Type bottom)