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