1 /* 2 * Copyright (c) 2022 Huawei Device Co., Ltd. 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15 16 #ifndef FOUNDATION_ACE_TEST_MOCK_CORE_RENDER_MOCK_PARAGRAPH_H 17 #define FOUNDATION_ACE_TEST_MOCK_CORE_RENDER_MOCK_PARAGRAPH_H 18 19 #include "gmock/gmock.h" 20 21 #include "core/components_ng/render/paragraph.h" 22 23 namespace OHOS::Ace::NG { 24 class MockParagraph : public Paragraph { 25 DECLARE_ACE_TYPE(MockParagraph, Paragraph); 26 27 public: 28 MockParagraph() = default; 29 ~MockParagraph() override = default; 30 31 MOCK_METHOD0(IsValid, bool()); 32 MOCK_METHOD0(PopStyle, void()); 33 MOCK_METHOD0(Build, void()); 34 MOCK_METHOD0(Reset, void()); 35 MOCK_METHOD0(GetHeight, float()); 36 MOCK_METHOD0(GetTextWidth, float()); 37 MOCK_METHOD0(GetLineCount, size_t()); 38 MOCK_METHOD0(GetMaxIntrinsicWidth, float()); 39 MOCK_METHOD0(DidExceedMaxLines, bool()); 40 MOCK_METHOD0(GetLongestLine, float()); 41 MOCK_METHOD0(GetLongestLineWithIndent, float()); 42 MOCK_METHOD0(GetMaxWidth, float()); 43 MOCK_METHOD0(GetAlphabeticBaseline, float()); 44 MOCK_METHOD0(GetParagraphText, std::u16string()); 45 MOCK_CONST_METHOD0(GetParagraphStyle, const ParagraphStyle&()); 46 MOCK_METHOD1(PushStyle, void(const TextStyle& style)); 47 MOCK_METHOD1(AddText, void(const std::u16string& text)); 48 MOCK_METHOD1(AddSymbol, void(const uint32_t& symbolId)); 49 MOCK_METHOD1(Layout, void(float width)); 50 MOCK_METHOD1(AddPlaceholder, int32_t(const PlaceholderRun& span)); 51 MOCK_METHOD1(GetRectsForPlaceholders, void(std::vector<RectF>& selectedRects)); 52 MOCK_METHOD1(SetIndents, void(const std::vector<float>& indents)); 53 MOCK_METHOD1(GetCharacterWidth, float(int32_t index)); 54 MOCK_METHOD1(SetParagraphSymbolAnimation, void(const RefPtr<FrameNode>& frameNode)); 55 MOCK_METHOD1(GetLineMetrics, TextLineMetrics(size_t lineNumber)); 56 MOCK_METHOD1(GetGlyphPositionAtCoordinate, PositionWithAffinity(const Offset& offset)); 57 MOCK_METHOD2(GetGlyphIndexByCoordinate, int32_t(const Offset& offset, bool isSelectionPos)); 58 MOCK_METHOD3(ComputeOffsetForCaretDownstream, bool(int32_t extent, CaretMetricsF& result, 59 bool needLineHighest)); 60 MOCK_METHOD3(ComputeOffsetForCaretUpstream, bool(int32_t extent, CaretMetricsF& result, 61 bool needLineHighest)); 62 MOCK_METHOD3(GetRectsForRange, void(int32_t start, int32_t end, std::vector<RectF>& selectedRects)); 63 MOCK_METHOD3(GetTightRectsForRange, void(int32_t start, int32_t end, std::vector<RectF>& selectedRects)); 64 MOCK_METHOD3(Paint, void(RSCanvas& canvas, float x, float y)); 65 #ifndef USE_ROSEN_DRAWING 66 MOCK_METHOD3(Paint, void(SkCanvas* skCanvas, float x, float y)); 67 #endif 68 MOCK_METHOD3(GetWordBoundary, bool(int32_t offset, int32_t& start, int32_t& end)); 69 TxtGetRectsForRange(int32_t start,int32_t end,RectHeightStyle heightStyle,RectWidthStyle widthStyle,std::vector<RectF> & selectedRects,std::vector<TextDirection> & textDirections)70 void TxtGetRectsForRange(int32_t start, int32_t end, RectHeightStyle heightStyle, RectWidthStyle widthStyle, 71 std::vector<RectF>& selectedRects, std::vector<TextDirection>& textDirections) override {} 72 CalcCaretMetricsByPosition(int32_t extent,CaretMetricsF & caretCaretMetric,TextAffinity textAffinity,bool needLineHighest)73 bool CalcCaretMetricsByPosition( 74 int32_t extent, CaretMetricsF& caretCaretMetric, TextAffinity textAffinity, bool needLineHighest) override 75 { 76 return false; 77 } 78 CalcCaretMetricsByPosition(int32_t extent,CaretMetricsF & caretCaretMetric,const OffsetF & lastTouchOffsetF,TextAffinity & textAffinity)79 bool CalcCaretMetricsByPosition(int32_t extent, CaretMetricsF& caretCaretMetric, const OffsetF& lastTouchOffsetF, 80 TextAffinity& textAffinity) override 81 { 82 return false; 83 } 84 GetLineMetricsByRectF(RectF & rect)85 LineMetrics GetLineMetricsByRectF(RectF& rect) override 86 { 87 LineMetrics lineMetrics; 88 return lineMetrics; 89 } 90 GetPaintRegion(float x,float y)91 RectF GetPaintRegion(float x, float y) override 92 { 93 RectF rect; 94 return rect; 95 } 96 GetLineMetricsByCoordinate(const Offset & offset,LineMetrics & lineMetrics)97 bool GetLineMetricsByCoordinate(const Offset& offset, LineMetrics& lineMetrics) override 98 { 99 return true; 100 } 101 102 void UpdateColor(size_t from, size_t to, const Color& color) override; 103 104 static RefPtr<MockParagraph> GetOrCreateMockParagraph(); 105 static void TearDown(); 106 107 static RefPtr<MockParagraph> paragraph_; 108 static bool enabled_; 109 }; 110 } // namespace OHOS::Ace::NG 111 #endif // FOUNDATION_ACE_TEST_MOCK_CORE_RENDER_MOCK_PARAGRAPH_H 112