107ac75b1Sopenharmony_ci/* 207ac75b1Sopenharmony_ci * Copyright (c) 2021 Huawei Device Co., Ltd. 307ac75b1Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 407ac75b1Sopenharmony_ci * you may not use this file except in compliance with the License. 507ac75b1Sopenharmony_ci * You may obtain a copy of the License at 607ac75b1Sopenharmony_ci * 707ac75b1Sopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 807ac75b1Sopenharmony_ci * 907ac75b1Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software 1007ac75b1Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 1107ac75b1Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1207ac75b1Sopenharmony_ci * See the License for the specific language governing permissions and 1307ac75b1Sopenharmony_ci * limitations under the License. 1407ac75b1Sopenharmony_ci */ 1507ac75b1Sopenharmony_ci 1607ac75b1Sopenharmony_ciimport ts from 'typescript'; 1707ac75b1Sopenharmony_ciimport path from 'path'; 1807ac75b1Sopenharmony_ciimport chai from 'chai'; 1907ac75b1Sopenharmony_ciimport { 2007ac75b1Sopenharmony_ci describe, 2107ac75b1Sopenharmony_ci it 2207ac75b1Sopenharmony_ci} from 'mocha'; 2307ac75b1Sopenharmony_ciconst expect = chai.expect; 2407ac75b1Sopenharmony_ci 2507ac75b1Sopenharmony_ciimport { 2607ac75b1Sopenharmony_ci validateUISyntax, 2707ac75b1Sopenharmony_ci resetComponentCollection, 2807ac75b1Sopenharmony_ci sourceReplace, 2907ac75b1Sopenharmony_ci componentCollection 3007ac75b1Sopenharmony_ci} from '../lib/validate_ui_syntax'; 3107ac75b1Sopenharmony_ciimport { processUISyntax } from '../lib/process_ui_syntax'; 3207ac75b1Sopenharmony_ciimport { 3307ac75b1Sopenharmony_ci componentInfo, 3407ac75b1Sopenharmony_ci readFile 3507ac75b1Sopenharmony_ci} from '../lib/utils'; 3607ac75b1Sopenharmony_ciimport { BUILD_ON } from '../lib/pre_define'; 3707ac75b1Sopenharmony_ci 3807ac75b1Sopenharmony_cifunction expectActual(name: string, filePath: string) { 3907ac75b1Sopenharmony_ci const content: any = require(filePath); 4007ac75b1Sopenharmony_ci const source: string = content.source; 4107ac75b1Sopenharmony_ci process.env.compiler = BUILD_ON; 4207ac75b1Sopenharmony_ci const afterProcess = sourceReplace(source); 4307ac75b1Sopenharmony_ci validateUISyntax(source, afterProcess, `${name}.ts`); 4407ac75b1Sopenharmony_ci const result: ts.TranspileOutput = ts.transpileModule(afterProcess, { 4507ac75b1Sopenharmony_ci compilerOptions: { 4607ac75b1Sopenharmony_ci "target": ts.ScriptTarget.ES2021 4707ac75b1Sopenharmony_ci }, 4807ac75b1Sopenharmony_ci fileName: `${name}.ts`, 4907ac75b1Sopenharmony_ci transformers: { before: [processUISyntax(null, true)] } 5007ac75b1Sopenharmony_ci }); 5107ac75b1Sopenharmony_ci componentInfo.id = 0; 5207ac75b1Sopenharmony_ci componentCollection.customComponents.clear(); 5307ac75b1Sopenharmony_ci resetComponentCollection(); 5407ac75b1Sopenharmony_ci expect(result.outputText).eql(content.expectResult); 5507ac75b1Sopenharmony_ci} 5607ac75b1Sopenharmony_ci 5707ac75b1Sopenharmony_cidescribe('compiler', () => { 5807ac75b1Sopenharmony_ci const utPath: string = path.resolve(__dirname, './ut'); 5907ac75b1Sopenharmony_ci const utFiles: string[] = []; 6007ac75b1Sopenharmony_ci readFile(utPath, utFiles); 6107ac75b1Sopenharmony_ci utFiles.forEach((item) => { 6207ac75b1Sopenharmony_ci const fileName: string = path.basename(item, '.ts'); 6307ac75b1Sopenharmony_ci it(fileName, () => { 6407ac75b1Sopenharmony_ci expectActual(fileName, item); 6507ac75b1Sopenharmony_ci }) 6607ac75b1Sopenharmony_ci }) 6707ac75b1Sopenharmony_ci}) 68