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}