18c339a94Sopenharmony_ci/* 28c339a94Sopenharmony_ci* Copyright (c) 2022 Shenzhen Kaihong Digital Industry Development Co., Ltd. 38c339a94Sopenharmony_ci* Licensed under the Apache License, Version 2.0 (the "License"); 48c339a94Sopenharmony_ci* you may not use this file except in compliance with the License. 58c339a94Sopenharmony_ci* You may obtain a copy of the License at 68c339a94Sopenharmony_ci* 78c339a94Sopenharmony_ci* http://www.apache.org/licenses/LICENSE-2.0 88c339a94Sopenharmony_ci* 98c339a94Sopenharmony_ci* Unless required by applicable law or agreed to in writing, software 108c339a94Sopenharmony_ci* distributed under the License is distributed on an "AS IS" BASIS, 118c339a94Sopenharmony_ci* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 128c339a94Sopenharmony_ci* See the License for the specific language governing permissions and 138c339a94Sopenharmony_ci* limitations under the License. 148c339a94Sopenharmony_ci*/ 158c339a94Sopenharmony_cilet genDir = "../../src/gen/" 168c339a94Sopenharmony_ci 178c339a94Sopenharmony_ciconst { analyzeFile } = require(genDir + "analyze"); 188c339a94Sopenharmony_civar assert = require("assert"); 198c339a94Sopenharmony_ciconst re = require(genDir + "/tools/re"); 208c339a94Sopenharmony_ciconst { info, Console } = require("console"); 218c339a94Sopenharmony_ciconst { JsxEmit } = require("typescript"); 228c339a94Sopenharmony_ciconst { readFile } = require(genDir + "tools/FileRW"); 238c339a94Sopenharmony_ciconst { generateEnum } = require(genDir + "generate/enum"); 248c339a94Sopenharmony_ciconst { jsToC, jsToCEnum, paramGenerate, paramGenerateArray, anyTempleteFunc, 258c339a94Sopenharmony_ci objectTempleteFunc, unionTempleteFunc } = require(genDir + "generate/param_generate"); 268c339a94Sopenharmony_ciconst { paramGenerateMap, mapTempleteFunc, paramGenerateCommon, paramGenerateUnion, paramGenerateCallBack, 278c339a94Sopenharmony_ci paramGenerateAny, paramGenerateObject } = require(genDir + "generate/param_generate"); 288c339a94Sopenharmony_ciconst { cToJs, cToJsForInterface, cToJsForType, returnGenerate, 298c339a94Sopenharmony_ci objectTempleteFuncReturn } = require(genDir + "generate/return_generate"); 308c339a94Sopenharmony_ciconst { generateInterface, generateVariable, anyTypeString, 318c339a94Sopenharmony_ci getHDefineOfVariable } = require(genDir + "generate/interface"); 328c339a94Sopenharmony_ciconst { mapTypeString, connectResult } = require(genDir + "generate/interface"); 338c339a94Sopenharmony_ciconst { generateNamespace, formatMiddleInit } = require(genDir + "generate/namespace"); 348c339a94Sopenharmony_ciconst { generateEnumResult, generateFunction } = require(genDir + "generate/namespace"); 358c339a94Sopenharmony_ciconst { generateFunctionAsync } = require(genDir + "generate/function_async"); 368c339a94Sopenharmony_ciconst { generateFunctionDirect } = require(genDir + "generate/function_direct"); 378c339a94Sopenharmony_ciconst { generateFunctionSync } = require(genDir + "generate/function_sync"); 388c339a94Sopenharmony_ciconst { generateFunctionOnOff } = require(genDir + "generate/function_onoff"); 398c339a94Sopenharmony_ciconst { generateThreadsafeFunc } = require(genDir + "generate/function_threadsafe"); 408c339a94Sopenharmony_ci 418c339a94Sopenharmony_civar correctResult 428c339a94Sopenharmony_ci 438c339a94Sopenharmony_cifunction before() { 448c339a94Sopenharmony_ci let data = readFile("test/unittest/result.json") 458c339a94Sopenharmony_ci 468c339a94Sopenharmony_ci if (data) { 478c339a94Sopenharmony_ci correctResult = JSON.parse(data) 488c339a94Sopenharmony_ci } 498c339a94Sopenharmony_ci 508c339a94Sopenharmony_ci result = analyzeFile("test/unittest/@ohos.input_sample.d.ts") 518c339a94Sopenharmony_ci} 528c339a94Sopenharmony_ci 538c339a94Sopenharmony_cidescribe('Generate', function () { 548c339a94Sopenharmony_ci before(function () { 558c339a94Sopenharmony_ci before() 568c339a94Sopenharmony_ci }); 578c339a94Sopenharmony_ci 588c339a94Sopenharmony_ci partOfEnum(); 598c339a94Sopenharmony_ci 608c339a94Sopenharmony_ci it('test gen/generate/function_async generateFunctionAsync', function () { 618c339a94Sopenharmony_ci let retJson = funcAsyncAssert(); 628c339a94Sopenharmony_ci let struct = retJson.substring(retJson.indexOf("{"),retJson.indexOf("}")+1) 638c339a94Sopenharmony_ci assert.strictEqual(struct,"{\\n void *data_ptr = data;\\n if_async_value_struct *vio = static_cast<if_async_value_struct *>(data_ptr);\\n TestClass1 *pInstance = (TestClass1 *)pxt->GetAsyncInstance();\\n pInstance->if_async(vio->in0, vio->outErrCode, vio->out);\\n}") 648c339a94Sopenharmony_ci 658c339a94Sopenharmony_ci let execute = retJson.substring(retJson.indexOf("if_async_execute"),retJson.indexOf("*data")+6) 668c339a94Sopenharmony_ci assert.strictEqual(execute,"if_async_execute(XNapiTool *pxt, DataPtr data)\\n{\\n void *data_") 678c339a94Sopenharmony_ci let complete = retJson.substring(retJson.indexOf("if_async_complete"),retJson.lastIndexOf("*data")+6) 688c339a94Sopenharmony_ci assert.strictEqual(complete,"if_async_complete(XNapiTool *pxt, DataPtr data)\\n{\\n void *data_") 698c339a94Sopenharmony_ci let middle = retJson.substring(retJson.indexOf("if_async_middle"),retJson.indexOf("info)")+5) 708c339a94Sopenharmony_ci assert.strictEqual(middle,"if_async_middle(napi_env env, napi_callback_info info)") 718c339a94Sopenharmony_ci }); 728c339a94Sopenharmony_ci 738c339a94Sopenharmony_ci it('test gen/generate/function_direct generateFunctionDirect', function () { 748c339a94Sopenharmony_ci let retJson = funcDirectAssert(); 758c339a94Sopenharmony_ci let struct = retJson.substring(retJson.indexOf("{"), retJson.indexOf("}") + 1) 768c339a94Sopenharmony_ci assert.strictEqual(struct, "{\\n XNapiTool *pxt = std::make_unique<XNapiTool>(env, info).release();\\n if (pxt->IsFailed()) {\\n napi_value err = pxt->GetError();\\n delete pxt;\\n return err;\\n }") 778c339a94Sopenharmony_ci let middle = retJson.substring(retJson.indexOf("if_direct_middle"), retJson.indexOf("info)") + 5) 788c339a94Sopenharmony_ci assert.strictEqual(middle, "if_direct_middle(napi_env env, napi_callback_info info)") 798c339a94Sopenharmony_ci }); 808c339a94Sopenharmony_ci 818c339a94Sopenharmony_ci it('test gen/generate/function_direct generateFunctionStaticDirect', function () { 828c339a94Sopenharmony_ci let retJson = funcStaticDirectAssert(); 838c339a94Sopenharmony_ci let struct = retJson.substring(retJson.indexOf("{"), retJson.indexOf("}") + 1); 848c339a94Sopenharmony_ci assert.strictEqual(struct, "{\\n XNapiTool *pxt = std::make_unique<XNapiTool>(env, info).release();\\n if (pxt->IsFailed()) {\\n napi_value err = pxt->GetError();\\n delete pxt;\\n return err;\\n }"); 858c339a94Sopenharmony_ci let middle = retJson.substring(retJson.indexOf("if_direct_middle"), retJson.indexOf("info)") + 5); 868c339a94Sopenharmony_ci assert.strictEqual(middle, "if_direct_middle(napi_env env, napi_callback_info info)"); 878c339a94Sopenharmony_ci let implH = retJson.search("static bool if_direct"); 888c339a94Sopenharmony_ci assert.strictEqual(implH > 0, true); 898c339a94Sopenharmony_ci }); 908c339a94Sopenharmony_ci 918c339a94Sopenharmony_ci it('test gen/generate/function_sync generateFunctionSync', function () { 928c339a94Sopenharmony_ci let retJson = funcSyncAssert(); 938c339a94Sopenharmony_ci let struct = retJson.substring(retJson.indexOf("{"), retJson.indexOf("}") + 1) 948c339a94Sopenharmony_ci assert.strictEqual(struct, "{\\n XNapiTool *pxt = std::make_unique<XNapiTool>(env, info).release();\\n if (pxt->IsFailed()) {\\n napi_value err = pxt->GetError();\\n delete pxt;\\n return err;\\n }") 958c339a94Sopenharmony_ci let middle = retJson.substring(retJson.indexOf("if_callback_middle"), retJson.indexOf("info)") + 5) 968c339a94Sopenharmony_ci assert.strictEqual(middle, "if_callback_middle(napi_env env, napi_callback_info info)") 978c339a94Sopenharmony_ci }); 988c339a94Sopenharmony_ci 998c339a94Sopenharmony_ci partOfFuncOnOff(); 1008c339a94Sopenharmony_ci 1018c339a94Sopenharmony_ci partOfFuncThread(); 1028c339a94Sopenharmony_ci 1038c339a94Sopenharmony_ci partOfInterface(correctResult); 1048c339a94Sopenharmony_ci 1058c339a94Sopenharmony_ci partOfTest(); 1068c339a94Sopenharmony_ci 1078c339a94Sopenharmony_ci partOfNamespace(correctResult) 1088c339a94Sopenharmony_ci 1098c339a94Sopenharmony_ci partofParamGenerate(correctResult) 1108c339a94Sopenharmony_ci 1118c339a94Sopenharmony_ci}); 1128c339a94Sopenharmony_ci 1138c339a94Sopenharmony_cifunction funcAsyncAssert() { 1148c339a94Sopenharmony_ci let valueFi = { name: 'v1', type: 'string' }; 1158c339a94Sopenharmony_ci let value1Se = { name: 'cb', type: 'AsyncCallback<string>' }; 1168c339a94Sopenharmony_ci let funParam = { name: 'if_async', type: 4, value: [valueFi, value1Se], ret: 'string' } 1178c339a94Sopenharmony_ci let data = { 1188c339a94Sopenharmony_ci class: [], 1198c339a94Sopenharmony_ci const: [], 1208c339a94Sopenharmony_ci enum: [], 1218c339a94Sopenharmony_ci exports: [], 1228c339a94Sopenharmony_ci function: [{ name: 'if_async', type: 4, value: [valueFi, value1Se], ret: 'string' }], 1238c339a94Sopenharmony_ci interface: [], 1248c339a94Sopenharmony_ci namespace: [], 1258c339a94Sopenharmony_ci type: [], 1268c339a94Sopenharmony_ci } 1278c339a94Sopenharmony_ci let ret = generateFunctionAsync(funParam, data, 'TestClass1'); 1288c339a94Sopenharmony_ci let retJson = JSON.stringify(ret); 1298c339a94Sopenharmony_ci return retJson 1308c339a94Sopenharmony_ci} 1318c339a94Sopenharmony_ci 1328c339a94Sopenharmony_cifunction funcDirectAssert() { 1338c339a94Sopenharmony_ci let valueFi = [{ name: 'v1', type: 'string', optional: false }, {name: 'v2', type: 'boolean', optional: true}]; 1348c339a94Sopenharmony_ci let funParam = { name: 'if_direct', type: 1, value: valueFi, ret: 'string', isStatic: false }; 1358c339a94Sopenharmony_ci let data = { 1368c339a94Sopenharmony_ci class: [], 1378c339a94Sopenharmony_ci const: [], 1388c339a94Sopenharmony_ci enum: [], 1398c339a94Sopenharmony_ci exports: [], 1408c339a94Sopenharmony_ci function: [{ name: 'if_direct', type: 1, value: [valueFi], ret: 'string', isStatic: false }], 1418c339a94Sopenharmony_ci interface: [], 1428c339a94Sopenharmony_ci namespace: [], 1438c339a94Sopenharmony_ci type: [], 1448c339a94Sopenharmony_ci } 1458c339a94Sopenharmony_ci let ret = generateFunctionDirect(funParam, data, 'TestClass1'); 1468c339a94Sopenharmony_ci let retJson = JSON.stringify(ret); 1478c339a94Sopenharmony_ci return retJson 1488c339a94Sopenharmony_ci} 1498c339a94Sopenharmony_ci 1508c339a94Sopenharmony_cifunction funcStaticDirectAssert() { 1518c339a94Sopenharmony_ci let valueFi = { name: 'v1', type: 'string', optional: false }; 1528c339a94Sopenharmony_ci let funParam = { name: 'if_direct', type: 1, value: [valueFi], ret: 'string', isStatic: true }; 1538c339a94Sopenharmony_ci let data = { 1548c339a94Sopenharmony_ci class: [], 1558c339a94Sopenharmony_ci const: [], 1568c339a94Sopenharmony_ci enum: [], 1578c339a94Sopenharmony_ci exports: [], 1588c339a94Sopenharmony_ci function: [{ name: 'if_direct', type: 1, value: [valueFi], ret: 'string', isStatic: true }], 1598c339a94Sopenharmony_ci interface: [], 1608c339a94Sopenharmony_ci namespace: [], 1618c339a94Sopenharmony_ci type: [], 1628c339a94Sopenharmony_ci } 1638c339a94Sopenharmony_ci let ret = generateFunctionDirect(funParam, data, 'TestClass1'); 1648c339a94Sopenharmony_ci let retJson = JSON.stringify(ret); 1658c339a94Sopenharmony_ci return retJson 1668c339a94Sopenharmony_ci} 1678c339a94Sopenharmony_ci 1688c339a94Sopenharmony_cifunction funcSyncAssert() { 1698c339a94Sopenharmony_ci let valueFi = { name: 'v1', type: 'string' }; 1708c339a94Sopenharmony_ci let value1Se = { name: 'cb', type: 'Callback<string>' }; 1718c339a94Sopenharmony_ci let funParam = { name: 'if_callback', type: 2, value: [valueFi, value1Se], ret: 'string' }; 1728c339a94Sopenharmony_ci let data = { 1738c339a94Sopenharmony_ci class: [], 1748c339a94Sopenharmony_ci const: [], 1758c339a94Sopenharmony_ci enum: [], 1768c339a94Sopenharmony_ci exports: [], 1778c339a94Sopenharmony_ci function: [{ name: 'if_callback', type: 2, value: [valueFi, value1Se], ret: 'string' }], 1788c339a94Sopenharmony_ci interface: [], 1798c339a94Sopenharmony_ci namespace: [], 1808c339a94Sopenharmony_ci type: [], 1818c339a94Sopenharmony_ci } 1828c339a94Sopenharmony_ci let ret = generateFunctionSync(funParam, data, 'TestClass1'); 1838c339a94Sopenharmony_ci let retJson = JSON.stringify(ret); 1848c339a94Sopenharmony_ci return retJson 1858c339a94Sopenharmony_ci} 1868c339a94Sopenharmony_ci 1878c339a94Sopenharmony_cifunction funcOnOffAssert(funcName) { 1888c339a94Sopenharmony_ci let valueFi = { name: 'v1', type: 'string', optional: false }; 1898c339a94Sopenharmony_ci let value1Se = { name: 'cb', type: 'Callback<string>', optional: false }; 1908c339a94Sopenharmony_ci let funParam = { name: funcName, type: 2, value: [valueFi, value1Se], ret: 'void' }; 1918c339a94Sopenharmony_ci let data = { 1928c339a94Sopenharmony_ci class: [], 1938c339a94Sopenharmony_ci const: [], 1948c339a94Sopenharmony_ci enum: [], 1958c339a94Sopenharmony_ci exports: [], 1968c339a94Sopenharmony_ci function: [{ name: funcName, type: 2, value: [valueFi, value1Se], ret: 'string' }], 1978c339a94Sopenharmony_ci interface: [], 1988c339a94Sopenharmony_ci namespace: [], 1998c339a94Sopenharmony_ci type: [], 2008c339a94Sopenharmony_ci } 2018c339a94Sopenharmony_ci let ret = generateFunctionOnOff(funParam, data, 'TestClass1'); 2028c339a94Sopenharmony_ci let retJson = JSON.stringify(ret); 2038c339a94Sopenharmony_ci return retJson; 2048c339a94Sopenharmony_ci} 2058c339a94Sopenharmony_ci 2068c339a94Sopenharmony_cifunction funcRegistUnregistAssert(funcName, type, retVal) { 2078c339a94Sopenharmony_ci let funParam = { 2088c339a94Sopenharmony_ci isParentMember: false, 2098c339a94Sopenharmony_ci isStatic: false, 2108c339a94Sopenharmony_ci name: funcName, 2118c339a94Sopenharmony_ci ret: retVal, 2128c339a94Sopenharmony_ci value: [{name: 'cb', optional: false, realType: type, type: type}] 2138c339a94Sopenharmony_ci } 2148c339a94Sopenharmony_ci let data = { 2158c339a94Sopenharmony_ci allProperties: { 2168c339a94Sopenharmony_ci functions: [{isParentMember: false, isStatic: false, name: funcName, ret: retVal, type: 2, 2178c339a94Sopenharmony_ci value: [{name: 'cb', optional: false, realType: type, type: type}]}], 2188c339a94Sopenharmony_ci values: [] 2198c339a94Sopenharmony_ci }, 2208c339a94Sopenharmony_ci childList: [], 2218c339a94Sopenharmony_ci function: [{isParentMember: false, isStatic: false, name: funcName, ret: retVal, type: 2, 2228c339a94Sopenharmony_ci value: [{name: 'cb', optional: false, realType: type, type: type}]}], 2238c339a94Sopenharmony_ci parentList: [], 2248c339a94Sopenharmony_ci parentNameList: [], 2258c339a94Sopenharmony_ci value: [] 2268c339a94Sopenharmony_ci } 2278c339a94Sopenharmony_ci let ret = generateFunctionOnOff(funParam, data, 'TestClass1'); 2288c339a94Sopenharmony_ci 2298c339a94Sopenharmony_ci return ret 2308c339a94Sopenharmony_ci} 2318c339a94Sopenharmony_ci 2328c339a94Sopenharmony_cifunction partOfEnum() { 2338c339a94Sopenharmony_ci it('test gen/generate/enum generateEnum', function () { 2348c339a94Sopenharmony_ci let data = { 2358c339a94Sopenharmony_ci element: [{ name: "STATUS0", value: "0", type: "NUMBER_TYPE_1" }], 2368c339a94Sopenharmony_ci function: [], 2378c339a94Sopenharmony_ci enumValueType: 0 2388c339a94Sopenharmony_ci } 2398c339a94Sopenharmony_ci let ret = generateEnum('GrantStatus', data); 2408c339a94Sopenharmony_ci let retJson = JSON.stringify(ret); 2418c339a94Sopenharmony_ci let qiepianEnd = retJson.search('\"implCpp\":\"\"') - 1; 2428c339a94Sopenharmony_ci let actualResult = retJson.substring(1, qiepianEnd); 2438c339a94Sopenharmony_ci let expectresult = '"implH":"\\nenum class GrantStatus {\\n STATUS0 = 0,\\n};\\n"'; 2448c339a94Sopenharmony_ci assert.strictEqual(actualResult, expectresult); 2458c339a94Sopenharmony_ci 2468c339a94Sopenharmony_ci let data2 = { 2478c339a94Sopenharmony_ci element: [{ name: "ACTION_HOME", value: "ohos.want.action.home", type: "string" }], 2488c339a94Sopenharmony_ci function: [], 2498c339a94Sopenharmony_ci enumValueType: 1 2508c339a94Sopenharmony_ci } 2518c339a94Sopenharmony_ci let ret2 = generateEnum('Action', data2); 2528c339a94Sopenharmony_ci let retJson2 = JSON.stringify(ret2); 2538c339a94Sopenharmony_ci let qiepianEnd2 = retJson2.search('\"implCpp\":') - 1; 2548c339a94Sopenharmony_ci let actualResult2 = retJson2.substring(1, qiepianEnd2); 2558c339a94Sopenharmony_ci let expectresult2 = 2568c339a94Sopenharmony_ci '"implH":"\\nclass Action {\\npublic:\\n static const std::string ACTION_HOME;\\n};\\n"'; 2578c339a94Sopenharmony_ci assert.strictEqual(actualResult2, expectresult2); 2588c339a94Sopenharmony_ci }); 2598c339a94Sopenharmony_ci} 2608c339a94Sopenharmony_ci 2618c339a94Sopenharmony_cifunction funcThreadsafeAssert(funcName) { 2628c339a94Sopenharmony_ci let func = { 2638c339a94Sopenharmony_ci isParentMember: false, 2648c339a94Sopenharmony_ci isStatic: false, 2658c339a94Sopenharmony_ci name: funcName, 2668c339a94Sopenharmony_ci ret: 'void', 2678c339a94Sopenharmony_ci type: 1, 2688c339a94Sopenharmony_ci value: [{name: 'name', optional: false, realType: 'string', type: 'string'}, 2698c339a94Sopenharmony_ci {name: 'callback', optional: false, realType: '(value', type: '(value'}] 2708c339a94Sopenharmony_ci } 2718c339a94Sopenharmony_ci 2728c339a94Sopenharmony_ci let data = { 2738c339a94Sopenharmony_ci allProperties: { 2748c339a94Sopenharmony_ci functions: [{ 2758c339a94Sopenharmony_ci isParentMember: false, 2768c339a94Sopenharmony_ci isStatic: false, 2778c339a94Sopenharmony_ci name: funcName, 2788c339a94Sopenharmony_ci ret: 'void', 2798c339a94Sopenharmony_ci type: 1, 2808c339a94Sopenharmony_ci value: [{name: 'name', optional: false, realType: 'string', type: 'string'}, 2818c339a94Sopenharmony_ci {name: 'callback', optionalz: false, realType: 'string', type: 'string'}] 2828c339a94Sopenharmony_ci }], 2838c339a94Sopenharmony_ci values: [], 2848c339a94Sopenharmony_ci }, 2858c339a94Sopenharmony_ci childList: [], 2868c339a94Sopenharmony_ci function: [{ 2878c339a94Sopenharmony_ci isParentMember: false, 2888c339a94Sopenharmony_ci isStatic: false, 2898c339a94Sopenharmony_ci name: funcName, 2908c339a94Sopenharmony_ci ret: 'void', 2918c339a94Sopenharmony_ci type: 1, 2928c339a94Sopenharmony_ci value: [{name: 'name', optional: false, realType: 'string', type: 'string'}, 2938c339a94Sopenharmony_ci {name: 'callback', optional: false, realType: 'string', type: 'string'}] 2948c339a94Sopenharmony_ci }], 2958c339a94Sopenharmony_ci parentList: [], 2968c339a94Sopenharmony_ci parentNameList: [], 2978c339a94Sopenharmony_ci value: [] 2988c339a94Sopenharmony_ci } 2998c339a94Sopenharmony_ci let ret = generateThreadsafeFunc(func, data, 'TestClass1'); 3008c339a94Sopenharmony_ci return ret; 3018c339a94Sopenharmony_ci} 3028c339a94Sopenharmony_ci 3038c339a94Sopenharmony_cifunction partOfFuncThread() { 3048c339a94Sopenharmony_ci it('test gen/generate/function_threadsafe generateThreadsafeFunc', function () { 3058c339a94Sopenharmony_ci let ret = funcThreadsafeAssert('createThreadSafeFuncClass1'); 3068c339a94Sopenharmony_ci let middleCppRet = JSON.stringify(ret[0]); 3078c339a94Sopenharmony_ci let implHRet = JSON.stringify(ret[1]); 3088c339a94Sopenharmony_ci let implCppRet = JSON.stringify(ret[2]); 3098c339a94Sopenharmony_ci let middleHRet = JSON.stringify(ret[3]); 3108c339a94Sopenharmony_ci assert.strictEqual(implHRet, '""'); 3118c339a94Sopenharmony_ci assert.strictEqual(implCppRet, '""'); 3128c339a94Sopenharmony_ci assert.strictEqual(middleHRet, '"\\nstruct createThreadSafeFuncClass1_value_struct {\\n std::string eventName;\\n};\\n\\nstatic napi_value createThreadSafeFuncClass1_middle(napi_env env, napi_callback_info info);\\n"') 3138c339a94Sopenharmony_ci let index = middleCppRet.indexOf('status = napi_create_threadsafe_function(env, pxt->GetArgv(argc - 1), nullptr,') 3148c339a94Sopenharmony_ci assert.strictEqual(index > 0, true); 3158c339a94Sopenharmony_ci let indexRegisterFunc = middleCppRet.indexOf('pxt->RegistThreadsafeFunc(vio->eventName, threadsafeFunc);') 3168c339a94Sopenharmony_ci assert.strictEqual(indexRegisterFunc > 0, true); 3178c339a94Sopenharmony_ci }); 3188c339a94Sopenharmony_ci} 3198c339a94Sopenharmony_ci 3208c339a94Sopenharmony_cifunction partOfFuncOnOff() { 3218c339a94Sopenharmony_ci // on/off test 3228c339a94Sopenharmony_ci it('test gen/generate/function_onoff generateFunctionOnOff on/off', function () { 3238c339a94Sopenharmony_ci let retJson = funcOnOffAssert('on'); 3248c339a94Sopenharmony_ci let struct = retJson.substring(retJson.indexOf("{"), retJson.indexOf("}") + 1) 3258c339a94Sopenharmony_ci assert.strictEqual(struct, "{\\n XNapiTool *pxt = std::make_unique<XNapiTool>(env, info).release();\\n if (pxt->IsFailed()) {\\n napi_value err = pxt->GetError();\\n delete pxt;\\n return err;\\n }") 3268c339a94Sopenharmony_ci let middle = retJson.substring(retJson.indexOf("on_middle"), retJson.indexOf("info)") + 5) 3278c339a94Sopenharmony_ci assert.strictEqual(middle, "on_middle(napi_env env, napi_callback_info info)") 3288c339a94Sopenharmony_ci 3298c339a94Sopenharmony_ci let retJson2 = funcOnOffAssert('off'); 3308c339a94Sopenharmony_ci let struct2 = retJson2.substring(retJson2.indexOf("{"), retJson2.indexOf("}") + 1) 3318c339a94Sopenharmony_ci assert.strictEqual(struct2, "{\\n XNapiTool *pxt = std::make_unique<XNapiTool>(env, info).release();\\n if (pxt->IsFailed()) {\\n napi_value err = pxt->GetError();\\n delete pxt;\\n return err;\\n }") 3328c339a94Sopenharmony_ci let middle2 = retJson2.substring(retJson2.indexOf("off_middle"), retJson2.indexOf("info)") + 5) 3338c339a94Sopenharmony_ci assert.strictEqual(middle2, "off_middle(napi_env env, napi_callback_info info)") 3348c339a94Sopenharmony_ci }); 3358c339a94Sopenharmony_ci 3368c339a94Sopenharmony_ci // registerXXX/UnregisterXXX test 3378c339a94Sopenharmony_ci partOfFuncRegistUnregist(); 3388c339a94Sopenharmony_ci} 3398c339a94Sopenharmony_cifunction partOfFuncRegistUnregist() { 3408c339a94Sopenharmony_ci // registerXXX test Function 3418c339a94Sopenharmony_ci it('test gen/generate/function_onoff generateFunctionOnOff registerXXX', function () { 3428c339a94Sopenharmony_ci let ret = funcRegistUnregistAssert('registerTestfunc11', 'Function', 'void'); 3438c339a94Sopenharmony_ci let middleCppRet = ret[0]; 3448c339a94Sopenharmony_ci let implHRet = ret[1]; 3458c339a94Sopenharmony_ci let implCppRet = ret[2]; 3468c339a94Sopenharmony_ci let middleHRet = ret[3]; 3478c339a94Sopenharmony_ci let indexImplH = implHRet.indexOf('void Testfunc11Callback();'); 3488c339a94Sopenharmony_ci assert.strictEqual(indexImplH >= 0, true); 3498c339a94Sopenharmony_ci let indexImplCpp = implCppRet.indexOf('ptr->Testfunc11CallbackMiddle(eventName);'); 3508c339a94Sopenharmony_ci assert.strictEqual(indexImplCpp > 0, true); 3518c339a94Sopenharmony_ci let indexMiddleH = middleHRet.indexOf('struct registerTestfunc11_value_struct {'); 3528c339a94Sopenharmony_ci assert.strictEqual(indexMiddleH >= 0, true); 3538c339a94Sopenharmony_ci let indexMiddleCpp = middleCppRet.indexOf('pxt->RegistOnOffFunc(vio->eventName, pxt->GetArgv(XNapiTool::ZERO));'); 3548c339a94Sopenharmony_ci assert.strictEqual(indexMiddleCpp > 0, true); 3558c339a94Sopenharmony_ci }); 3568c339a94Sopenharmony_ci 3578c339a94Sopenharmony_ci // unRegisterXXX test Function 3588c339a94Sopenharmony_ci it('test gen/generate/function_onoff generateFunctionOnOff unRegisterXXX', function () { 3598c339a94Sopenharmony_ci let ret = funcRegistUnregistAssert('unRegisterTestfunc11', 'Function', 'void'); 3608c339a94Sopenharmony_ci let middleCppRet = ret[0]; 3618c339a94Sopenharmony_ci let implHRet = ret[1]; 3628c339a94Sopenharmony_ci let implCppRet = ret[2]; 3638c339a94Sopenharmony_ci let middleHRet = ret[3]; 3648c339a94Sopenharmony_ci assert.strictEqual(JSON.stringify(implHRet), '""'); 3658c339a94Sopenharmony_ci assert.strictEqual(JSON.stringify(implCppRet), '""'); 3668c339a94Sopenharmony_ci let indexMiddleH = middleHRet.indexOf('struct unRegisterTestfunc11_value_struct {'); 3678c339a94Sopenharmony_ci assert.strictEqual(indexMiddleH >= 0, true); 3688c339a94Sopenharmony_ci let indexMiddleCpp = middleCppRet.indexOf('pxt->UnregistOnOffFunc(vio->eventName);'); 3698c339a94Sopenharmony_ci assert.strictEqual(indexMiddleCpp > 0, true); 3708c339a94Sopenharmony_ci }); 3718c339a94Sopenharmony_ci 3728c339a94Sopenharmony_ci // registerXXX/unRegisterXXX test Callback<boolean> 3738c339a94Sopenharmony_ci partOfFuncRegistUnregist2(); 3748c339a94Sopenharmony_ci} 3758c339a94Sopenharmony_ci 3768c339a94Sopenharmony_cifunction partOfFuncRegistUnregist2() { 3778c339a94Sopenharmony_ci // registerXXX test Callback<boolean> 3788c339a94Sopenharmony_ci it('test gen/generate/function_onoff generateFunctionOnOff registerXXX', function () { 3798c339a94Sopenharmony_ci let ret = funcRegistUnregistAssert('registerTestfunc13', 'Callback<boolean>', 'void'); 3808c339a94Sopenharmony_ci let middleCppRet = ret[0]; 3818c339a94Sopenharmony_ci let implHRet = ret[1]; 3828c339a94Sopenharmony_ci let implCppRet = ret[2]; 3838c339a94Sopenharmony_ci let middleHRet = ret[3]; 3848c339a94Sopenharmony_ci let indexImplH = implHRet.indexOf('void Testfunc13Callback(bool &valueIn);'); 3858c339a94Sopenharmony_ci assert.strictEqual(indexImplH >= 0, true); 3868c339a94Sopenharmony_ci let indexImplCpp = implCppRet.indexOf('ptr->Testfunc13CallbackMiddle(eventName, valueIn);'); 3878c339a94Sopenharmony_ci assert.strictEqual(indexImplCpp > 0, true); 3888c339a94Sopenharmony_ci let indexMiddleH = middleHRet.indexOf('struct registerTestfunc13_value_struct {'); 3898c339a94Sopenharmony_ci assert.strictEqual(indexMiddleH >= 0, true); 3908c339a94Sopenharmony_ci let indexMiddleCpp = middleCppRet.indexOf('pxt->RegistOnOffFunc(vio->eventName, pxt->GetArgv(XNapiTool::ZERO));'); 3918c339a94Sopenharmony_ci assert.strictEqual(indexMiddleCpp > 0, true); 3928c339a94Sopenharmony_ci }); 3938c339a94Sopenharmony_ci 3948c339a94Sopenharmony_ci // unRegisterXXX test Callback<boolean> 3958c339a94Sopenharmony_ci it('test gen/generate/function_onoff generateFunctionOnOff unRegisterXXX', function () { 3968c339a94Sopenharmony_ci let ret = funcRegistUnregistAssert('unRegisterTestfunc13', 'Callback<boolean>', 'void'); 3978c339a94Sopenharmony_ci let middleCppRet = ret[0]; 3988c339a94Sopenharmony_ci let implHRet = ret[1]; 3998c339a94Sopenharmony_ci let implCppRet = ret[2]; 4008c339a94Sopenharmony_ci let middleHRet = ret[3]; 4018c339a94Sopenharmony_ci assert.strictEqual(JSON.stringify(implHRet), '""'); 4028c339a94Sopenharmony_ci assert.strictEqual(JSON.stringify(implCppRet), '""'); 4038c339a94Sopenharmony_ci let indexMiddleH = middleHRet.indexOf('struct unRegisterTestfunc13_value_struct {'); 4048c339a94Sopenharmony_ci assert.strictEqual(indexMiddleH >= 0, true); 4058c339a94Sopenharmony_ci let indexMiddleCpp = middleCppRet.indexOf('pxt->UnregistOnOffFunc(vio->eventName);'); 4068c339a94Sopenharmony_ci assert.strictEqual(indexMiddleCpp > 0, true); 4078c339a94Sopenharmony_ci }); 4088c339a94Sopenharmony_ci} 4098c339a94Sopenharmony_ci 4108c339a94Sopenharmony_cifunction partOfInterface() { 4118c339a94Sopenharmony_ci partOfInterfaceOne(); 4128c339a94Sopenharmony_ci 4138c339a94Sopenharmony_ci it('test gen/generate/interface anyTypeString', function () { 4148c339a94Sopenharmony_ci let ret = anyTypeString("any", "v"); 4158c339a94Sopenharmony_ci let result = "\n std::string v_type;\n std::any v;"; 4168c339a94Sopenharmony_ci assert.strictEqual(JSON.stringify(ret), JSON.stringify(result)); 4178c339a94Sopenharmony_ci }); 4188c339a94Sopenharmony_ci 4198c339a94Sopenharmony_ci partOfInterfaceFour(); 4208c339a94Sopenharmony_ci 4218c339a94Sopenharmony_ci it('test gen/generate/interface generateInterface', function () { 4228c339a94Sopenharmony_ci let data = { 4238c339a94Sopenharmony_ci function: [], 4248c339a94Sopenharmony_ci value: [{ name: "disable", type: "boolean" }, { name: "map1", type: "Map<string,string>" }] 4258c339a94Sopenharmony_ci } 4268c339a94Sopenharmony_ci let ret = generateInterface('ConfigOption', data, 'napitest::'); 4278c339a94Sopenharmony_ci let retJson = JSON.stringify(ret).substring(1, JSON.stringify(ret).length); 4288c339a94Sopenharmony_ci let configOption = retJson.substring(retJson.indexOf("{"), retJson.indexOf("}") + 1); 4298c339a94Sopenharmony_ci let configResult = "{\\npublic:\\n bool disable;\\n std::map<std::string, std::string> map1;\\n\\n}"; 4308c339a94Sopenharmony_ci assert.strictEqual(configOption, configResult); 4318c339a94Sopenharmony_ci assert.strictEqual(retJson.search("ConfigOption_middle") > 0, true) 4328c339a94Sopenharmony_ci assert.strictEqual(retJson.search("middleInit") > 0, true) 4338c339a94Sopenharmony_ci }); 4348c339a94Sopenharmony_ci 4358c339a94Sopenharmony_ci partOfInterfaceTwo(); 4368c339a94Sopenharmony_ci partOfInterfaceThree(); 4378c339a94Sopenharmony_ci} 4388c339a94Sopenharmony_ci 4398c339a94Sopenharmony_cifunction partOfInterfaceFour() { 4408c339a94Sopenharmony_ci it('test gen/generate/interface mapTypeString', function () { 4418c339a94Sopenharmony_ci let ret = mapTypeString("Map<string,string>", "map1"); 4428c339a94Sopenharmony_ci let result = "\n std::map<std::string, std::string> map1;"; 4438c339a94Sopenharmony_ci assert.strictEqual(JSON.stringify(ret), JSON.stringify(result)); 4448c339a94Sopenharmony_ci 4458c339a94Sopenharmony_ci let ret2 = mapTypeString("Map<string,NUMBER_TYPE_1>", "map1"); 4468c339a94Sopenharmony_ci let result2 = "\n std::map<std::string, NUMBER_TYPE_1> map1;"; 4478c339a94Sopenharmony_ci assert.strictEqual(JSON.stringify(ret2), JSON.stringify(result2)); 4488c339a94Sopenharmony_ci 4498c339a94Sopenharmony_ci let ret3 = mapTypeString("Map<string,boolean>", "map1"); 4508c339a94Sopenharmony_ci let result3 = "\n std::map<std::string, bool> map1;"; 4518c339a94Sopenharmony_ci assert.strictEqual(JSON.stringify(ret3), JSON.stringify(result3)); 4528c339a94Sopenharmony_ci 4538c339a94Sopenharmony_ci let ret4 = mapTypeString("{[key:string]:string}", "map1"); 4548c339a94Sopenharmony_ci let result4 = "\n std::map<std::string, std::string> map1;"; 4558c339a94Sopenharmony_ci assert.strictEqual(JSON.stringify(ret4), JSON.stringify(result4)); 4568c339a94Sopenharmony_ci 4578c339a94Sopenharmony_ci let ret5 = mapTypeString("{[key:string]:NUMBER_TYPE_1}", "map1"); 4588c339a94Sopenharmony_ci let result5 = "\n std::map<std::string, NUMBER_TYPE_1> map1;"; 4598c339a94Sopenharmony_ci assert.strictEqual(JSON.stringify(ret5), JSON.stringify(result5)); 4608c339a94Sopenharmony_ci 4618c339a94Sopenharmony_ci let ret6 = mapTypeString("{[key:string]:boolean}", "map1"); 4628c339a94Sopenharmony_ci let result6 = "\n std::map<std::string, bool> map1;"; 4638c339a94Sopenharmony_ci assert.strictEqual(JSON.stringify(ret6), JSON.stringify(result6)); 4648c339a94Sopenharmony_ci 4658c339a94Sopenharmony_ci let ret7 = mapTypeString("Map<string,Map<string,string>>", "map1"); 4668c339a94Sopenharmony_ci let result7 = "\n std::map<std::string, std::map<std::string, std::string>> map1;"; 4678c339a94Sopenharmony_ci assert.strictEqual(JSON.stringify(ret7), JSON.stringify(result7)); 4688c339a94Sopenharmony_ci 4698c339a94Sopenharmony_ci let ret8 = mapTypeString("{[key:string]:{[key:string]:string}}", "map1"); 4708c339a94Sopenharmony_ci let result8 = "\n std::map<std::string, std::map<std::string, std::string>> map1;"; 4718c339a94Sopenharmony_ci assert.strictEqual(JSON.stringify(ret8), JSON.stringify(result8)); 4728c339a94Sopenharmony_ci 4738c339a94Sopenharmony_ci let ret9 = mapTypeString("Map<string,string[]>", "map1"); 4748c339a94Sopenharmony_ci let result9 = "\n std::map<std::string, std::vector<std::string>> map1;"; 4758c339a94Sopenharmony_ci assert.strictEqual(JSON.stringify(ret9), JSON.stringify(result9)); 4768c339a94Sopenharmony_ci 4778c339a94Sopenharmony_ci let ret10 = mapTypeString("Map<string,Array<string>>", "map1"); 4788c339a94Sopenharmony_ci let result10 = "\n std::map<std::string, std::vector<std::string>> map1;"; 4798c339a94Sopenharmony_ci assert.strictEqual(JSON.stringify(ret10), JSON.stringify(result10)); 4808c339a94Sopenharmony_ci }); 4818c339a94Sopenharmony_ci} 4828c339a94Sopenharmony_ci 4838c339a94Sopenharmony_cifunction partOfInterfaceOne() { 4848c339a94Sopenharmony_ci it('test gen/generate/interface generateVariable', function () { 4858c339a94Sopenharmony_ci // test basic type 4868c339a94Sopenharmony_ci let retBool = generateVariableAsset("boolean"); 4878c339a94Sopenharmony_ci let ex = JSON.stringify(variableMiddleBoolValue()) 4888c339a94Sopenharmony_ci assert.strictEqual(retBool, ex); 4898c339a94Sopenharmony_ci 4908c339a94Sopenharmony_ci // test Array 4918c339a94Sopenharmony_ci let retArrStr = generateVariableAsset("Array<string>"); 4928c339a94Sopenharmony_ci retArrStr = re.replaceAll(retArrStr, "tt[0-9]+", "tt"); 4938c339a94Sopenharmony_ci retArrStr = re.replaceAll(retArrStr, "tnv[0-9]+", "tnv"); 4948c339a94Sopenharmony_ci retArrStr = re.replaceAll(retArrStr, "outLen[0-9]+", "outLen"); 4958c339a94Sopenharmony_ci retArrStr = re.replaceAll(retArrStr, "len[0-9]+", "len"); 4968c339a94Sopenharmony_ci retArrStr = re.replaceAll(retArrStr, "i[0-9]+", "i"); 4978c339a94Sopenharmony_ci let resultArrStr = JSON.stringify(variableMiddleArrStrValue()); 4988c339a94Sopenharmony_ci assert.strictEqual(retArrStr, resultArrStr); 4998c339a94Sopenharmony_ci 5008c339a94Sopenharmony_ci let retArrStr2 = generateVariableAsset("string[]"); 5018c339a94Sopenharmony_ci retArrStr2 = re.replaceAll(retArrStr2, "tt[0-9]+", "tt"); 5028c339a94Sopenharmony_ci retArrStr2 = re.replaceAll(retArrStr2, "tnv[0-9]+", "tnv"); 5038c339a94Sopenharmony_ci retArrStr2 = re.replaceAll(retArrStr2, "outLen[0-9]+", "outLen"); 5048c339a94Sopenharmony_ci retArrStr2 = re.replaceAll(retArrStr2, "len[0-9]+", "len"); 5058c339a94Sopenharmony_ci retArrStr2 = re.replaceAll(retArrStr2, "i[0-9]+", "i"); 5068c339a94Sopenharmony_ci assert.strictEqual(retArrStr2, resultArrStr); 5078c339a94Sopenharmony_ci 5088c339a94Sopenharmony_ci // test Map 5098c339a94Sopenharmony_ci let retMapStr = generateVariableAsset("Map<string, string>"); 5108c339a94Sopenharmony_ci let resultMapStr = JSON.stringify(variableMiddleMapStrValue()); 5118c339a94Sopenharmony_ci retMapStr = re.replaceAll(retMapStr, "tt[0-9]+", "tt"); 5128c339a94Sopenharmony_ci retMapStr = re.replaceAll(retMapStr, "tnv[0-9]+", "tnv"); 5138c339a94Sopenharmony_ci retMapStr = re.replaceAll(retMapStr, "len[0-9]+", "len"); 5148c339a94Sopenharmony_ci retMapStr = re.replaceAll(retMapStr, "i[0-9]+", "i"); 5158c339a94Sopenharmony_ci assert.strictEqual(retMapStr, resultMapStr); 5168c339a94Sopenharmony_ci 5178c339a94Sopenharmony_ci let retMapStr2 = generateVariableAsset("{[key:string]: string}"); 5188c339a94Sopenharmony_ci let resultMapStr2 = JSON.stringify(variableMiddleMapStrValue()); 5198c339a94Sopenharmony_ci retMapStr2 = re.replaceAll(retMapStr2, "tt[0-9]+", "tt"); 5208c339a94Sopenharmony_ci retMapStr2 = re.replaceAll(retMapStr2, "tnv[0-9]+", "tnv"); 5218c339a94Sopenharmony_ci retMapStr2 = re.replaceAll(retMapStr2, "len[0-9]+", "len"); 5228c339a94Sopenharmony_ci retMapStr2 = re.replaceAll(retMapStr2, "i[0-9]+", "i"); 5238c339a94Sopenharmony_ci assert.strictEqual(retMapStr2, resultMapStr2); 5248c339a94Sopenharmony_ci }); 5258c339a94Sopenharmony_ci} 5268c339a94Sopenharmony_ci 5278c339a94Sopenharmony_cifunction generateVariableAsset(valType) { 5288c339a94Sopenharmony_ci let variable = { 5298c339a94Sopenharmony_ci hDefine: "", 5308c339a94Sopenharmony_ci middleValue: "", 5318c339a94Sopenharmony_ci }; 5328c339a94Sopenharmony_ci let value = { 5338c339a94Sopenharmony_ci name: "disable", 5348c339a94Sopenharmony_ci type: valType, 5358c339a94Sopenharmony_ci } 5368c339a94Sopenharmony_ci generateVariable(value, variable, 'ConfigOption'); 5378c339a94Sopenharmony_ci let ret = JSON.stringify(variable.middleValue); 5388c339a94Sopenharmony_ci return ret; 5398c339a94Sopenharmony_ci} 5408c339a94Sopenharmony_ci 5418c339a94Sopenharmony_cifunction partOfInterfaceThree() { 5428c339a94Sopenharmony_ci it('test gen/generate/interface getHDefineOfVariable', function () { 5438c339a94Sopenharmony_ci let retStr = getHDefineOfVariableAsset("string"); 5448c339a94Sopenharmony_ci let resultStr = "\"\\n std::string vName;\""; 5458c339a94Sopenharmony_ci assert.strictEqual(retStr, resultStr); 5468c339a94Sopenharmony_ci 5478c339a94Sopenharmony_ci let retBool = getHDefineOfVariableAsset("boolean"); 5488c339a94Sopenharmony_ci let resultBool = "\"\\n bool vName;\""; 5498c339a94Sopenharmony_ci assert.strictEqual(retBool, resultBool); 5508c339a94Sopenharmony_ci 5518c339a94Sopenharmony_ci let retNum = getHDefineOfVariableAsset("NUMBER_TYPE_1"); 5528c339a94Sopenharmony_ci let resultNum = "\"\\n NUMBER_TYPE_1 vName;\""; 5538c339a94Sopenharmony_ci assert.strictEqual(retNum, resultNum); 5548c339a94Sopenharmony_ci 5558c339a94Sopenharmony_ci let retArrStr1 = getHDefineOfVariableAsset("Array<string>"); 5568c339a94Sopenharmony_ci let resultArrStr1 = "\"\\n std::vector<std::string> vName;\""; 5578c339a94Sopenharmony_ci assert.strictEqual(retArrStr1, resultArrStr1); 5588c339a94Sopenharmony_ci 5598c339a94Sopenharmony_ci let retArrAny1 = getHDefineOfVariableAsset("Array<any>"); 5608c339a94Sopenharmony_ci let resultArrAny1 = "\"\\n std::string vName_type; \\n std::any vName;\""; 5618c339a94Sopenharmony_ci assert.strictEqual(retArrAny1, resultArrAny1); 5628c339a94Sopenharmony_ci 5638c339a94Sopenharmony_ci let retArrStr2 = getHDefineOfVariableAsset("string[]"); 5648c339a94Sopenharmony_ci let resultArrStr2 = "\"\\n std::vector<std::string> vName;\""; 5658c339a94Sopenharmony_ci assert.strictEqual(retArrStr2, resultArrStr2); 5668c339a94Sopenharmony_ci 5678c339a94Sopenharmony_ci let retArrAny2 = getHDefineOfVariableAsset("any[]"); 5688c339a94Sopenharmony_ci let resultArrAny2 = "\"\\n std::string vName_type;\\n std::any vName;\""; 5698c339a94Sopenharmony_ci assert.strictEqual(retArrAny2, resultArrAny2); 5708c339a94Sopenharmony_ci 5718c339a94Sopenharmony_ci let retObject = getHDefineOfVariableAsset("Object"); 5728c339a94Sopenharmony_ci let resultObject= "\"\\n std::map<std::string, std::any> vName;\""; 5738c339a94Sopenharmony_ci assert.strictEqual(retObject, resultObject); 5748c339a94Sopenharmony_ci }); 5758c339a94Sopenharmony_ci} 5768c339a94Sopenharmony_ci 5778c339a94Sopenharmony_cifunction getHDefineOfVariableAsset(valType) { 5788c339a94Sopenharmony_ci let variable = { 5798c339a94Sopenharmony_ci hDefine: "", 5808c339a94Sopenharmony_ci middleValue: "" 5818c339a94Sopenharmony_ci } 5828c339a94Sopenharmony_ci getHDefineOfVariable("vName", valType, variable); 5838c339a94Sopenharmony_ci let ret = variable.hDefine; 5848c339a94Sopenharmony_ci return JSON.stringify(ret); 5858c339a94Sopenharmony_ci} 5868c339a94Sopenharmony_ci 5878c339a94Sopenharmony_cifunction partOfInterfaceTwo() { 5888c339a94Sopenharmony_ci it('test gen/generate/interface connectResult', function () { 5898c339a94Sopenharmony_ci let data = { 5908c339a94Sopenharmony_ci function: [], 5918c339a94Sopenharmony_ci value: [{ name: "disable", type: "boolean" }, { name: "map1", type: "Map<string,string>" }] 5928c339a94Sopenharmony_ci } 5938c339a94Sopenharmony_ci let ret = connectResult(data, 'napitest::', 'ConfigOption'); 5948c339a94Sopenharmony_ci let retJson = JSON.stringify(ret); 5958c339a94Sopenharmony_ci let getDisable = retJson.search("static napi_value getvalue_disable"); 5968c339a94Sopenharmony_ci assert.strictEqual(getDisable > 0, true) 5978c339a94Sopenharmony_ci let setDisable = retJson.search("static napi_value setvalue_disable"); 5988c339a94Sopenharmony_ci assert.strictEqual(setDisable > 0, true) 5998c339a94Sopenharmony_ci let getMap1 = retJson.search("static napi_value getvalue_map1"); 6008c339a94Sopenharmony_ci assert.strictEqual(getMap1 > 0, true) 6018c339a94Sopenharmony_ci let setMap1 = retJson.search("static napi_value setvalue_map1"); 6028c339a94Sopenharmony_ci assert.strictEqual(setMap1 > 0, true) 6038c339a94Sopenharmony_ci }); 6048c339a94Sopenharmony_ci} 6058c339a94Sopenharmony_ci 6068c339a94Sopenharmony_cifunction partOfTest() { 6078c339a94Sopenharmony_ci it('test gen/generate/param_generate jsToC', function () { 6088c339a94Sopenharmony_ci assert.strictEqual(jsToC("a", "b", "string"), "pxt->SwapJs2CUtf8(b, a);"); 6098c339a94Sopenharmony_ci 6108c339a94Sopenharmony_ci assert.strictEqual(jsToC("a", "b", "NUMBER_TYPE_1"), "NUMBER_JS_2_C(b, NUMBER_TYPE_1, a);"); 6118c339a94Sopenharmony_ci 6128c339a94Sopenharmony_ci assert.strictEqual(jsToC("a", "b", "boolean"), "BOOLEAN_JS_2_C(b, bool, a);\n"); 6138c339a94Sopenharmony_ci 6148c339a94Sopenharmony_ci let retJsToC = JSON.stringify(jsToC("a", "b", "Array<string>")); 6158c339a94Sopenharmony_ci retJsToC = re.replaceAll(retJsToC, "len[0-9]*", "len"); 6168c339a94Sopenharmony_ci retJsToC = re.replaceAll(retJsToC, "i[0-9]*", "i"); 6178c339a94Sopenharmony_ci retJsToC = re.replaceAll(retJsToC, "tt[0-9]*", "tt"); 6188c339a94Sopenharmony_ci assert.strictEqual(retJsToC, JSON.stringify(jsToCParam())); 6198c339a94Sopenharmony_ci 6208c339a94Sopenharmony_ci let retJsToC1 = JSON.stringify(jsToC("a", "b", "string[]")); 6218c339a94Sopenharmony_ci retJsToC1 = re.replaceAll(retJsToC1, "len[0-9]*", "len"); 6228c339a94Sopenharmony_ci retJsToC1 = re.replaceAll(retJsToC1, "i[0-9]*", "i"); 6238c339a94Sopenharmony_ci retJsToC1 = re.replaceAll(retJsToC1, "tt[0-9]*", "tt"); 6248c339a94Sopenharmony_ci assert.strictEqual(retJsToC1, JSON.stringify(jsToCParamArray())); 6258c339a94Sopenharmony_ci 6268c339a94Sopenharmony_ci let retJsToC2 = JSON.stringify(jsToC("a", "b", "{[key:string]:boolean}")); 6278c339a94Sopenharmony_ci retJsToC2 = re.replaceAll(retJsToC2, "len[0-9]*", "len"); 6288c339a94Sopenharmony_ci retJsToC2 = re.replaceAll(retJsToC2, "i[0-9]*", "i"); 6298c339a94Sopenharmony_ci retQiepian = retJsToC2.substring(retJsToC2.indexOf("tt"), retJsToC2.indexOf("tt") + 3) 6308c339a94Sopenharmony_ci retJsToC2 = re.replaceAll(retJsToC2, retQiepian, "tt"); 6318c339a94Sopenharmony_ci retJsToC2 = re.replaceAll(retJsToC2, "tt[0-9]+", "tt1"); 6328c339a94Sopenharmony_ci assert.strictEqual(retJsToC2, JSON.stringify(jsToCParamMap())); 6338c339a94Sopenharmony_ci 6348c339a94Sopenharmony_ci let retJsToC3 = JSON.stringify(jsToC("a", "b", "Map<string,number>")); 6358c339a94Sopenharmony_ci retJsToC3 = re.replaceAll(retJsToC3, "len[0-9]*", "len"); 6368c339a94Sopenharmony_ci retJsToC3 = re.replaceAll(retJsToC3, "i[0-9]*", "i"); 6378c339a94Sopenharmony_ci retQiepian = retJsToC3.substring(retJsToC3.indexOf("tt"), retJsToC3.indexOf("tt") + 3) 6388c339a94Sopenharmony_ci retJsToC3 = re.replaceAll(retJsToC3, retQiepian, "tt"); 6398c339a94Sopenharmony_ci retJsToC3 = re.replaceAll(retJsToC3, "tt[1-9]+", "tt1"); 6408c339a94Sopenharmony_ci assert.strictEqual(retJsToC3, JSON.stringify(jsToCParamMap1())); 6418c339a94Sopenharmony_ci }); 6428c339a94Sopenharmony_ci 6438c339a94Sopenharmony_ci it('test gen/generate/param_generate jsToCEnum', function () { 6448c339a94Sopenharmony_ci let ret = jsToCEnum('string', 'vio->in0', 'pxt->GetArgv(0)') 6458c339a94Sopenharmony_ci let retJson = JSON.stringify(ret) 6468c339a94Sopenharmony_ci assert.strictEqual(retJson, 'null') 6478c339a94Sopenharmony_ci }); 6488c339a94Sopenharmony_ci 6498c339a94Sopenharmony_ci partOfTestTwo() 6508c339a94Sopenharmony_ci} 6518c339a94Sopenharmony_ci 6528c339a94Sopenharmony_cifunction partOfTestTwo(){ 6538c339a94Sopenharmony_ci it('test gen/generate/return_generate cToJs', function () { 6548c339a94Sopenharmony_ci assert.strictEqual(cToJs("a", "string", "b", 1), "b = pxt->SwapC2JsUtf8(a.c_str());\n") 6558c339a94Sopenharmony_ci 6568c339a94Sopenharmony_ci ret = cToJs("a", "NUMBER_TYPE_1", "b", 1) 6578c339a94Sopenharmony_ci assert.strictEqual(ret, "b = NUMBER_C_2_JS(pxt, a);\n") 6588c339a94Sopenharmony_ci 6598c339a94Sopenharmony_ci ret1 = cToJs("a", "boolean", "b", 1) 6608c339a94Sopenharmony_ci assert.strictEqual(ret1, "b = pxt->SwapC2JsBool(a);\n") 6618c339a94Sopenharmony_ci 6628c339a94Sopenharmony_ci ret2 = cToJs("a", "void", "b", 1) 6638c339a94Sopenharmony_ci assert.strictEqual(ret2, "b = pxt->UndefinedValue();\n") 6648c339a94Sopenharmony_ci 6658c339a94Sopenharmony_ci ret3 = cToJs("a", "any", "b", 1) 6668c339a94Sopenharmony_ci assert.strictEqual(ret3, "pxt->GetAnyValue(a_type, result, a);") 6678c339a94Sopenharmony_ci 6688c339a94Sopenharmony_ci let retcToJs = JSON.stringify(cToJs("a", "Array<string>", "b", 1)) 6698c339a94Sopenharmony_ci retcToJs = re.replaceAll(retcToJs, "len[0-9]*", "len") 6708c339a94Sopenharmony_ci retcToJs = re.replaceAll(retcToJs, "i[0-9]*", "i") 6718c339a94Sopenharmony_ci retcToJs = re.replaceAll(retcToJs, "tnv[0-9]*", "tnv") 6728c339a94Sopenharmony_ci assert.strictEqual(retcToJs, JSON.stringify(cToJsParamArray())) 6738c339a94Sopenharmony_ci 6748c339a94Sopenharmony_ci let retcToJs1 = JSON.stringify(cToJs("a", "string[]", "b", 1)) 6758c339a94Sopenharmony_ci retcToJs1 = re.replaceAll(retcToJs1, "len[0-9]*", "len") 6768c339a94Sopenharmony_ci retcToJs1 = re.replaceAll(retcToJs1, "i[0-9]*", "i") 6778c339a94Sopenharmony_ci retcToJs1 = re.replaceAll(retcToJs1, "tnv[0-9]*", "tnv") 6788c339a94Sopenharmony_ci assert.strictEqual(retcToJs1, JSON.stringify(cToJsParamArray())) 6798c339a94Sopenharmony_ci 6808c339a94Sopenharmony_ci let retcToJs2 = JSON.stringify(cToJs("a", "Map<string,string>", "b", 1)) 6818c339a94Sopenharmony_ci retcToJs2 = re.replaceAll(retcToJs2, "i[0-9]*", "i") 6828c339a94Sopenharmony_ci retQiepian = retcToJs2.substring(retcToJs2.indexOf("tnv"), retcToJs2.indexOf("tnv") + 4) 6838c339a94Sopenharmony_ci retcToJs2 = re.replaceAll(retcToJs2, retQiepian, "tnv") 6848c339a94Sopenharmony_ci retcToJs2 = re.replaceAll(retcToJs2, "tnv[0-9]+", "tnv1") 6858c339a94Sopenharmony_ci assert.strictEqual(retcToJs2, JSON.stringify(cToJsParamMap())) 6868c339a94Sopenharmony_ci 6878c339a94Sopenharmony_ci let retcToJs3 = JSON.stringify(cToJs("a", "{[key:string]:string}", "b", 1)) 6888c339a94Sopenharmony_ci retcToJs3 = re.replaceAll(retcToJs3, "i[0-9]*", "i") 6898c339a94Sopenharmony_ci retQiepian = retcToJs3.substring(retcToJs3.indexOf("tnv"), retcToJs3.indexOf("tnv") + 4) 6908c339a94Sopenharmony_ci retcToJs3 = re.replaceAll(retcToJs3, retQiepian, "tnv") 6918c339a94Sopenharmony_ci retcToJs3 = re.replaceAll(retcToJs3, "tnv[0-9]+", "tnv1") 6928c339a94Sopenharmony_ci assert.strictEqual(retcToJs3, JSON.stringify(cToJsParamMap1())) 6938c339a94Sopenharmony_ci }); 6948c339a94Sopenharmony_ci 6958c339a94Sopenharmony_ci partOfTestTwo2(); 6968c339a94Sopenharmony_ci} 6978c339a94Sopenharmony_ci 6988c339a94Sopenharmony_cifunction partOfTestTwo2() { 6998c339a94Sopenharmony_ci it('test gen/generate/return_generate cToJsForInterface', function () { 7008c339a94Sopenharmony_ci let ret = cToJsForInterface('vio->out', 'ConfigOption', 'result', 1) 7018c339a94Sopenharmony_ci let retJson = JSON.stringify(ret) 7028c339a94Sopenharmony_ci assert.strictEqual(retJson, '""') 7038c339a94Sopenharmony_ci }); 7048c339a94Sopenharmony_ci 7058c339a94Sopenharmony_ci it('test gen/generate/return_generate cToJsForType', function () { 7068c339a94Sopenharmony_ci let ret = cToJsForType('vio->out', 'ConfigOption', 'result', 1) 7078c339a94Sopenharmony_ci let retJson = JSON.stringify(ret) 7088c339a94Sopenharmony_ci assert.strictEqual(retJson, '""') 7098c339a94Sopenharmony_ci }); 7108c339a94Sopenharmony_ci 7118c339a94Sopenharmony_ci it('test gen/generate/return_generate objectTempleteFuncReturn', function () { 7128c339a94Sopenharmony_ci let ret = objectTempleteFuncReturn('vio->out'); 7138c339a94Sopenharmony_ci let retJson = JSON.stringify(ret) 7148c339a94Sopenharmony_ci assert.strictEqual(retJson, '"pxt->GetObjectValue(result, vio->out);"') 7158c339a94Sopenharmony_ci }); 7168c339a94Sopenharmony_ci} 7178c339a94Sopenharmony_ci 7188c339a94Sopenharmony_cifunction variableMiddleBoolValue() { 7198c339a94Sopenharmony_ci let variableMidVal = '\n ' + 7208c339a94Sopenharmony_ci ' napi_value ConfigOption_middle::getvalue_disable(napi_env env, napi_callback_info info)\n ' + 7218c339a94Sopenharmony_ci ' {\n ' + 7228c339a94Sopenharmony_ci ' XNapiTool *pxt = std::make_unique<XNapiTool>(env, info).release();\n ' + 7238c339a94Sopenharmony_ci ' void *instPtr = pxt->UnWarpInstance();\n ' + 7248c339a94Sopenharmony_ci ' ConfigOption *p = static_cast<ConfigOption *>(instPtr);\n ' + 7258c339a94Sopenharmony_ci ' napi_value result = nullptr;\n ' + 7268c339a94Sopenharmony_ci ' result = pxt->SwapC2JsBool(p->disable);\n\n ' + 7278c339a94Sopenharmony_ci ' delete pxt;\n ' + 7288c339a94Sopenharmony_ci ' return result;\n ' + 7298c339a94Sopenharmony_ci ' }\n ' + 7308c339a94Sopenharmony_ci ' napi_value ConfigOption_middle::setvalue_disable(napi_env env, napi_callback_info info)\n ' + 7318c339a94Sopenharmony_ci ' {\n ' + 7328c339a94Sopenharmony_ci ' std::shared_ptr<XNapiTool> pxt = std::make_shared<XNapiTool>(env, info);\n ' + 7338c339a94Sopenharmony_ci ' void *instPtr = pxt->UnWarpInstance();\n ' + 7348c339a94Sopenharmony_ci ' ConfigOption *p = static_cast<ConfigOption *>(instPtr);\n ' + 7358c339a94Sopenharmony_ci ' BOOLEAN_JS_2_C(pxt->GetArgv(XNapiTool::ZERO), bool, p->disable);\n\n ' + 7368c339a94Sopenharmony_ci ' return nullptr;\n ' + 7378c339a94Sopenharmony_ci ' }' 7388c339a94Sopenharmony_ci return variableMidVal 7398c339a94Sopenharmony_ci} 7408c339a94Sopenharmony_ci 7418c339a94Sopenharmony_cifunction variableMiddleArrStrValue() { 7428c339a94Sopenharmony_ci let variableMidVal = '\n ' + 7438c339a94Sopenharmony_ci ' napi_value ConfigOption_middle::getvalue_disable(napi_env env, napi_callback_info info)\n ' + 7448c339a94Sopenharmony_ci ' {\n ' + 7458c339a94Sopenharmony_ci ' XNapiTool *pxt = std::make_unique<XNapiTool>(env, info).release();\n ' + 7468c339a94Sopenharmony_ci ' void *instPtr = pxt->UnWarpInstance();\n ' + 7478c339a94Sopenharmony_ci ' ConfigOption *p = static_cast<ConfigOption *>(instPtr);\n ' + 7488c339a94Sopenharmony_ci ' napi_value result = nullptr;\n ' + 7498c339a94Sopenharmony_ci ' pxt->CreateArray(result);\n' + 7508c339a94Sopenharmony_ci ' uint32_t outLen = p->disable.size();\n' + 7518c339a94Sopenharmony_ci ' for (uint32_t i = 0; i < outLen; i++) {\n ' + 7528c339a94Sopenharmony_ci ' napi_value tnv = nullptr;\n ' + 7538c339a94Sopenharmony_ci ' tnv = pxt->SwapC2JsUtf8(p->disable[i].c_str());\n ' + 7548c339a94Sopenharmony_ci ' pxt->SetArrayElement(result, i, tnv);\n }\n ' + 7558c339a94Sopenharmony_ci ' delete pxt;\n ' + 7568c339a94Sopenharmony_ci ' return result;\n ' + 7578c339a94Sopenharmony_ci ' }\n ' + 7588c339a94Sopenharmony_ci ' napi_value ConfigOption_middle::setvalue_disable(napi_env env, napi_callback_info info)\n ' + 7598c339a94Sopenharmony_ci ' {\n ' + 7608c339a94Sopenharmony_ci ' std::shared_ptr<XNapiTool> pxt = std::make_shared<XNapiTool>(env, info);\n ' + 7618c339a94Sopenharmony_ci ' void *instPtr = pxt->UnWarpInstance();\n ' + 7628c339a94Sopenharmony_ci ' ConfigOption *p = static_cast<ConfigOption *>(instPtr);\n ' + 7638c339a94Sopenharmony_ci ' uint32_t len = pxt->GetArrayLength(pxt->GetArgv(XNapiTool::ZERO));\n' + 7648c339a94Sopenharmony_ci ' for (uint32_t i = 0; i < len; i++) {\n ' + 7658c339a94Sopenharmony_ci ' std::string tt;\n ' + 7668c339a94Sopenharmony_ci ' pxt->SwapJs2CUtf8(pxt->GetArrayElement(pxt->GetArgv(XNapiTool::ZERO), i), tt);\n ' + 7678c339a94Sopenharmony_ci ' p->disable.push_back(tt);\n }\n\n ' + 7688c339a94Sopenharmony_ci ' return nullptr;\n ' + 7698c339a94Sopenharmony_ci ' }' 7708c339a94Sopenharmony_ci return variableMidVal; 7718c339a94Sopenharmony_ci} 7728c339a94Sopenharmony_ci 7738c339a94Sopenharmony_cifunction variableMiddleMapStrValue() { 7748c339a94Sopenharmony_ci // let variableMidVal = '\n ' + 7758c339a94Sopenharmony_ci // ' static napi_value getvalue_disable(napi_env env, napi_callback_info info)\n {\n ' + 7768c339a94Sopenharmony_ci // ' XNapiTool *pxt = std::make_unique<XNapiTool>(env, info).release();\n ' + 7778c339a94Sopenharmony_ci // ' void *instPtr = pxt->UnWarpInstance();\n ' + 7788c339a94Sopenharmony_ci // ' ConfigOption *p = static_cast<ConfigOption *>(instPtr);\n ' + 7798c339a94Sopenharmony_ci // ' napi_value result = nullptr;\n ' + 7808c339a94Sopenharmony_ci // ' result = nullptr;\n' + 7818c339a94Sopenharmony_ci // ' for (auto i = p->disable.begin(); i != p->disable.end(); i++) {\n ' + 7828c339a94Sopenharmony_ci // ' const char * tnv;\n ' + 7838c339a94Sopenharmony_ci // ' napi_value tnv = nullptr;\n ' + 7848c339a94Sopenharmony_ci // ' tnv = (i -> first).c_str();\n ' + 7858c339a94Sopenharmony_ci // ' tnv = pxt->SwapC2JsUtf8(i->second.c_str());\n ' + 7868c339a94Sopenharmony_ci // ' pxt->SetMapElement(result, tnv, tnv);\n }\n ' + 7878c339a94Sopenharmony_ci // ' delete pxt;\n ' + 7888c339a94Sopenharmony_ci // ' return result;\n }\n' + 7898c339a94Sopenharmony_ci // ' static napi_value setvalue_disable(napi_env env, napi_callback_info info)\n {\n ' + 7908c339a94Sopenharmony_ci // ' std::shared_ptr<XNapiTool> pxt = std::make_shared<XNapiTool>(env, info);\n ' + 7918c339a94Sopenharmony_ci // ' void *instPtr = pxt->UnWarpInstance();\n ' + 7928c339a94Sopenharmony_ci // ' ConfigOption *p = static_cast<ConfigOption *>(instPtr);\n ' + 7938c339a94Sopenharmony_ci // ' uint32_t len = pxt->GetMapLength(pxt->GetArgv(XNapiTool::ZERO));\n' + 7948c339a94Sopenharmony_ci // 'for (uint32_t i = 0; i < len; i++) {\n' + 7958c339a94Sopenharmony_ci // ' std::string tt;\n' + 7968c339a94Sopenharmony_ci // ' std::string tt;\n' + 7978c339a94Sopenharmony_ci // ' pxt->SwapJs2CUtf8(pxt->GetMapElementName(pxt->GetArgv(XNapiTool::ZERO), i), tt);\n ' + 7988c339a94Sopenharmony_ci // ' pxt->SwapJs2CUtf8(pxt->GetMapElementValue(pxt->GetArgv(XNapiTool::ZERO), tt.c_str()), tt);\n\n' + 7998c339a94Sopenharmony_ci // ' p->disable.insert(std::make_pair(tt, tt));\n}\n ' + 8008c339a94Sopenharmony_ci // ' return nullptr;\n }' 8018c339a94Sopenharmony_ci 8028c339a94Sopenharmony_ci let variableMidVal = "\n napi_value ConfigOption_middle::getvalue_disable(napi_env env, napi_callback_info info)\n {\n XNapiTool *pxt = std::make_unique<XNapiTool>(env, info).release();\n void *instPtr = pxt->UnWarpInstance();\n ConfigOption *p = static_cast<ConfigOption *>(instPtr);\n napi_value result = nullptr;\n result = nullptr;\n for (auto i = p->disable.begin(); i != p->disable.end(); i++) {\n const char * tnv;\n napi_value tnv = nullptr;\n tnv = (i -> first).c_str();\n tnv = pxt->SwapC2JsUtf8(i->second.c_str());\n pxt->SetMapElement(result, tnv, tnv);\n }\n delete pxt;\n return result;\n }\n napi_value ConfigOption_middle::setvalue_disable(napi_env env, napi_callback_info info)\n {\n std::shared_ptr<XNapiTool> pxt = std::make_shared<XNapiTool>(env, info);\n void *instPtr = pxt->UnWarpInstance();\n ConfigOption *p = static_cast<ConfigOption *>(instPtr);\n uint32_t len = pxt->GetMapLength(pxt->GetArgv(XNapiTool::ZERO));\nfor (uint32_t i = 0; i < len; i++) {\n std::string tt;\n std::string tt;\n pxt->SwapJs2CUtf8(pxt->GetMapElementName(pxt->GetArgv(XNapiTool::ZERO), i), tt);\n pxt->SwapJs2CUtf8(pxt->GetMapElementValue(pxt->GetArgv(XNapiTool::ZERO), tt.c_str()), tt);\n\n p->disable.insert(std::make_pair(tt, tt));\n}\n return nullptr;\n }" 8038c339a94Sopenharmony_ci return variableMidVal; 8048c339a94Sopenharmony_ci} 8058c339a94Sopenharmony_ci 8068c339a94Sopenharmony_cifunction cToJsParamArray() { 8078c339a94Sopenharmony_ci let value = 'pxt->CreateArray(b);\n' + 8088c339a94Sopenharmony_ci ' uint32_t outLen1 = a.size();\n' + 8098c339a94Sopenharmony_ci ' for (uint32_t i = 0; i < outLen1; i++) {\n' + 8108c339a94Sopenharmony_ci ' napi_value tnv = nullptr;\n' + 8118c339a94Sopenharmony_ci ' tnv = pxt->SwapC2JsUtf8(a[i].c_str());\n' + 8128c339a94Sopenharmony_ci ' pxt->SetArrayElement(b, i, tnv);\n' + 8138c339a94Sopenharmony_ci ' }' 8148c339a94Sopenharmony_ci return value 8158c339a94Sopenharmony_ci} 8168c339a94Sopenharmony_ci 8178c339a94Sopenharmony_cifunction cToJsParamMap() { 8188c339a94Sopenharmony_ci let value = 'result = nullptr;\n' + 8198c339a94Sopenharmony_ci ' for (auto i = a.begin(); i != a.end(); i++) {\n' + 8208c339a94Sopenharmony_ci ' const char * tnv;\n' + 8218c339a94Sopenharmony_ci ' napi_value tnv1 = nullptr;\n' + 8228c339a94Sopenharmony_ci ' tnv = (i -> first).c_str();\n' + 8238c339a94Sopenharmony_ci ' tnv1 = pxt->SwapC2JsUtf8(i->second.c_str());\n' + 8248c339a94Sopenharmony_ci ' pxt->SetMapElement(b, tnv, tnv1);\n' + 8258c339a94Sopenharmony_ci ' }' 8268c339a94Sopenharmony_ci return value 8278c339a94Sopenharmony_ci} 8288c339a94Sopenharmony_ci 8298c339a94Sopenharmony_cifunction cToJsParamMap1() { 8308c339a94Sopenharmony_ci let value = 'result = nullptr;\n' + 8318c339a94Sopenharmony_ci ' for (auto i = a.begin(); i != a.end(); i++) {\n' + 8328c339a94Sopenharmony_ci ' const char * tnv;\n' + 8338c339a94Sopenharmony_ci ' napi_value tnv1 = nullptr;\n' + 8348c339a94Sopenharmony_ci ' tnv = (i -> first).c_str();\n' + 8358c339a94Sopenharmony_ci ' tnv1 = pxt->SwapC2JsUtf8(i->second.c_str());\n' + 8368c339a94Sopenharmony_ci ' pxt->SetMapElement(b, tnv, tnv1);\n' + 8378c339a94Sopenharmony_ci ' }' 8388c339a94Sopenharmony_ci return value 8398c339a94Sopenharmony_ci} 8408c339a94Sopenharmony_ci 8418c339a94Sopenharmony_cifunction jsToCParam() { 8428c339a94Sopenharmony_ci let value = ' uint32_t len = pxt->GetArrayLength(b);\n' + 8438c339a94Sopenharmony_ci ' for (uint32_t i = 0; i < len; i++) {\n' + 8448c339a94Sopenharmony_ci ' std::string tt;\n' + 8458c339a94Sopenharmony_ci ' pxt->SwapJs2CUtf8(pxt->GetArrayElement(b, i), tt);\n' + 8468c339a94Sopenharmony_ci ' a.push_back(tt);\n' + 8478c339a94Sopenharmony_ci ' }\n' 8488c339a94Sopenharmony_ci return value 8498c339a94Sopenharmony_ci} 8508c339a94Sopenharmony_ci 8518c339a94Sopenharmony_cifunction jsToCParamArray() { 8528c339a94Sopenharmony_ci let value = ' uint32_t len = pxt->GetArrayLength(b);\n' + 8538c339a94Sopenharmony_ci ' for (uint32_t i = 0; i < len; i++) {\n' + 8548c339a94Sopenharmony_ci ' std::string tt;\n' + 8558c339a94Sopenharmony_ci ' pxt->SwapJs2CUtf8(pxt->GetArrayElement(b, i), tt);\n' + 8568c339a94Sopenharmony_ci ' a.push_back(tt);\n' + 8578c339a94Sopenharmony_ci ' }\n' 8588c339a94Sopenharmony_ci return value 8598c339a94Sopenharmony_ci} 8608c339a94Sopenharmony_ci 8618c339a94Sopenharmony_cifunction jsToCParamMap() { 8628c339a94Sopenharmony_ci let value = 'uint32_t len = pxt->GetMapLength(b);\n' + 8638c339a94Sopenharmony_ci 'for (uint32_t i = 0; i < len; i++) {\n' + 8648c339a94Sopenharmony_ci ' std::string tt1;\n' + 8658c339a94Sopenharmony_ci ' bool tt1;\n' + 8668c339a94Sopenharmony_ci ' pxt->SwapJs2CUtf8(pxt->GetMapElementName(b, i), tt1);\n' + 8678c339a94Sopenharmony_ci ' tt1 = pxt->SwapJs2CBool(pxt->GetMapElementValue(b, tt1.c_str()));\n' + 8688c339a94Sopenharmony_ci '\n' + 8698c339a94Sopenharmony_ci ' a.insert(std::make_pair(tt1, tt1));\n' + 8708c339a94Sopenharmony_ci '}' 8718c339a94Sopenharmony_ci return value 8728c339a94Sopenharmony_ci} 8738c339a94Sopenharmony_ci 8748c339a94Sopenharmony_cifunction jsToCParamMap1() { 8758c339a94Sopenharmony_ci // let value = 'uint32_t len = pxt->GetMapLength(b);\n' + 8768c339a94Sopenharmony_ci // 'for (uint32_t i = 0; i < len; i++) {\n' + 8778c339a94Sopenharmony_ci // ' std::string tt;\n' + 8788c339a94Sopenharmony_ci // ' number tt1;\n' + 8798c339a94Sopenharmony_ci // ' [replace_swap]\n' + 8808c339a94Sopenharmony_ci // ' a.insert(std::make_pair(tt, tt1));\n' + 8818c339a94Sopenharmony_ci // '}' 8828c339a94Sopenharmony_ci // let value = "uint32_t len = pxt->GetMapLength(b);\nfor (uint32_t i = 0; i < len; i++) {\n std::string tt0;\n number tt1;\n [replace_swap]\n a.insert(std::make_pair(tt0, tt1));\n}" 8838c339a94Sopenharmony_ci let value = "uint32_t len = pxt->GetMapLength(b);\nfor (uint32_t i = 0; i < len; i++) {\n std::string tt1;\n number tt1;\n [replace_swap]\n a.insert(std::make_pair(tt1, tt1));\n}" 8848c339a94Sopenharmony_ci return value 8858c339a94Sopenharmony_ci} 8868c339a94Sopenharmony_ci 8878c339a94Sopenharmony_cifunction partOfNamespace(correctResult) { 8888c339a94Sopenharmony_ci it('test gen/generate/namespace generateNamespace', function () { 8898c339a94Sopenharmony_ci let enumElement = [{ name: "name", value: "", type: "string" }]; 8908c339a94Sopenharmony_ci let interfaceBody = { function: [], value: [{ name: "age", type: "NUMBER_TYPE_1" }] } 8918c339a94Sopenharmony_ci let data = { 8928c339a94Sopenharmony_ci class: [], 8938c339a94Sopenharmony_ci const: [], 8948c339a94Sopenharmony_ci enum: [{ name: "TestEnum", body: { element: enumElement, function: [], enumValueType: 0 } }], 8958c339a94Sopenharmony_ci export: [], 8968c339a94Sopenharmony_ci function: [{ name: "fun1", type: 1, value: [{ name: "v", type: "Array<string>" }], ret: "string" }], 8978c339a94Sopenharmony_ci interface: [{ name: "TestInterface", body: interfaceBody }], 8988c339a94Sopenharmony_ci namespace: [] 8998c339a94Sopenharmony_ci }; 9008c339a94Sopenharmony_ci let retJson = JSON.stringify(generateNamespace('napitest', data, inNamespace = "")); 9018c339a94Sopenharmony_ci retJson = re.replaceAll(retJson, " ", "") 9028c339a94Sopenharmony_ci retJson = re.replaceAll(retJson, "\\n", "") 9038c339a94Sopenharmony_ci retJson = re.replaceAll(retJson, "len[0-9]+", "len") 9048c339a94Sopenharmony_ci retJson = re.replaceAll(retJson, "i[0-9]+", "i") 9058c339a94Sopenharmony_ci retJson = re.replaceAll(retJson, "tt[0-9]+", "tt") 9068c339a94Sopenharmony_ci assert.strictEqual(retJson, correctResult['Generate']['generateNamespace']); 9078c339a94Sopenharmony_ci }); 9088c339a94Sopenharmony_ci 9098c339a94Sopenharmony_ci it('test gen/generate/namespace generateEnumResult', function () { 9108c339a94Sopenharmony_ci let data = { 9118c339a94Sopenharmony_ci "exports": ["GrantStatus"], 9128c339a94Sopenharmony_ci "enum": [{ 9138c339a94Sopenharmony_ci "name": "GrantStatus", 9148c339a94Sopenharmony_ci "body": { 9158c339a94Sopenharmony_ci "element": [ 9168c339a94Sopenharmony_ci { "name": "PERMISSION_DEFAULT", "value": "", "type": "string" }], 9178c339a94Sopenharmony_ci "function": [], 9188c339a94Sopenharmony_ci "enumValueType": 1 9198c339a94Sopenharmony_ci } 9208c339a94Sopenharmony_ci }], 9218c339a94Sopenharmony_ci "const": [], 9228c339a94Sopenharmony_ci "type": [], 9238c339a94Sopenharmony_ci "function": [], 9248c339a94Sopenharmony_ci "interface": [], 9258c339a94Sopenharmony_ci "class": [], 9268c339a94Sopenharmony_ci "namespace": [] 9278c339a94Sopenharmony_ci }; 9288c339a94Sopenharmony_ci let retJson = JSON.stringify(generateEnumResult(data)); 9298c339a94Sopenharmony_ci let actualResult = retJson.substring(1,retJson.indexOf("implCpp") - 2); 9308c339a94Sopenharmony_ci let expectresult1 = "\"implH\":\"\\nclass GrantStatus {\\npublic:\\n "; 9318c339a94Sopenharmony_ci let expectresult2 = "static const std::string PERMISSION_DEFAULT;\\n};\\n\""; 9328c339a94Sopenharmony_ci assert.strictEqual(actualResult, expectresult1 + expectresult2); 9338c339a94Sopenharmony_ci }); 9348c339a94Sopenharmony_ci 9358c339a94Sopenharmony_ci partOfNamespaceTwo(); 9368c339a94Sopenharmony_ci} 9378c339a94Sopenharmony_cifunction partOfNamespaceTwo(){ 9388c339a94Sopenharmony_ci it('test gen/generate/namespace generateFunction', function () { 9398c339a94Sopenharmony_ci let func = { name: "fun1", type: 4, value: [{ name: "cb", type: "AsyncCallback<string>" }] }; 9408c339a94Sopenharmony_ci let funcValue = [{ name: "cb", type: "AsyncCallback<string>" }] 9418c339a94Sopenharmony_ci let data = { 9428c339a94Sopenharmony_ci class: [], 9438c339a94Sopenharmony_ci const: [], 9448c339a94Sopenharmony_ci enum: [], 9458c339a94Sopenharmony_ci export: [], 9468c339a94Sopenharmony_ci function: [{ name: "fun1", type: 4, value: funcValue, ret: "string" }], 9478c339a94Sopenharmony_ci interface: [], 9488c339a94Sopenharmony_ci namespace: [] 9498c339a94Sopenharmony_ci }; 9508c339a94Sopenharmony_ci let retJson = JSON.stringify(generateFunction(func, data)); 9518c339a94Sopenharmony_ci retJson = re.replaceAll(retJson, " ", "") 9528c339a94Sopenharmony_ci assert.strictEqual(retJson, correctResult['Generate']['generateFunction']); 9538c339a94Sopenharmony_ci }); 9548c339a94Sopenharmony_ci 9558c339a94Sopenharmony_ci it('test gen/generate/namespace formatMiddleInit', function () { 9568c339a94Sopenharmony_ci let ret = formatMiddleInit('', 'napitest'); 9578c339a94Sopenharmony_ci assert.strictEqual(JSON.stringify(ret), '""'); 9588c339a94Sopenharmony_ci }) 9598c339a94Sopenharmony_ci} 9608c339a94Sopenharmony_ci 9618c339a94Sopenharmony_cifunction partofParamGenerate(correctResult) { 9628c339a94Sopenharmony_ci partofParamGenerateArr(correctResult); 9638c339a94Sopenharmony_ci 9648c339a94Sopenharmony_ci partofParamGenerateMap(correctResult); 9658c339a94Sopenharmony_ci 9668c339a94Sopenharmony_ci partofParamGenerateCommon(correctResult); 9678c339a94Sopenharmony_ci 9688c339a94Sopenharmony_ci partofParamGenerateUnion(correctResult); 9698c339a94Sopenharmony_ci 9708c339a94Sopenharmony_ci partofParamGenerateCallBack(correctResult); 9718c339a94Sopenharmony_ci 9728c339a94Sopenharmony_ci partofParamGenerateAny(correctResult); 9738c339a94Sopenharmony_ci 9748c339a94Sopenharmony_ci partofParamGenerateObject(correctResult); 9758c339a94Sopenharmony_ci 9768c339a94Sopenharmony_ci partmapTempleteFunc() 9778c339a94Sopenharmony_ci 9788c339a94Sopenharmony_ci partunionTempleteFunc() 9798c339a94Sopenharmony_ci 9808c339a94Sopenharmony_ci partanyTempleteFunc() 9818c339a94Sopenharmony_ci 9828c339a94Sopenharmony_ci partobjectTempleteFunc() 9838c339a94Sopenharmony_ci 9848c339a94Sopenharmony_ci it('test gen/generate/param_generate ParamGenerate', function () { 9858c339a94Sopenharmony_ci paramGenerateResult(correctResult); 9868c339a94Sopenharmony_ci }); 9878c339a94Sopenharmony_ci 9888c339a94Sopenharmony_ci it('test gen/generate/return_generate returnGenerate', function () { 9898c339a94Sopenharmony_ci returnGenerateParam(correctResult); 9908c339a94Sopenharmony_ci }); 9918c339a94Sopenharmony_ci} 9928c339a94Sopenharmony_ci 9938c339a94Sopenharmony_cifunction partofParamGenerateArr(correctResult) { 9948c339a94Sopenharmony_ci it('test gen/generate/param_generate paramGenerateArray', function () { 9958c339a94Sopenharmony_ci let param = { 9968c339a94Sopenharmony_ci valueCheckout: '', 9978c339a94Sopenharmony_ci valueDefine: '', 9988c339a94Sopenharmony_ci valueFill: '', 9998c339a94Sopenharmony_ci valueIn: '', 10008c339a94Sopenharmony_ci valueOut: '', 10018c339a94Sopenharmony_ci valuePackage: '' 10028c339a94Sopenharmony_ci } 10038c339a94Sopenharmony_ci let funcValue = { name: 'v', type: 'Array<string>' } 10048c339a94Sopenharmony_ci paramGenerateArray('0', funcValue, param); 10058c339a94Sopenharmony_ci let retParam = JSON.stringify(param); 10068c339a94Sopenharmony_ci retParam = re.replaceAll(retParam," ",""); 10078c339a94Sopenharmony_ci retParam = re.replaceAll(retParam,"len[0-9]+","len") 10088c339a94Sopenharmony_ci retParam = re.replaceAll(retParam,"i[0-9]+","i") 10098c339a94Sopenharmony_ci retParam = re.replaceAll(retParam,"tt[0-9]+","tt") 10108c339a94Sopenharmony_ci assert.strictEqual(retParam, correctResult['Generate']['paramGenerateArray']) 10118c339a94Sopenharmony_ci }); 10128c339a94Sopenharmony_ci} 10138c339a94Sopenharmony_ci 10148c339a94Sopenharmony_cifunction partofParamGenerateMap(correctResult) { 10158c339a94Sopenharmony_ci it('test gen/generate/param_generate paramGenerateMap', function () { 10168c339a94Sopenharmony_ci let param1 = { 10178c339a94Sopenharmony_ci optionalParamDestory: '', 10188c339a94Sopenharmony_ci valueCheckout: '', 10198c339a94Sopenharmony_ci valueDefine: '', 10208c339a94Sopenharmony_ci valueFill: '', 10218c339a94Sopenharmony_ci valueIn: '', 10228c339a94Sopenharmony_ci valueOut: '', 10238c339a94Sopenharmony_ci valuePackage: '' 10248c339a94Sopenharmony_ci } 10258c339a94Sopenharmony_ci let funcVlaue = { name: 'v', type: '{[key:string]:string}', optional: false }; 10268c339a94Sopenharmony_ci paramGenerateMap(funcVlaue, param1, '0'); 10278c339a94Sopenharmony_ci let retParam1 = JSON.stringify(param1); 10288c339a94Sopenharmony_ci retParam1 = re.replaceAll(retParam1," ",""); 10298c339a94Sopenharmony_ci retParam1 = re.replaceAll(retParam1,"len[0-9]+","len") 10308c339a94Sopenharmony_ci retParam1 = re.replaceAll(retParam1,"i[0-9]+","i") 10318c339a94Sopenharmony_ci let parmQiepian = retParam1.substring(retParam1.indexOf("tt"),retParam1.indexOf("tt")+3) 10328c339a94Sopenharmony_ci retParam1 = re.replaceAll(retParam1,parmQiepian,"tt") 10338c339a94Sopenharmony_ci retParam1 = re.replaceAll(retParam1,"tt[0-9]+","tt") 10348c339a94Sopenharmony_ci assert.strictEqual(retParam1, correctResult['Generate']['paramGenerateMap']) 10358c339a94Sopenharmony_ci }); 10368c339a94Sopenharmony_ci} 10378c339a94Sopenharmony_ci 10388c339a94Sopenharmony_cifunction partofParamGenerateCommon(correctResult) { 10398c339a94Sopenharmony_ci it('test gen/generate/param_generate paramGenerateCommon', function () { 10408c339a94Sopenharmony_ci let param1 = { 10418c339a94Sopenharmony_ci optionalParamDestory: '', 10428c339a94Sopenharmony_ci valueCheckout: '', 10438c339a94Sopenharmony_ci valueDefine: '', 10448c339a94Sopenharmony_ci valueFill: '', 10458c339a94Sopenharmony_ci valueIn: '', 10468c339a94Sopenharmony_ci valueOut: '', 10478c339a94Sopenharmony_ci valuePackage: '' 10488c339a94Sopenharmony_ci } 10498c339a94Sopenharmony_ci let funcVlaue = { name: 'v', type: 'string', optional: false }; 10508c339a94Sopenharmony_ci paramGenerateCommon('0', 'std::string', funcVlaue, param1, '&', 'vio->in0'); 10518c339a94Sopenharmony_ci let retParam1 = JSON.stringify(param1); 10528c339a94Sopenharmony_ci retParam1 = re.replaceAll(retParam1," ",""); 10538c339a94Sopenharmony_ci retParam1 = re.replaceAll(retParam1,"len[0-9]+","len") 10548c339a94Sopenharmony_ci retParam1 = re.replaceAll(retParam1,"i[0-9]+","i") 10558c339a94Sopenharmony_ci retParam1 = re.replaceAll(retParam1,"tt[0-9]+","tt") 10568c339a94Sopenharmony_ci assert.strictEqual(retParam1, correctResult['Generate']['paramGenerateCommon']) 10578c339a94Sopenharmony_ci }); 10588c339a94Sopenharmony_ci} 10598c339a94Sopenharmony_ci 10608c339a94Sopenharmony_cifunction partofParamGenerateUnion(correctResult) { 10618c339a94Sopenharmony_ci it('test gen/generate/param_generate paramGenerateUnion', function () { 10628c339a94Sopenharmony_ci let param1 = { 10638c339a94Sopenharmony_ci optionalParamDestory: '', 10648c339a94Sopenharmony_ci valueCheckout: '', 10658c339a94Sopenharmony_ci valueDefine: '', 10668c339a94Sopenharmony_ci valueFill: '', 10678c339a94Sopenharmony_ci valueIn: '', 10688c339a94Sopenharmony_ci valueOut: '', 10698c339a94Sopenharmony_ci valuePackage: '' 10708c339a94Sopenharmony_ci } 10718c339a94Sopenharmony_ci paramGenerateUnion('string|NUMBER_TYPE_1|boolean', param1, '0', 'v'); 10728c339a94Sopenharmony_ci let retParam1 = JSON.stringify(param1); 10738c339a94Sopenharmony_ci retParam1 = re.replaceAll(retParam1," ",""); 10748c339a94Sopenharmony_ci assert.strictEqual(retParam1, correctResult['Generate']['paramGenerateUnion']) 10758c339a94Sopenharmony_ci }); 10768c339a94Sopenharmony_ci} 10778c339a94Sopenharmony_ci 10788c339a94Sopenharmony_cifunction partofParamGenerateCallBack(correctResult) { 10798c339a94Sopenharmony_ci it('test gen/generate/param_generate paramGenerateCallBack', function () { 10808c339a94Sopenharmony_ci let data = { 10818c339a94Sopenharmony_ci class: [], 10828c339a94Sopenharmony_ci const: [], 10838c339a94Sopenharmony_ci enum: [], 10848c339a94Sopenharmony_ci exports: [], 10858c339a94Sopenharmony_ci function: [ 10868c339a94Sopenharmony_ci {isStatic: false, 10878c339a94Sopenharmony_ci name: 't1', 10888c339a94Sopenharmony_ci type: 2, 10898c339a94Sopenharmony_ci value: [{name: 'v1', type: 'string', optional: false}, 10908c339a94Sopenharmony_ci {name: 'cb', type: 'Callback<string>', optional: false}], 10918c339a94Sopenharmony_ci ret: 'void'}], 10928c339a94Sopenharmony_ci interface: [], 10938c339a94Sopenharmony_ci namespace: [] 10948c339a94Sopenharmony_ci } 10958c339a94Sopenharmony_ci let param1 = { 10968c339a94Sopenharmony_ci optionalParamDestory: '', 10978c339a94Sopenharmony_ci valueCheckout: '', 10988c339a94Sopenharmony_ci valueDefine: '', 10998c339a94Sopenharmony_ci valueFill: '', 11008c339a94Sopenharmony_ci valueIn: '', 11018c339a94Sopenharmony_ci valueOut: '', 11028c339a94Sopenharmony_ci valuePackage: '' 11038c339a94Sopenharmony_ci } 11048c339a94Sopenharmony_ci let funcVlaue = { name: 'cb', type: 'Callback<string>', optional: false }; 11058c339a94Sopenharmony_ci paramGenerateCallBack(data, funcVlaue, param1, '1'); 11068c339a94Sopenharmony_ci let retParam1 = JSON.stringify(param1); 11078c339a94Sopenharmony_ci retParam1 = re.replaceAll(retParam1," ",""); 11088c339a94Sopenharmony_ci assert.strictEqual(retParam1, correctResult['Generate']['paramGenerateCallBack']) 11098c339a94Sopenharmony_ci }); 11108c339a94Sopenharmony_ci} 11118c339a94Sopenharmony_ci 11128c339a94Sopenharmony_cifunction partofParamGenerateAny(correctResult) { 11138c339a94Sopenharmony_ci it('test gen/generate/param_generate paramGenerateAny', function () { 11148c339a94Sopenharmony_ci let param1 = { 11158c339a94Sopenharmony_ci optionalParamDestory: '', 11168c339a94Sopenharmony_ci valueCheckout: '', 11178c339a94Sopenharmony_ci valueDefine: '', 11188c339a94Sopenharmony_ci valueFill: '', 11198c339a94Sopenharmony_ci valueIn: '', 11208c339a94Sopenharmony_ci valueOut: '', 11218c339a94Sopenharmony_ci valuePackage: '' 11228c339a94Sopenharmony_ci } 11238c339a94Sopenharmony_ci paramGenerateAny('0', 'v', 'any', param1); 11248c339a94Sopenharmony_ci let retParam1 = JSON.stringify(param1); 11258c339a94Sopenharmony_ci retParam1 = re.replaceAll(retParam1," ",""); 11268c339a94Sopenharmony_ci assert.strictEqual(retParam1, correctResult['Generate']['paramGenerateAny']) 11278c339a94Sopenharmony_ci }); 11288c339a94Sopenharmony_ci} 11298c339a94Sopenharmony_ci 11308c339a94Sopenharmony_cifunction partofParamGenerateObject(correctResult) { 11318c339a94Sopenharmony_ci it('test gen/generate/param_generate paramGenerateObject', function () { 11328c339a94Sopenharmony_ci let param1 = { 11338c339a94Sopenharmony_ci optionalParamDestory: '', 11348c339a94Sopenharmony_ci valueCheckout: '', 11358c339a94Sopenharmony_ci valueDefine: '', 11368c339a94Sopenharmony_ci valueFill: '', 11378c339a94Sopenharmony_ci valueIn: '', 11388c339a94Sopenharmony_ci valueOut: '', 11398c339a94Sopenharmony_ci valuePackage: '' 11408c339a94Sopenharmony_ci } 11418c339a94Sopenharmony_ci let funcVlaue = { name: 'v', type: 'Object', optional: false }; 11428c339a94Sopenharmony_ci paramGenerateObject('0', funcVlaue, param1); 11438c339a94Sopenharmony_ci let retParam1 = JSON.stringify(param1); 11448c339a94Sopenharmony_ci retParam1 = re.replaceAll(retParam1," ",""); 11458c339a94Sopenharmony_ci retParam1 = re.replaceAll(retParam1,"len[0-9]+","len"); 11468c339a94Sopenharmony_ci retParam1 = re.replaceAll(retParam1,"i[0-9]+","i"); 11478c339a94Sopenharmony_ci retParam1 = re.replaceAll(retParam1,"tt[0-9]+","tt"); 11488c339a94Sopenharmony_ci retParam1 = re.replaceAll(retParam1,"NUMBER_TYPE_[0-9]+","NUMBER_TYPE_"); 11498c339a94Sopenharmony_ci assert.strictEqual(retParam1, correctResult['Generate']['paramGenerateObject']) 11508c339a94Sopenharmony_ci }); 11518c339a94Sopenharmony_ci} 11528c339a94Sopenharmony_ci 11538c339a94Sopenharmony_cifunction partmapTempleteFunc() { 11548c339a94Sopenharmony_ci it('test gen/generate/param_generate mapTempleteFunc', function () { 11558c339a94Sopenharmony_ci let ret = mapTempleteFunc('vio->in0', 'pxt->GetArgv(0)', '{[key:string]:string}') 11568c339a94Sopenharmony_ci let retJson = JSON.stringify(ret) 11578c339a94Sopenharmony_ci retJson = re.replaceAll(retJson," ",""); 11588c339a94Sopenharmony_ci retJson = re.replaceAll(retJson,"len[0-9]+","len"); 11598c339a94Sopenharmony_ci retJson = re.replaceAll(retJson,"i[0-9]+","i"); 11608c339a94Sopenharmony_ci let parmQiepian = retJson.substring(retJson.indexOf("tt"),retJson.indexOf("tt")+4) 11618c339a94Sopenharmony_ci retJson = re.replaceAll(retJson,parmQiepian,"kk1"); 11628c339a94Sopenharmony_ci retJson = re.replaceAll(retJson,"tt[0-9]+","kk2"); 11638c339a94Sopenharmony_ci retJson = re.replaceAll(retJson,"\n","") 11648c339a94Sopenharmony_ci assert.strictEqual(retJson, correctResult['Generate']['mapTempleteFunc']) 11658c339a94Sopenharmony_ci }) 11668c339a94Sopenharmony_ci} 11678c339a94Sopenharmony_ci 11688c339a94Sopenharmony_cifunction partunionTempleteFunc(){ 11698c339a94Sopenharmony_ci it('test gen/generate/param_generate unionTempleteFunc', function () { 11708c339a94Sopenharmony_ci let ret = unionTempleteFunc('vio->in0', 'pxt->GetArgv(XNapiTool::ZERO)', 'string|NUMBER_TYPE_1|boolean') 11718c339a94Sopenharmony_ci let retJson = JSON.stringify(ret) 11728c339a94Sopenharmony_ci retJson = re.replaceAll(retJson," ",""); 11738c339a94Sopenharmony_ci retJson = re.replaceAll(retJson,"\n","") 11748c339a94Sopenharmony_ci assert.strictEqual(retJson, correctResult['Generate']['unionTempleteFunc']) 11758c339a94Sopenharmony_ci }) 11768c339a94Sopenharmony_ci} 11778c339a94Sopenharmony_ci 11788c339a94Sopenharmony_cifunction partanyTempleteFunc(){ 11798c339a94Sopenharmony_ci it('test gen/generate/param_generate anyTempleteFunc', function () { 11808c339a94Sopenharmony_ci let ret = anyTempleteFunc('vio->in0'); 11818c339a94Sopenharmony_ci let retJson = JSON.stringify(ret); 11828c339a94Sopenharmony_ci retJson = re.replaceAll(retJson," ",""); 11838c339a94Sopenharmony_ci retJson = re.replaceAll(retJson,"\n",""); 11848c339a94Sopenharmony_ci assert.strictEqual(retJson, correctResult['Generate']['anyTempleteFunc']); 11858c339a94Sopenharmony_ci }) 11868c339a94Sopenharmony_ci} 11878c339a94Sopenharmony_ci 11888c339a94Sopenharmony_cifunction partobjectTempleteFunc(){ 11898c339a94Sopenharmony_ci it('test gen/generate/param_generate objectTempleteFunc', function () { 11908c339a94Sopenharmony_ci let ret = objectTempleteFunc('vio->in0', 'pxt->GetArgv(XNapiTool::ZERO)') 11918c339a94Sopenharmony_ci let retJson = JSON.stringify(ret) 11928c339a94Sopenharmony_ci retJson = re.replaceAll(retJson," ",""); 11938c339a94Sopenharmony_ci retJson = re.replaceAll(retJson,"len[0-9]+","len"); 11948c339a94Sopenharmony_ci retJson = re.replaceAll(retJson,"i[0-9]+","i"); 11958c339a94Sopenharmony_ci retJson = re.replaceAll(retJson,"tt[0-9]+","tt"); 11968c339a94Sopenharmony_ci retJson = re.replaceAll(retJson,"NUMBER_TYPE_[0-9]+","NUMBER_TYPE_"); 11978c339a94Sopenharmony_ci retJson = re.replaceAll(retJson,"\n","") 11988c339a94Sopenharmony_ci assert.strictEqual(retJson, correctResult['Generate']['objectTempleteFunc']) 11998c339a94Sopenharmony_ci }) 12008c339a94Sopenharmony_ci} 12018c339a94Sopenharmony_ci 12028c339a94Sopenharmony_cifunction returnGenerateParam(correctResult) { 12038c339a94Sopenharmony_ci let retJson = returnGenerateAndAssert("string") 12048c339a94Sopenharmony_ci retJson = re.replaceAll(retJson," ","") 12058c339a94Sopenharmony_ci 12068c339a94Sopenharmony_ci assert.strictEqual(retJson, correctResult['Generate']['returnGenerate']) 12078c339a94Sopenharmony_ci 12088c339a94Sopenharmony_ci let retJson1 = returnGenerateAndAssert("NUMBER_TYPE_1") 12098c339a94Sopenharmony_ci retJson1 = re.replaceAll(retJson1," ","") 12108c339a94Sopenharmony_ci 12118c339a94Sopenharmony_ci assert.strictEqual(retJson1, correctResult['Generate']['returnGenerate1']) 12128c339a94Sopenharmony_ci 12138c339a94Sopenharmony_ci let retJson2 = returnGenerateAndAssert("boolean") 12148c339a94Sopenharmony_ci retJson2 = re.replaceAll(retJson2," ","") 12158c339a94Sopenharmony_ci assert.strictEqual(retJson2, correctResult['Generate']['returnGenerate2']) 12168c339a94Sopenharmony_ci 12178c339a94Sopenharmony_ci let retJson3 = returnGenerateAndAssert("Array<string>") 12188c339a94Sopenharmony_ci retJson3 = re.replaceAll(retJson3," ","") 12198c339a94Sopenharmony_ci retJson3 = re.replaceAll(retJson3,"len[0-9]*","len") 12208c339a94Sopenharmony_ci retJson3 = re.replaceAll(retJson3,"i[0-9]*","i") 12218c339a94Sopenharmony_ci retJson3 = re.replaceAll(retJson3,"tnv[0-9]*","tnv") 12228c339a94Sopenharmony_ci 12238c339a94Sopenharmony_ci assert.strictEqual(retJson3, correctResult['Generate']['returnGenerate3']) 12248c339a94Sopenharmony_ci 12258c339a94Sopenharmony_ci let retJson4 = returnGenerateAndAssert("Array<NUMBER_TYPE_1>") 12268c339a94Sopenharmony_ci retJson4 = re.replaceAll(retJson4," ","") 12278c339a94Sopenharmony_ci retJson4 = re.replaceAll(retJson4,"len[0-9]*","len") 12288c339a94Sopenharmony_ci retJson4 = re.replaceAll(retJson4,"i[0-9]*","i") 12298c339a94Sopenharmony_ci retJson4 = re.replaceAll(retJson4,"tnv[0-9]*","tnv") 12308c339a94Sopenharmony_ci assert.strictEqual(retJson4, correctResult['Generate']['returnGenerate4']) 12318c339a94Sopenharmony_ci 12328c339a94Sopenharmony_ci let retJson5 = returnGenerateAndAssert("Array<boolean>") 12338c339a94Sopenharmony_ci retJson5 = re.replaceAll(retJson5," ","") 12348c339a94Sopenharmony_ci retJson5 = re.replaceAll(retJson5,"len[0-9]*","len") 12358c339a94Sopenharmony_ci retJson5 = re.replaceAll(retJson5,"i[0-9]*","i") 12368c339a94Sopenharmony_ci retJson5 = re.replaceAll(retJson5,"tnv[0-9]*","tnv") 12378c339a94Sopenharmony_ci assert.strictEqual(retJson5, correctResult['Generate']['returnGenerate5']) 12388c339a94Sopenharmony_ci 12398c339a94Sopenharmony_ci returnGenerateParamTwo(correctResult); 12408c339a94Sopenharmony_ci 12418c339a94Sopenharmony_ci returnGenerateParamThree(correctResult); 12428c339a94Sopenharmony_ci} 12438c339a94Sopenharmony_ci 12448c339a94Sopenharmony_cifunction returnGenerateParamTwo(correctResult){ 12458c339a94Sopenharmony_ci let retJson6 = returnGenerateAndAssert("string[]") 12468c339a94Sopenharmony_ci retJson6 = re.replaceAll(retJson6," ","") 12478c339a94Sopenharmony_ci retJson6 = re.replaceAll(retJson6,"len[0-9]*","len") 12488c339a94Sopenharmony_ci retJson6 = re.replaceAll(retJson6,"i[0-9]*","i") 12498c339a94Sopenharmony_ci retJson6 = re.replaceAll(retJson6,"tnv[0-9]*","tnv") 12508c339a94Sopenharmony_ci assert.strictEqual(retJson6, correctResult['Generate']['returnGenerate6']) 12518c339a94Sopenharmony_ci 12528c339a94Sopenharmony_ci let retJson7 = returnGenerateAndAssert("boolean[]") 12538c339a94Sopenharmony_ci retJson7 = re.replaceAll(retJson7," ","") 12548c339a94Sopenharmony_ci retJson7 = re.replaceAll(retJson7,"len[0-9]*","len") 12558c339a94Sopenharmony_ci retJson7 = re.replaceAll(retJson7,"i[0-9]*","i") 12568c339a94Sopenharmony_ci retJson7 = re.replaceAll(retJson7,"tnv[0-9]*","tnv") 12578c339a94Sopenharmony_ci assert.strictEqual(retJson7, correctResult['Generate']['returnGenerate7']) 12588c339a94Sopenharmony_ci 12598c339a94Sopenharmony_ci let retJson8 = returnGenerateAndAssert("NUMBER_TYPE_1[]") 12608c339a94Sopenharmony_ci retJson8 = re.replaceAll(retJson8," ","") 12618c339a94Sopenharmony_ci retJson8 = re.replaceAll(retJson8,"len[0-9]*","len") 12628c339a94Sopenharmony_ci retJson8 = re.replaceAll(retJson8,"i[0-9]*","i") 12638c339a94Sopenharmony_ci retJson8 = re.replaceAll(retJson8,"tnv[0-9]*","tnv") 12648c339a94Sopenharmony_ci assert.strictEqual(retJson8, correctResult['Generate']['returnGenerate8']) 12658c339a94Sopenharmony_ci} 12668c339a94Sopenharmony_ci 12678c339a94Sopenharmony_cifunction returnGenerateParamThree(correctResult){ 12688c339a94Sopenharmony_ci let retJson9 = returnGenerateAndAssert("Map<string, string>") 12698c339a94Sopenharmony_ci retJson9 = re.replaceAll(retJson9," ","") 12708c339a94Sopenharmony_ci retJson9 = re.replaceAll(retJson9,"len[0-9]*","len") 12718c339a94Sopenharmony_ci retJson9 = re.replaceAll(retJson9,"i[0-9]*","i") 12728c339a94Sopenharmony_ci retJson9 = re.replaceAll(retJson9,"tnv[0-9]*","tnv") 12738c339a94Sopenharmony_ci assert.strictEqual(retJson9, correctResult['Generate']['returnGenerate9']) 12748c339a94Sopenharmony_ci 12758c339a94Sopenharmony_ci let retJson10 = returnGenerateAndAssert("{[key:string]: string}") 12768c339a94Sopenharmony_ci retJson10 = re.replaceAll(retJson10," ","") 12778c339a94Sopenharmony_ci retJson10 = re.replaceAll(retJson10,"len[0-9]*","len") 12788c339a94Sopenharmony_ci retJson10 = re.replaceAll(retJson10,"i[0-9]*","i") 12798c339a94Sopenharmony_ci retJson10 = re.replaceAll(retJson10,"tnv[0-9]*","tnv") 12808c339a94Sopenharmony_ci assert.strictEqual(retJson10, correctResult['Generate']['returnGenerate9']) 12818c339a94Sopenharmony_ci 12828c339a94Sopenharmony_ci let retJson11 = returnGenerateAndAssert("Map<string, NUMBER_TYPE_1>") 12838c339a94Sopenharmony_ci retJson11 = re.replaceAll(retJson11," ","") 12848c339a94Sopenharmony_ci retJson11 = re.replaceAll(retJson11,"len[0-9]*","len") 12858c339a94Sopenharmony_ci retJson11 = re.replaceAll(retJson11,"i[0-9]*","i") 12868c339a94Sopenharmony_ci retJson11 = re.replaceAll(retJson11,"tnv[0-9]*","tnv") 12878c339a94Sopenharmony_ci assert.strictEqual(retJson11, correctResult['Generate']['returnGenerate10']) 12888c339a94Sopenharmony_ci 12898c339a94Sopenharmony_ci let retJson12 = returnGenerateAndAssert("{[key:string]: NUMBER_TYPE_1}") 12908c339a94Sopenharmony_ci retJson12 = re.replaceAll(retJson12," ","") 12918c339a94Sopenharmony_ci retJson12 = re.replaceAll(retJson12,"len[0-9]*","len") 12928c339a94Sopenharmony_ci retJson12 = re.replaceAll(retJson12,"i[0-9]*","i") 12938c339a94Sopenharmony_ci retJson12 = re.replaceAll(retJson12,"tnv[0-9]*","tnv") 12948c339a94Sopenharmony_ci assert.strictEqual(retJson12, correctResult['Generate']['returnGenerate10']) 12958c339a94Sopenharmony_ci 12968c339a94Sopenharmony_ci let retJson13 = returnGenerateAndAssert("Map<string, boolean>") 12978c339a94Sopenharmony_ci retJson13 = re.replaceAll(retJson13," ","") 12988c339a94Sopenharmony_ci retJson13 = re.replaceAll(retJson13,"len[0-9]*","len") 12998c339a94Sopenharmony_ci retJson13 = re.replaceAll(retJson13,"i[0-9]*","i") 13008c339a94Sopenharmony_ci retJson13 = re.replaceAll(retJson13,"tnv[0-9]*","tnv") 13018c339a94Sopenharmony_ci assert.strictEqual(retJson13, correctResult['Generate']['returnGenerate11']) 13028c339a94Sopenharmony_ci 13038c339a94Sopenharmony_ci let retJson14 = returnGenerateAndAssert("{[key:string]: boolean}") 13048c339a94Sopenharmony_ci retJson14 = re.replaceAll(retJson14," ","") 13058c339a94Sopenharmony_ci retJson14 = re.replaceAll(retJson14,"len[0-9]*","len") 13068c339a94Sopenharmony_ci retJson14 = re.replaceAll(retJson14,"i[0-9]*","i") 13078c339a94Sopenharmony_ci retJson14 = re.replaceAll(retJson14,"tnv[0-9]*","tnv") 13088c339a94Sopenharmony_ci assert.strictEqual(retJson14, correctResult['Generate']['returnGenerate11']) 13098c339a94Sopenharmony_ci} 13108c339a94Sopenharmony_ci 13118c339a94Sopenharmony_cifunction returnGenerateAndAssert(dataType) { 13128c339a94Sopenharmony_ci param = { 13138c339a94Sopenharmony_ci optionalParamDestory:'', 13148c339a94Sopenharmony_ci valueCheckout:'', 13158c339a94Sopenharmony_ci valueDefine:'', 13168c339a94Sopenharmony_ci valueFill:'', 13178c339a94Sopenharmony_ci valueIn:'', 13188c339a94Sopenharmony_ci valueOut:'', 13198c339a94Sopenharmony_ci valuePackage:'' 13208c339a94Sopenharmony_ci } 13218c339a94Sopenharmony_ci data = { 13228c339a94Sopenharmony_ci class: [], 13238c339a94Sopenharmony_ci const: [], 13248c339a94Sopenharmony_ci enum: [], 13258c339a94Sopenharmony_ci exports: [], 13268c339a94Sopenharmony_ci function: [{name: 'fun1', type: 1, value: [], ret: dataType}], 13278c339a94Sopenharmony_ci interface: [], 13288c339a94Sopenharmony_ci namespace: [] 13298c339a94Sopenharmony_ci } 13308c339a94Sopenharmony_ci let returnInfo = { type: dataType, optional: false } 13318c339a94Sopenharmony_ci if (null != data) { 13328c339a94Sopenharmony_ci returnGenerate(returnInfo, param, data) 13338c339a94Sopenharmony_ci } else { 13348c339a94Sopenharmony_ci returnGenerate(returnInfo, param) 13358c339a94Sopenharmony_ci } 13368c339a94Sopenharmony_ci let result = JSON.stringify(param); 13378c339a94Sopenharmony_ci return result 13388c339a94Sopenharmony_ci} 13398c339a94Sopenharmony_ci 13408c339a94Sopenharmony_cifunction paramGenerateResult(correctResult) { 13418c339a94Sopenharmony_ci let retJson = JSON.stringify(paramGenerateAndAssert("string")) 13428c339a94Sopenharmony_ci retJson = re.replaceAll(retJson," ", "") 13438c339a94Sopenharmony_ci assert.strictEqual(retJson, correctResult['Generate']['ParamGenerate']) 13448c339a94Sopenharmony_ci 13458c339a94Sopenharmony_ci let retJson1 = JSON.stringify(paramGenerateAndAssert("NUMBER_TYPE_1")); 13468c339a94Sopenharmony_ci retJson1 = re.replaceAll(retJson1," ","") 13478c339a94Sopenharmony_ci let qiepian = retJson1.substring(retJson1.indexOf("NUMBER_TYPE_"),retJson1.indexOf("NUMBER_TYPE_")+13); 13488c339a94Sopenharmony_ci retJson1 = re.replaceAll(retJson1,qiepian,"NUMBER_TYPE_1") 13498c339a94Sopenharmony_ci assert.strictEqual(retJson1, correctResult['Generate']['ParamGenerate1']) 13508c339a94Sopenharmony_ci 13518c339a94Sopenharmony_ci let retJson2 = JSON.stringify(paramGenerateAndAssert("boolean")) 13528c339a94Sopenharmony_ci retJson2 = re.replaceAll(retJson2," ","") 13538c339a94Sopenharmony_ci assert.strictEqual(retJson2, correctResult['Generate']['ParamGenerate2']) 13548c339a94Sopenharmony_ci 13558c339a94Sopenharmony_ci let retJson3 = JSON.stringify(paramGenerateAndAssert("Array<string>")) 13568c339a94Sopenharmony_ci retJson3 = re.replaceAll(retJson3," ","") 13578c339a94Sopenharmony_ci retJson3 = re.replaceAll(retJson3,"i[0-9]+","i") 13588c339a94Sopenharmony_ci retJson3 = re.replaceAll(retJson3,"len[0-9]+","len") 13598c339a94Sopenharmony_ci retJson3 = re.replaceAll(retJson3,"tt[0-9]+","tt") 13608c339a94Sopenharmony_ci assert.strictEqual(retJson3, correctResult['Generate']['ParamGenerate3']) 13618c339a94Sopenharmony_ci 13628c339a94Sopenharmony_ci let retJson4 = JSON.stringify(paramGenerateAndAssert("Array<boolean>")) 13638c339a94Sopenharmony_ci retJson4 = re.replaceAll(retJson4," ","") 13648c339a94Sopenharmony_ci retJson4 = re.replaceAll(retJson4,"i[0-9]+","i") 13658c339a94Sopenharmony_ci retJson4 = re.replaceAll(retJson4,"len[0-9]+","len") 13668c339a94Sopenharmony_ci retJson4 = re.replaceAll(retJson4,"tt[0-9]+","tt") 13678c339a94Sopenharmony_ci assert.strictEqual(retJson4, correctResult['Generate']['ParamGenerate4']) 13688c339a94Sopenharmony_ci 13698c339a94Sopenharmony_ci paramGenerateResultTwo(correctResult) 13708c339a94Sopenharmony_ci 13718c339a94Sopenharmony_ci paramGenerateResultThree(correctResult) 13728c339a94Sopenharmony_ci} 13738c339a94Sopenharmony_ci 13748c339a94Sopenharmony_cifunction paramGenerateResultTwo(correctResult){ 13758c339a94Sopenharmony_ci let retJson5 = JSON.stringify(paramGenerateAndAssert("Array<number>")); 13768c339a94Sopenharmony_ci retJson5 = re.replaceAll(retJson5," ","") 13778c339a94Sopenharmony_ci retJson5 = re.replaceAll(retJson5,"i[0-9]+","i") 13788c339a94Sopenharmony_ci retJson5 = re.replaceAll(retJson5,"len[0-9]+","len") 13798c339a94Sopenharmony_ci retJson5 = re.replaceAll(retJson5,"tt[0-9]+","tt") 13808c339a94Sopenharmony_ci assert.strictEqual(retJson5, correctResult['Generate']['ParamGenerate5']) 13818c339a94Sopenharmony_ci 13828c339a94Sopenharmony_ci let retJson6 = JSON.stringify(paramGenerateAndAssert("string[]")) 13838c339a94Sopenharmony_ci retJson6 = re.replaceAll(retJson6," ","") 13848c339a94Sopenharmony_ci retJson6 = re.replaceAll(retJson6,"i[0-9]+","i") 13858c339a94Sopenharmony_ci retJson6 = re.replaceAll(retJson6,"len[0-9]+","len") 13868c339a94Sopenharmony_ci retJson6 = re.replaceAll(retJson6,"tt[0-9]+","tt") 13878c339a94Sopenharmony_ci assert.strictEqual(retJson6, correctResult['Generate']['ParamGenerate6']) 13888c339a94Sopenharmony_ci 13898c339a94Sopenharmony_ci let retJson7 = JSON.stringify(paramGenerateAndAssert("boolean[]")); 13908c339a94Sopenharmony_ci retJson7 = re.replaceAll(retJson7," ","") 13918c339a94Sopenharmony_ci retJson7 = re.replaceAll(retJson7,"i[0-9]+","i") 13928c339a94Sopenharmony_ci retJson7 = re.replaceAll(retJson7,"len[0-9]+","len") 13938c339a94Sopenharmony_ci retJson7 = re.replaceAll(retJson7,"tt[0-9]+","tt") 13948c339a94Sopenharmony_ci assert.strictEqual(retJson7, correctResult['Generate']['ParamGenerate7']) 13958c339a94Sopenharmony_ci 13968c339a94Sopenharmony_ci let retJson8 = JSON.stringify(paramGenerateAndAssert("number[]")) 13978c339a94Sopenharmony_ci retJson8 = re.replaceAll(retJson8," ","") 13988c339a94Sopenharmony_ci retJson8 = re.replaceAll(retJson8,"i[0-9]+","i") 13998c339a94Sopenharmony_ci retJson8 = re.replaceAll(retJson8,"len[0-9]+","len") 14008c339a94Sopenharmony_ci retJson8 = re.replaceAll(retJson8,"tt[0-9]+","tt") 14018c339a94Sopenharmony_ci assert.strictEqual(retJson8, correctResult['Generate']['ParamGenerate8']) 14028c339a94Sopenharmony_ci} 14038c339a94Sopenharmony_ci 14048c339a94Sopenharmony_cifunction paramGenerateResultThree(correctResult){ 14058c339a94Sopenharmony_ci let retJson9 = paramGenerateAndAssert("Map<string, string>") 14068c339a94Sopenharmony_ci retJson9 = re.replaceAll(retJson9," ","") 14078c339a94Sopenharmony_ci retJson9 = re.replaceAll(retJson9,"len[0-9]*","len") 14088c339a94Sopenharmony_ci retJson9 = re.replaceAll(retJson9,"i[0-9]*","i") 14098c339a94Sopenharmony_ci retJson9 = re.replaceAll(retJson9,"tt[0-9]+","tt") 14108c339a94Sopenharmony_ci assert.strictEqual(retJson9, correctResult['Generate']['ParamGenerate9']) 14118c339a94Sopenharmony_ci 14128c339a94Sopenharmony_ci let retJson10 = paramGenerateAndAssert("{[key:string]: string}") 14138c339a94Sopenharmony_ci retJson10 = re.replaceAll(retJson10," ","") 14148c339a94Sopenharmony_ci retJson10 = re.replaceAll(retJson10,"len[0-9]*","len") 14158c339a94Sopenharmony_ci retJson10 = re.replaceAll(retJson10,"i[0-9]*","i") 14168c339a94Sopenharmony_ci retJson10 = re.replaceAll(retJson10,"tt[0-9]+","tt") 14178c339a94Sopenharmony_ci assert.strictEqual(retJson10, correctResult['Generate']['ParamGenerate9']) 14188c339a94Sopenharmony_ci 14198c339a94Sopenharmony_ci let retJson11 = paramGenerateAndAssert("Map<string, NUMBER_TYPE_1>") 14208c339a94Sopenharmony_ci retJson11 = re.replaceAll(retJson11," ","") 14218c339a94Sopenharmony_ci retJson11 = re.replaceAll(retJson11,"len[0-9]*","len") 14228c339a94Sopenharmony_ci retJson11 = re.replaceAll(retJson11,"i[0-9]*","i") 14238c339a94Sopenharmony_ci retJson11 = re.replaceAll(retJson11,"tt[0-9]+","tt") 14248c339a94Sopenharmony_ci assert.strictEqual(retJson11, correctResult['Generate']['ParamGenerate10']) 14258c339a94Sopenharmony_ci 14268c339a94Sopenharmony_ci let retJson12 = paramGenerateAndAssert("{[key:string]: NUMBER_TYPE_1}") 14278c339a94Sopenharmony_ci retJson12 = re.replaceAll(retJson12," ","") 14288c339a94Sopenharmony_ci retJson12 = re.replaceAll(retJson12,"len[0-9]*","len") 14298c339a94Sopenharmony_ci retJson12 = re.replaceAll(retJson12,"i[0-9]*","i") 14308c339a94Sopenharmony_ci retJson12 = re.replaceAll(retJson12,"tt[0-9]+","tt") 14318c339a94Sopenharmony_ci assert.strictEqual(retJson12, correctResult['Generate']['ParamGenerate10']) 14328c339a94Sopenharmony_ci 14338c339a94Sopenharmony_ci let retJson13 = paramGenerateAndAssert("Map<string, boolean>") 14348c339a94Sopenharmony_ci retJson13 = re.replaceAll(retJson13," ","") 14358c339a94Sopenharmony_ci retJson13 = re.replaceAll(retJson13,"len[0-9]*","len") 14368c339a94Sopenharmony_ci retJson13 = re.replaceAll(retJson13,"i[0-9]*","i") 14378c339a94Sopenharmony_ci retJson13 = re.replaceAll(retJson13,"tt[0-9]+","tt") 14388c339a94Sopenharmony_ci assert.strictEqual(retJson13, correctResult['Generate']['ParamGenerate11']) 14398c339a94Sopenharmony_ci 14408c339a94Sopenharmony_ci let retJson14 = paramGenerateAndAssert("{[key:string]: boolean}") 14418c339a94Sopenharmony_ci retJson14 = re.replaceAll(retJson14," ","") 14428c339a94Sopenharmony_ci retJson14 = re.replaceAll(retJson14,"len[0-9]*","len") 14438c339a94Sopenharmony_ci retJson14 = re.replaceAll(retJson14,"i[0-9]*","i") 14448c339a94Sopenharmony_ci retJson14 = re.replaceAll(retJson14,"tt[0-9]+","tt") 14458c339a94Sopenharmony_ci assert.strictEqual(retJson14, correctResult['Generate']['ParamGenerate11']) 14468c339a94Sopenharmony_ci} 14478c339a94Sopenharmony_ci 14488c339a94Sopenharmony_cifunction paramGenerateAndAssert(dataType) { 14498c339a94Sopenharmony_ci param = { 14508c339a94Sopenharmony_ci optionalParamDestory:'', 14518c339a94Sopenharmony_ci valueCheckout:'', 14528c339a94Sopenharmony_ci valueDefine:'', 14538c339a94Sopenharmony_ci valueFill:'', 14548c339a94Sopenharmony_ci valueIn:'', 14558c339a94Sopenharmony_ci valueOut:'', 14568c339a94Sopenharmony_ci valuePackage:'' 14578c339a94Sopenharmony_ci } 14588c339a94Sopenharmony_ci data = { 14598c339a94Sopenharmony_ci class: [], 14608c339a94Sopenharmony_ci const: [], 14618c339a94Sopenharmony_ci enum: [], 14628c339a94Sopenharmony_ci exports: [], 14638c339a94Sopenharmony_ci function: [ 14648c339a94Sopenharmony_ci {name: 'fun1', 14658c339a94Sopenharmony_ci type: 1, 14668c339a94Sopenharmony_ci value: [{name: 'v', type: dataType, optional: false}], 14678c339a94Sopenharmony_ci ret: 'void'}], 14688c339a94Sopenharmony_ci interface: [], 14698c339a94Sopenharmony_ci namespace: [] 14708c339a94Sopenharmony_ci } 14718c339a94Sopenharmony_ci let funcValue = { name: "v", type: dataType, optional: false, realType: dataType } 14728c339a94Sopenharmony_ci if (null != data) { 14738c339a94Sopenharmony_ci paramGenerate(0, funcValue, param, data) 14748c339a94Sopenharmony_ci } else { 14758c339a94Sopenharmony_ci paramGenerate(0, funcValue, param) 14768c339a94Sopenharmony_ci } 14778c339a94Sopenharmony_ci let result = JSON.stringify(param); 14788c339a94Sopenharmony_ci return result 14798c339a94Sopenharmony_ci}