17c804472Sopenharmony_ci/* 27c804472Sopenharmony_ci * Copyright (c) 2024 Huawei Device Co., Ltd. 37c804472Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 47c804472Sopenharmony_ci * you may not use this file except in compliance with the License. 57c804472Sopenharmony_ci * You may obtain a copy of the License at 67c804472Sopenharmony_ci * 77c804472Sopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 87c804472Sopenharmony_ci * 97c804472Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software 107c804472Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 117c804472Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 127c804472Sopenharmony_ci * See the License for the specific language governing permissions and 137c804472Sopenharmony_ci * limitations under the License. 147c804472Sopenharmony_ci */ 157c804472Sopenharmony_ci 167c804472Sopenharmony_ciimport fs from 'fs'; 177c804472Sopenharmony_ciimport path from 'path'; 187c804472Sopenharmony_ciimport { describe, expect, test } from '@jest/globals'; 197c804472Sopenharmony_ciimport { 207c804472Sopenharmony_ci getAllLegalImports, 217c804472Sopenharmony_ci collectAllLegalImports, 227c804472Sopenharmony_ci getAllFileNameList, 237c804472Sopenharmony_ci collectAllFileName, 247c804472Sopenharmony_ci getClassNameSet, 257c804472Sopenharmony_ci getAllClassDeclaration, 267c804472Sopenharmony_ci firstCharacterToUppercase 277c804472Sopenharmony_ci} from '../common/commonUtils'; 287c804472Sopenharmony_ciimport { createSourceFile, ScriptTarget } from 'typescript'; 297c804472Sopenharmony_ci 307c804472Sopenharmony_cifunction areSetsEqual(setA, setB) { 317c804472Sopenharmony_ci if (setA.size !== setB.size) { 327c804472Sopenharmony_ci return false; // 大小不同,返回 false 337c804472Sopenharmony_ci } 347c804472Sopenharmony_ci for (const item of setA) { 357c804472Sopenharmony_ci if (!setB.has(item)) { 367c804472Sopenharmony_ci return false; // setB 中没有 setA 的某个元素,返回 false 377c804472Sopenharmony_ci } 387c804472Sopenharmony_ci } 397c804472Sopenharmony_ci return true; // 两个 set 相等 407c804472Sopenharmony_ci} 417c804472Sopenharmony_ci 427c804472Sopenharmony_cidescribe('commonUtils.ts file test', (): void => { 437c804472Sopenharmony_ci test('Test the getAllLegalImports function', (): void => { 447c804472Sopenharmony_ci collectAllLegalImports('hello world'); 457c804472Sopenharmony_ci const result = getAllLegalImports(); 467c804472Sopenharmony_ci const expectedResult = new Set<string>(); 477c804472Sopenharmony_ci expectedResult.add('hello world'); 487c804472Sopenharmony_ci expect(true).toBe(areSetsEqual(result, expectedResult)); 497c804472Sopenharmony_ci }); 507c804472Sopenharmony_ci 517c804472Sopenharmony_ci test('Test the getAllFileNameList function', (): void => { 527c804472Sopenharmony_ci collectAllFileName(path.join(__dirname, 'api/@ohos.ability.ability.d.ts')); 537c804472Sopenharmony_ci collectAllFileName(path.join(__dirname, 'api/@ohos.ability.errorCode.d.ts')); 547c804472Sopenharmony_ci collectAllFileName(path.join(__dirname, 'api/lifecycle.d.ts')); 557c804472Sopenharmony_ci const result = getAllFileNameList(); 567c804472Sopenharmony_ci const expectedResult = new Set<string>(); 577c804472Sopenharmony_ci expectedResult.add('ohos_ability_ability'); 587c804472Sopenharmony_ci expectedResult.add('ohos_ability_errorCode'); 597c804472Sopenharmony_ci expectedResult.add('lifecycle'); 607c804472Sopenharmony_ci expect(true).toBe(areSetsEqual(result, expectedResult)); 617c804472Sopenharmony_ci }); 627c804472Sopenharmony_ci 637c804472Sopenharmony_ci test('Test the getClassNameSet function', (): void => { 647c804472Sopenharmony_ci const filePath = path.join(__dirname, './api/@ohos.accessibility.GesturePath.d.ts'); 657c804472Sopenharmony_ci const code = fs.readFileSync(filePath); 667c804472Sopenharmony_ci const sourceFile = createSourceFile(filePath, code.toString(), ScriptTarget.Latest); 677c804472Sopenharmony_ci getAllClassDeclaration(sourceFile); 687c804472Sopenharmony_ci const result = getClassNameSet(); 697c804472Sopenharmony_ci const expectedResult = new Set<string>(); 707c804472Sopenharmony_ci expectedResult.add('GesturePath'); 717c804472Sopenharmony_ci expect(true).toBe(areSetsEqual(result, expectedResult)); 727c804472Sopenharmony_ci }); 737c804472Sopenharmony_ci 747c804472Sopenharmony_ci test('Test the getIsModuleDeclaration function', (): void => { 757c804472Sopenharmony_ci const filePath = path.join(__dirname, './api/@ohos.accessibility.GesturePath.d.ts'); 767c804472Sopenharmony_ci const code = fs.readFileSync(filePath); 777c804472Sopenharmony_ci const sourceFile = createSourceFile(filePath, code.toString(), ScriptTarget.Latest); 787c804472Sopenharmony_ci getAllClassDeclaration(sourceFile); 797c804472Sopenharmony_ci const result = getClassNameSet(); 807c804472Sopenharmony_ci const expectedResult = new Set<string>(); 817c804472Sopenharmony_ci expectedResult.add('GesturePath'); 827c804472Sopenharmony_ci expect(true).toBe(areSetsEqual(result, expectedResult)); 837c804472Sopenharmony_ci }); 847c804472Sopenharmony_ci 857c804472Sopenharmony_ci test('Test the getIsModuleDeclaration function', (): void => { 867c804472Sopenharmony_ci const filePath = path.join(__dirname, './api/@ohos.account.appAccount.d.ts'); 877c804472Sopenharmony_ci const code = fs.readFileSync(filePath); 887c804472Sopenharmony_ci const sourceFile = createSourceFile(filePath, code.toString(), ScriptTarget.Latest); 897c804472Sopenharmony_ci getAllClassDeclaration(sourceFile); 907c804472Sopenharmony_ci const result = getClassNameSet(); 917c804472Sopenharmony_ci const expectedResult = new Set<string>(); 927c804472Sopenharmony_ci expectedResult.add('GesturePath'); 937c804472Sopenharmony_ci expectedResult.add('Authenticator'); 947c804472Sopenharmony_ci expect(true).toBe(areSetsEqual(result, expectedResult)); 957c804472Sopenharmony_ci }); 967c804472Sopenharmony_ci 977c804472Sopenharmony_ci test('Test the firstCharacterToUppercase function', (): void => { 987c804472Sopenharmony_ci const result = firstCharacterToUppercase('helloWorld'); 997c804472Sopenharmony_ci const expectedResult = 'HelloWorld'; 1007c804472Sopenharmony_ci expect(result).toBe(expectedResult); 1017c804472Sopenharmony_ci }); 1027c804472Sopenharmony_ci}); 103