• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1/**
2 * Copyright (c) 2024 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 */
15import { describe, beforeAll, beforeEach, afterEach, afterAll, it, expect, TestType, Level, Size } from "@ohos/hypium"
16import router from '@ohos.router';
17import { UiComponent, Driver, Component, UiWindow, ON, BY, MatchPattern, DisplayRotation, ResizeDirection, WindowMode, PointerMatrix } from '@ohos.UiTest';
18import CommonFunc from '../MainAbility/utils/Common';
19import { MessageManager, Callback } from '../MainAbility/utils/MessageManager';
20import { text, drawing, common2D } from "@kit.ArkGraphics2D"
21
22export default function LineMetricsTwoTest() {
23  describe('LineMetricsTwoTest', () => {
24    beforeEach(async (done: Function) => {
25      let beforeEachMsg = " ====beforeEach===="
26      console.info(beforeEachMsg + " 1 ");
27      let options: router.RouterOptions = {
28        url: 'MainAbility/pages/LineMetricsTwo',
29      }
30      let result = await router.push(options);
31      console.info(beforeEachMsg + " 2 ");
32      await CommonFunc.sleep(5000);
33      done();
34    });
35
36    /**
37     * @tc.number    : SUB_BASIC_XTS_GRAPHICTEXT_API_0100
38     * @tc.name      : testLineMetricsTest_2
39     * @tc.desc      : api
40     * @tc.size      : MediumTest
41     * @tc.type      : Function
42     * @tc.level     : Level0
43     */
44
45    it('testLineMetricsTest_0100', TestType.FUNCTION | Size.MEDIUMTEST | Level.LEVEL0, async (done: Function) => {
46      let msg = "====testLineMetricsTest_2===="
47      console.info('testLineMetricsTest_2 START');
48      let driver = await Driver.create()
49      await CommonFunc.sleep(1000);
50      let button = await driver.findComponent(ON.id('LineMetrics_4'));
51      await button.click();
52      await CommonFunc.sleep(1000);
53      let strJson1 = getInspectorByKey('LineMetrics_1');
54      let strJson2 = getInspectorByKey('LineMetrics_2');
55      let strJson3 = getInspectorByKey('LineMetrics_3');
56      let strJson5 = getInspectorByKey('LineMetrics_5');
57      let strJson6 = getInspectorByKey('LineMetrics_6');
58      let strJson7 = getInspectorByKey('LineMetrics_7');
59      let strJson8 = getInspectorByKey('LineMetrics_8');
60      let strJson9 = getInspectorByKey('LineMetrics_9');
61      let strJson10 = getInspectorByKey('LineMetrics_10');
62      let strJson11 = getInspectorByKey('LineMetrics_11');
63      let obj1: ESObject = JSON.parse(strJson1);
64      let obj2: ESObject = JSON.parse(strJson2);
65      let obj3: ESObject = JSON.parse(strJson3);
66      let obj5: ESObject = JSON.parse(strJson5);
67      let obj6: ESObject = JSON.parse(strJson6);
68      let obj7: ESObject = JSON.parse(strJson7);
69      let obj8: ESObject = JSON.parse(strJson8);
70      let obj9: ESObject = JSON.parse(strJson9);
71      let obj10: ESObject = JSON.parse(strJson10);
72      let obj11: ESObject = JSON.parse(strJson11);
73      expect(obj1.$attrs.content).assertEqual('1');
74      expect(obj2.$attrs.content).assertEqual('7');
75      expect(obj3.$attrs.content).assertEqual('10');
76      expect(obj5.$attrs.content).assertEqual('5');
77      expect(obj6.$attrs.content).assertEqual('6');
78      expect(obj7.$attrs.content).assertEqual('6');
79      expect(obj8.$attrs.content).assertEqual('6');
80      expect(obj9.$attrs.content).assertEqual('6');
81      expect(obj10.$attrs.content).assertEqual('6');
82      expect(obj11.$attrs.content).assertEqual('6');
83      console.log(msg + " obj5.$attrs.content: " + obj5.$attrs.content)
84      console.log(msg + " obj6.$attrs.content: " + obj6.$attrs.content)
85      console.info('[LineMetricsTest_0200] END');
86      expect(true).assertTrue()
87      done();
88    });
89
90    /**
91     * @tc.number    : SUB_BASIC_XTS_GRAPHICTEXT_API_0100
92     * @tc.name      : testLineMetricsTest_0100
93     * @tc.desc      : runMetrics and LineMetrics
94     * @tc.size      : MediumTest
95     * @tc.type      : Function
96     * @tc.level     : Level0
97     */
98    it('testLineMetricsTest_0100', TestType.FUNCTION | Size.MEDIUMTEST | Level.LEVEL0, async (done:Function)=> {
99      let msg  = "====testLineMetricsTest_0100===="
100      let fontCollection: text.FontCollection = new text.FontCollection();
101      try {
102        let fontFamilies: Array<string> = ["Clock_01"]
103        let myTextStyle: text.TextStyle = {
104          fontFamilies: fontFamilies
105        };
106        let myParagraphStyle: text.ParagraphStyle = {
107          textStyle: myTextStyle,
108        }
109        let paragraphBuilder: text.ParagraphBuilder = new text.ParagraphBuilder(myParagraphStyle, fontCollection);
110        let textData = "测试 loadFontSync 加载字体HarmonyClock_01.ttf";
111        paragraphBuilder.addText(textData);
112        let paragraph: text.Paragraph = paragraphBuilder.build();
113        paragraph.layoutSync(600);
114        let arrLineMetrc: Array<text.LineMetrics> =  paragraph.getLineMetrics();
115        let arrRunMetrics: Map<number,text.RunMetrics> = arrLineMetrc[0].runMetrics;
116        let arr: number[] = [];
117        for (let key of arrRunMetrics.keys()) {
118          arr.push(key);
119        }
120        let textStyle: text.TextStyle | undefined = arrRunMetrics.get(arr[arr.length -1])?.textStyle;
121        expect(3).assertEqual(textStyle?.fontWeight);
122        let fontMetrics: drawing.FontMetrics | undefined = arrRunMetrics.get(arr[arr.length -1])?.fontMetrics;
123        let maxNum = fontMetrics?.maxCharWidth;
124        expect(true).assertTrue();
125        done();
126      } catch(err){
127        console.info(msg + 'test error' + err);
128        expect().assertFail();
129      }
130    })
131
132    /**
133     * @tc.number    : SUB_BASIC_XTS_GRAPHICTEXT_API_0200
134     * @tc.name      : testLineMetricsTest_0200
135     * @tc.desc      : test maxCharWidth
136     * @tc.size      : MediumTest
137     * @tc.type      : Function
138     * @tc.level     : Level0
139     */
140    it('testLineMetricsTest_0200', TestType.FUNCTION | Size.MEDIUMTEST | Level.LEVEL0, async (done:Function)=> {
141      let msg  = "====testLineMetricsTest_0200===="
142      let font = new drawing.Font();
143      try {
144        let metrics = font.getMetrics();
145        let max = metrics.maxCharWidth;
146        expect(true).assertTrue();
147        done();
148      } catch(err){
149        console.info(msg + 'test error' + err);
150        expect().assertFail();
151        done();
152      }
153    })
154
155    /**
156     * @tc.number    : SUB_BASIC_XTS_GRAPHICTEXT_API_0300
157     * @tc.name      : testLineMetricsTest_0300
158     * @tc.desc      : api
159     * @tc.size      : MediumTest
160     * @tc.type      : Function
161     * @tc.level     : Level0
162     */
163    it('testLineMetricsTest_0300', TestType.FUNCTION | Size.MEDIUMTEST | Level.LEVEL0, async (done:Function)=> {
164      let msg  = "====testLineMetricsTest_0300===="
165      let font = new drawing.Font();
166      try {
167        let str = 'error';
168        const myTypeface = drawing.Typeface.makeFromFile(str);
169        font.setTypeface(myTypeface);
170        expect().assertFail();
171        done();
172      } catch (err) {
173        console.info(msg + 'test error' + err);
174        expect(err.code == 401).assertTrue();
175        done();
176      }
177    })
178
179    /**
180     * @tc.number    : SUB_BASIC_XTS_GRAPHICTEXT_API_0400
181     * @tc.name      : testLineMetricsTest_0400
182     * @tc.desc      : api
183     * @tc.size      : MediumTest
184     * @tc.type      : Function
185     * @tc.level     : Level0
186     */
187    it('testLineMetricsTest_0400', TestType.FUNCTION | Size.MEDIUMTEST | Level.LEVEL0, async (done:Function)=> {
188      let msg  = "====testLineMetricsTest_0400===="
189      try {
190        let path: drawing.Path = new drawing.Path();
191        path.moveTo(10, 20);
192        let iter: drawing.PathIterator = new drawing.PathIterator(path);
193        let verbStr: Array<string> = ["MOVE", "LINE", "QUAD", "CONIC", "CUBIC", "CLOSE", "DONE"];
194        let pointCount: Array<number> = [1,2,3,4,4,0,0]; //1,2,3,3.5,4,0,0
195        let points: Array<common2D.Point> = [{x: 0, y: 0}, {x: 0, y: 0}, {x: 0, y: 0}, {x: 0, y: 0}];
196        let offset = 2;
197        let verb = iter.next(points, offset);
198        expect().assertFail();
199        done();
200      } catch (err) {
201        console.info(msg + 'test error' + err);
202        expect(err.code == 401).assertTrue();
203        done();
204      }
205    })
206  })
207}
208
209