diff --git a/src/vscode_plugin/src/gen/gendts.ts b/src/vscode_plugin/src/gen/gendts.ts index eec7c9e315c8cd385bc00fcf78f433e3eb28b807..de903222e9369c49991b40de4fc48cc6f9e9e1e0 100644 --- a/src/vscode_plugin/src/gen/gendts.ts +++ b/src/vscode_plugin/src/gen/gendts.ts @@ -466,6 +466,14 @@ export function getDtsFunction(rootInfo: GenInfo) { } }); out += funcHead + enumBody.slice(0, -2) + funcTail; + // 生成异步方法(callback)的dts + funcHead = `export function ${funcItem.name}Async(` + funcTail = returnType === 'void'? 'cbf: () => void): void;\n\n' : `cbf: (param: ${returnType}) => void): void;\n\n` + out += funcHead + enumBody + funcTail; + // 生成异步方法(promise)的dts + funcHead = `export function ${funcItem.name}Promise(` + funcTail = `): Promise<${returnType}>;\n\n`; + out += funcHead + enumBody.slice(0, -2) + funcTail; } } catch (e) { let errmsg = 'generate dts file error: ' + JSON.stringify(e); @@ -499,13 +507,18 @@ export function getDtsClasses(rootInfo: GenInfo) { methodContent += `${param.name}: ${transTskey2Ckey(param.type)}, `; } classBody += `\t${method.name}(${methodContent.slice(0, -2)}): ${transTskey2Ckey(method.returns)};\n` + // callback方法 + let callbackContent = method.returns === 'void'? 'cbf: () => void' : `cbf: (param: ${transTskey2Ckey(method.returns)}) => void` + classBody += `\t${method.name}Async(${methodContent}${callbackContent}): void;\n` + // promise方法 + classBody += `\t${method.name}Promsie(${methodContent.slice(0, -2)}): Promise<${transTskey2Ckey(method.returns)}>;\n` }; } } catch (e) { let errmsg = 'generate dts file error: ' + JSON.stringify(e); Logger.getInstance().error(errmsg); } - out += classHead + classBody + '};\n\n' + out += classHead + classBody + '}\n\n' if (classItem.name && classItem.alias) { out += `export type ${classItem.alias} = ${classItem.name};\n\n` } @@ -539,6 +552,11 @@ export function getDtsStructs(rootInfo: GenInfo) { } } structBody += `\t${method.name}(${methodContent.slice(0, -2)}): ${transTskey2Ckey(method.returns)};\n` + // callback方法 + let callbackContent = method.returns === 'void'? 'cbf: () => void' : `cbf: (param: ${transTskey2Ckey(method.returns)}) => void` + structBody += `\t${method.name}Async(${methodContent}${callbackContent}): void;\n` + // promise方法 + structBody += `\t${method.name}Promise(${methodContent.slice(0, -2)}): Promise<${transTskey2Ckey(method.returns)}>;\n`; }; } } catch (e) { diff --git a/src/vscode_plugin/src/gen/tools/genproxycppfile.ts b/src/vscode_plugin/src/gen/tools/genproxycppfile.ts index 377acb931e6317564458f462c782c10bc751f688..54a92c81a04133e35d351b643508842837e17eb3 100644 --- a/src/vscode_plugin/src/gen/tools/genproxycppfile.ts +++ b/src/vscode_plugin/src/gen/tools/genproxycppfile.ts @@ -45,6 +45,7 @@ export function genProxyFunc(funcInfo: FuncObj, className: string, paramStr: str 'name': 'result', 'type': funcInfo.returns, 'arraySize': -1, + 'arraySizeList': [] }; readReplyStr += '\n' + tab + genRead('reply', destObj); readReplyStr += '\n' + tab + 'return result;'; diff --git a/src/vscode_plugin/src/gen/tools/genstubcppfile.ts b/src/vscode_plugin/src/gen/tools/genstubcppfile.ts index b44f7623300d784ca49813fd5195ff07cb20a48c..a92489760c9e76319b10a75e93392eb76e0411ef 100644 --- a/src/vscode_plugin/src/gen/tools/genstubcppfile.ts +++ b/src/vscode_plugin/src/gen/tools/genstubcppfile.ts @@ -44,7 +44,8 @@ function genStubInnerFunc(funcInfo: FuncObj, className: string) { let destObj = { 'name': param.name + 'Val', 'type': param.type, - 'arraySize': -1 + 'arraySize': -1, + 'arraySizeList': [] }; readDataStr += '\n' + tab + genRead('data', destObj); innerParamStr += innerParamName; diff --git a/src/vscode_plugin/src/test/suite/gen/gendtsclasses.test.ts b/src/vscode_plugin/src/test/suite/gen/gendtsclasses.test.ts index 42f55849ff4664fbc8d5406cc3b2d4d17681d4df..c3c3d9c0a8003729f13770fcd243b3a8454f5790 100644 --- a/src/vscode_plugin/src/test/suite/gen/gendtsclasses.test.ts +++ b/src/vscode_plugin/src/test/suite/gen/gendtsclasses.test.ts @@ -68,7 +68,13 @@ suite('Gendts_classes_Suite', () => { fileName: 'test', }; let resStr = genDts.getDtsClasses(rootInfo1); - assert.strictEqual(resStr, 'export class ClassObj {\n\tval: number;\n\tclassFunc(v1: number): number;\n};\n\n'); + assert.strictEqual(resStr, 'export class ClassObj {\n' + + '\tval: number;\n' + + '\tclassFunc(v1: number): number;\n' + + '\tclassFuncAsync(v1: number, cbf: (param: number) => void): void;\n' + + '\tclassFuncPromise(v1: number): Promise;\n' + + '}\n' + + '\n'); //用例2.classes中alias不为空,且alias不等于name,其他正常 let classes2: ClassObj[] = [ @@ -113,8 +119,15 @@ suite('Gendts_classes_Suite', () => { fileName: 'test', }; resStr = genDts.getDtsClasses(rootInfo2); - assert.strictEqual(resStr, 'export class ClassObj {\n\tval: number;\n\tclassFunc(v1: number): number;\n};\n\n' - + 'export type Alias = ClassObj;\n\n'); + assert.strictEqual(resStr, 'export class ClassObj {\n' + + '\tval: number;\n' + + '\tclassFunc(v1: number): number;\n' + + '\tclassFuncAsync(v1: number, cbf: (param: number) => void): void;\n' + + '\tclassFuncPromise(v1: number): Promise;\n' + + '}\n' + + '\n' + + 'export type Alias = ClassObj;\n' + + '\n'); //用例3.classes中alias不为空,且alias等于name,其他正常 let Classes3:ClassObj[] = [ @@ -159,8 +172,15 @@ suite('Gendts_classes_Suite', () => { fileName: 'test', }; resStr = genDts.getDtsClasses(rootInfo3); - assert.strictEqual(resStr, 'export class ClassObj {\n\tval: number;\n\tclassFunc(v1: number): number;\n};\n\n' - + 'export type ClassObj = ClassObj;\n\n'); + assert.strictEqual(resStr, 'export class ClassObj {\n' + + '\tval: number;\n' + + '\tclassFunc(v1: number): number;\n' + + '\tclassFuncAsync(v1: number, cbf: (param: number) => void): void;\n' + + '\tclassFuncPromise(v1: number): Promise;\n' + + '}\n' + + '\n' + + 'export type ClassObj = ClassObj;\n' + + '\n'); //用例4. 混合多个类和复杂参数 let classes4: ClassObj[] = [ @@ -216,11 +236,18 @@ suite('Gendts_classes_Suite', () => { '\tspeed: number;\n' + '\tisRunning: boolean;\n' + '\tstart(keyType: number, authCode: string, true: boolean): void;\n' + - '};\n\n' + - 'export type Car = Vehicle;\n\n' + + '\tstartAsync(keyType: number, authCode: string, true: boolean, cbf: () => void): void;\n' + + '\tstartPromise(keyType: number, authCode: string, true: boolean): Promise;\n' + + '}\n' + + '\n' + + 'export type Car = Vehicle;\n' + + '\n' + 'export class Engine {\n' + '\tgetRPM(): number;\n' + - '};\n\n'; + '\tgetRPMAsync(cbf: (param: number) => void): void;\n' + + '\tgetRPMPromise(): Promise;\n' + + '}\n' + + '\n'; assert.strictEqual(resStr, expected); //用例5. 测试多参数方法的情况 @@ -256,8 +283,14 @@ suite('Gendts_classes_Suite', () => { resStr = genDts.getDtsClasses(rootInfo5); assert.strictEqual( resStr, - 'export class MultiParamClass {\n\tcalculate(x: number, y: number): number;\n};\n\n' + - 'export type MPCType = MultiParamClass;\n\n' + 'export class MultiParamClass {\n' + + '\tcalculate(x: number, y: number): number;\n' + + '\tcalculateAsync(x: number, y: number, cbf: (param: number) => void): void;\n' + + '\tcalculatePromise(x: number, y: number): Promise;\n' + + '}\n' + + '\n' + + 'export type MPCType = MultiParamClass;\n' + + '\n' ); //用例6. 测试混合多个类的情况 @@ -301,9 +334,14 @@ suite('Gendts_classes_Suite', () => { resStr = genDts.getDtsClasses(rootInfo6); assert.strictEqual( resStr, - 'export class ClassA {\n\tflag: boolean;\n};\n\n' + + 'export class ClassA {\n\tflag: boolean;\n}\n\n' + 'export type AliasA = ClassA;\n\n' + - 'export class ClassB {\n\tgetName(): string;\n};\n\n' + 'export class ClassB {\n' + + '\tgetName(): string;\n' + + '\tgetNameAsync(cbf: (param: string) => void): void;\n' + + '\tgetNamePromise(): Promise;\n' + + '}\n' + + '\n' ); //用例7. 测试特殊类型转换(如布尔型) @@ -346,8 +384,15 @@ suite('Gendts_classes_Suite', () => { resStr = genDts.getDtsClasses(rootInfo7); assert.strictEqual( resStr, - 'export class SpecialTypes {\n\tisValid: boolean;\n\tgetChar(input: number): string;\n};\n\n' + - 'export type SType = SpecialTypes;\n\n' + 'export class SpecialTypes {\n' + + '\tisValid: boolean;\n' + + '\tgetChar(input: number): string;\n' + + '\tgetCharAsync(input: number, cbf: (param: string) => void): void;\n' + + '\tgetCharPromise(input: number): Promise;\n' + + '}\n' + + '\n' + + 'export type SType = SpecialTypes;\n' + + '\n' ); //用例8. 包含数组类型和复杂类型转换 @@ -386,12 +431,16 @@ suite('Gendts_classes_Suite', () => { resStr = genDts.getDtsClasses(rootInfo8); assert.strictEqual( resStr, - 'export class DataContainer {\n' + - '\tscores: Array;\n' + - '\tbuffer: string;\n' + - '\tgetData(length: number, compress: boolean): void;\n' + - '};\n\n' + - 'export type DC = DataContainer;\n\n' + 'export class DataContainer {\n' + + '\tscores: Array;\n' + + '\tbuffer: string;\n' + + '\tgetData(length: number, compress: boolean): void;\n' + + '\tgetDataAsync(length: number, compress: boolean, cbf: (param: void) => void): void;\n' + + '\tgetDataPromise(length: number, compress: boolean): Promise;\n' + + '}\n' + + '\n' + + 'export type DC = DataContainer;\n' + + '\n' ); //用例9. 测试C++特殊类型转换 @@ -433,7 +482,10 @@ suite('Gendts_classes_Suite', () => { '\tcount: number;\n' + '\tbigNum: number;\n' + '\tgetSize(buffer: number): number;\n' + - '};\n\n' + '\tgetSizeAsync(buffer: number, cbf: (param: number) => void): void;\n' + + '\tgetSizePromise(buffer: number): Promise;\n' + + '}\n' + + '\n' ); //用例10. 测试静态成员和方法 @@ -471,7 +523,10 @@ suite('Gendts_classes_Suite', () => { 'export class Utils {\n' + '\tVERSION: string;\n' + '\tstaticMethod(): void;\n' + - '};\n\n' + '\tstaticMethodAsync(cbf: () => void): void;\n' + + '\tstaticMethodPromise(): Promise;\n' + + '}\n' + + '\n' ); //用例11. 测试模板类处理 @@ -512,10 +567,14 @@ suite('Gendts_classes_Suite', () => { assert.strictEqual( genDts.getDtsClasses(rootInfo11), 'export class Vector {\n' + - '\tdata: any;\n' + // 假设泛型暂未处理,返回any类型 + '\tdata: any;\n' + '\tpush(item: any): void;\n' + - '};\n\n' + - 'export type Vec = Vector;\n\n' + '\tpushAsync(item: any, cbf: () => void): void;\n' + + '\tpushPromise(item: any): Promise;\n' + + '}\n' + + '\n' + + 'export type Vec = Vector;\n' + + '\n' ); //用例12. 测试const成员变量 @@ -547,7 +606,7 @@ suite('Gendts_classes_Suite', () => { genDts.getDtsClasses(rootInfo12), 'export class Constants {\n' + '\tMAX_SIZE: number;\n' + - '};\n\n' + '}\n\n' ); //用例13. 测试嵌套类 @@ -579,7 +638,7 @@ suite('Gendts_classes_Suite', () => { genDts.getDtsClasses(rootInfo13), 'export class Outer::Inner {\n' + '\tvalue: number;\n' + - '};\n\n' + + '}\n\n' + 'export type Nested = Outer::Inner;\n\n' ); }); @@ -633,7 +692,12 @@ suite('Gendts_classes_Suite', () => { fileName: 'test', }; let resStr2 = genDts.getDtsClasses(rootInfo2); - assert.strictEqual(resStr2, 'export class ClassObj {\n\tclassFunc(v1: number): number;\n};\n\n'); + assert.strictEqual(resStr2, 'export class ClassObj {\n' + + '\tclassFunc(v1: number): number;\n' + + '\tclassFuncAsync(v1: number, cbf: (param: number) => void): void;\n' + + '\tclassFuncPromise(v1: number): Promise;\n' + + '}\n' + + '\n'); //用例3.class有成员,成员变量不为空,成员方法为空 let rootInfo3 = { @@ -659,7 +723,7 @@ suite('Gendts_classes_Suite', () => { fileName: 'test', }; let resStr3 = genDts.getDtsClasses(rootInfo3); - assert.strictEqual(resStr3, 'export class ClassObj {\n\tval: number;\n};\n\n'); + assert.strictEqual(resStr3, 'export class ClassObj {\n\tval: number;\n}\n\n'); //用例4. 特殊命名测试 let rootInfo4 = { @@ -687,13 +751,16 @@ suite('Gendts_classes_Suite', () => { fileName: 'test', }; let res4 = genDts.getDtsClasses(rootInfo4); - assert.strictEqual( - res4, - 'export class Class$With$SpecialChars {\n' + - '\tdata-url: string;\n' + - '\tdelete(): void;\n' + - '};\n\n' + - 'export type Alias_With_Underscore = Class$With$SpecialChars;\n\n' + assert.strictEqual(res4, + 'export class Class$With$SpecialChars {\n' + + '\tdata-url: string;\n' + + '\tdelete(): void;\n' + + '\tdeleteAsync(cbf: () => void): void;\n' + + '\tdeletePromise(): Promise;\n' + + '}\n' + + '\n' + + 'export type Alias_With_Underscore = Class$With$SpecialChars;\n' + + '\n' ); //用例5. 空参数列表测试 @@ -718,7 +785,12 @@ suite('Gendts_classes_Suite', () => { fileName: 'test', }; let res5 = genDts.getDtsClasses(rootInfo5); - assert.strictEqual(res5, 'export class EmptyParams {\n\tnoop(): void;\n};\n\n'); + assert.strictEqual(res5, 'export class EmptyParams {\n' + + '\tnoop(): void;\n' + + '\tnoopAsync(cbf: () => void): void;\n' + + '\tnoopPromise(): Promise;\n' + + '}\n' + + '\n'); //用例6. 参数缺少必要字段,缺少alias属性的情况 let rootInfo6: GenInfo = { @@ -743,7 +815,7 @@ suite('Gendts_classes_Suite', () => { fileName: 'test', }; resStr = genDts.getDtsClasses(rootInfo6); - assert.strictEqual(resStr, 'export class InvalidClass {\n\tinvalidVar: string;\n};\n\n'); + assert.strictEqual(resStr, 'export class InvalidClass {\n\tinvalidVar: string;\n}\n\n'); //用例7. 测试空变量和空方法的类结构 let classes7: ClassObj[] = [ @@ -770,7 +842,7 @@ suite('Gendts_classes_Suite', () => { let resStr7 = genDts.getDtsClasses(rootInfo7); assert.strictEqual( resStr7, - 'export class EmptyClass {\n};\n\n' + + 'export class EmptyClass {\n}\n\n' + 'export type EmptyAlias = EmptyClass;\n\n' ); @@ -799,11 +871,8 @@ suite('Gendts_classes_Suite', () => { }; let resStr8 = genDts.getDtsClasses(rootInfo8); - assert.match( - resStr8, - new RegExp(`export class ${longName} {\\n\\tvalue: number;\\n};\\n\\n` - + `export type ${longName}_Alias = ${longName};`) - ); + assert.strictEqual(resStr8, `export class ${longName} {\n\tvalue: number;\n}\n\n` + + `export type ${longName}_Alias = ${longName};\n\n`); }); //3, 测试异常情况 diff --git a/src/vscode_plugin/src/test/suite/gen/gendtsfunction.test.ts b/src/vscode_plugin/src/test/suite/gen/gendtsfunction.test.ts index a0a9f21f637501b8b4485a61a43ea9b54c4c79b2..54b2c51029a6207c62f760d1420bd74d0f207bd4 100644 --- a/src/vscode_plugin/src/test/suite/gen/gendtsfunction.test.ts +++ b/src/vscode_plugin/src/test/suite/gen/gendtsfunction.test.ts @@ -56,7 +56,12 @@ suite('Gendts_funcs_Suite', () => { fileName: 'test', } let resStr = genDts.getDtsFunction(rootInfo); - assert.strictEqual(resStr, 'export function testFunc(v1: boolean): number;\n\n'); + assert.strictEqual(resStr, 'export function testFunc(v1: boolean): number;\n' + + '\n' + + 'export function testFuncAsync(v1: boolean, cbf: (param: number) => void): void;\n' + + '\n' + + 'export function testFuncPromise(v1: boolean): Promise;\n' + + '\n'); //用例2: 普通函数 let funcList2: FuncObj[] = [{ @@ -81,7 +86,12 @@ suite('Gendts_funcs_Suite', () => { fileName: 'test' } resStr = genDts.getDtsFunction(rootInfo2); - assert.strictEqual(resStr, 'export function calculate(x: number, y: number): number;\n\n'); + assert.strictEqual(resStr, 'export function calculate(x: number, y: number): number;\n' + + '\n' + + 'export function calculateAsync(x: number, y: number, cbf: (param: number) => void): void;\n' + + '\n' + + 'export function calculatePromise(x: number, y: number): Promise;\n' + + '\n'); //用例3: typedef接口 let funcList3: FuncObj[] = [{ @@ -131,7 +141,12 @@ suite('Gendts_funcs_Suite', () => { fileName: 'test' } resStr = genDts.getDtsFunction(rootInfo4); - assert.strictEqual(resStr, 'export function concat(str1: string, codes: Array, flag: boolean): string;\n\n'); + assert.strictEqual(resStr, 'export function concat(str1: string, codes: Array, flag: boolean): string;\n' + + '\n' + + 'export function concatAsync(str1: string, codes: Array, flag: boolean, cbf: (param: string) => void): void;\n' + + '\n' + + 'export function concatPromise(str1: string, codes: Array, flag: boolean): Promise;\n' + + '\n'); //用例5: 保留字函数名 let funcList5: FuncObj[] = [{ @@ -154,7 +169,12 @@ suite('Gendts_funcs_Suite', () => { fileName: 'test' } resStr = genDts.getDtsFunction(rootInfo5); - assert.strictEqual(resStr, 'export function delete(id: number): void;\n\n'); + assert.strictEqual(resStr, 'export function delete(id: number): void;\n' + + '\n' + + 'export function deleteAsync(id: number, cbf: () => void): void;\n' + + '\n' + + 'export function deletePromise(id: number): Promise;\n' + + '\n'); //用例6 混合类型声明 let funcList6: FuncObj[] = [ @@ -195,7 +215,9 @@ suite('Gendts_funcs_Suite', () => { 'export interface Callback {\n' + '\t(code: number, message: string): void;\n' + '};\n\n' + - 'export function validate(cb: any, data: Array): boolean;\n\n'; + 'export function validate(cb: any, data: Array): boolean;\n\n' + + 'export function validateAsync(cb: any, data: Array, cbf: (param: boolean) => void): void;\n\n' + + 'export function validatePromise(cb: any, data: Array): Promise;\n\n'; assert.strictEqual(resStr, expected); //用例7: 保留字函数名 @@ -219,7 +241,12 @@ suite('Gendts_funcs_Suite', () => { fileName: 'test', }; resStr = genDts.getDtsFunction(rootInfo7); - assert.strictEqual(resStr, 'export function delete(id: number): void;\n\n'); + assert.strictEqual(resStr, 'export function delete(id: number): void;\n' + + '\n' + + 'export function deleteAsync(id: number, cbf: () => void): void;\n' + + '\n' + + 'export function deletePromise(id: number): Promise;\n' + + '\n'); }); //2, 测试边界情况 @@ -260,7 +287,12 @@ suite('Gendts_funcs_Suite', () => { fileName: 'test', } resStr = genDts.getDtsFunction(rootInfo2); - assert.strictEqual(resStr, 'export function testFunc(): number;\n\n'); + assert.strictEqual(resStr, 'export function testFunc(): number;\n' + + '\n' + + 'export function testFuncAsync(cbf: (param: number) => void): void;\n' + + '\n' + + 'export function testFuncPromise(): Promise;\n' + + '\n'); //用例3 特殊字符参数名测试 let funcList3 = [ @@ -288,7 +320,12 @@ suite('Gendts_funcs_Suite', () => { resStr = genDts.getDtsFunction(rootInfo3); assert.strictEqual( resStr, - 'export function specialChars(data-id: number, class: string): void;\n\n' + 'export function specialChars(data-id: number, class: string): void;\n' + + '\n' + + 'export function specialCharsAsync(data-id: number, class: string, cbf: () => void): void;\n' + + '\n' + + 'export function specialCharsPromise(data-id: number, class: string): Promise;\n' + + '\n' ); //用例4 最大参数数量 @@ -338,7 +375,12 @@ suite('Gendts_funcs_Suite', () => { fileName: 'test', } resStr = genDts.getDtsFunction(rootInfo5); - assert.strictEqual(resStr, 'export function invalid(): void;\n\n'); + assert.strictEqual(resStr, 'export function invalid(): void;\n' + + '\n' + + 'export function invalidAsync(cbf: () => void): void;\n' + + '\n' + + 'export function invalidPromise(): Promise;\n' + + '\n'); //用例6: 带特殊符号的参数名 let funcList6 = [ @@ -364,7 +406,12 @@ suite('Gendts_funcs_Suite', () => { fileName: 'test', } resStr = genDts.getDtsFunction(rootInfo6); - assert.strictEqual(resStr, 'export function special(data-url: string, class: number): void;\n\n'); + assert.strictEqual(resStr, 'export function special(data-url: string, class: number): void;\n' + + '\n' + + 'export function specialAsync(data-url: string, class: number, cbf: () => void): void;\n' + + '\n' + + 'export function specialPromise(data-url: string, class: number): Promise;\n' + + '\n'); }); //3, 测试异常情况 @@ -485,7 +532,12 @@ suite('Gendts_funcs_Suite', () => { fileName: 'test', } let reStr = genDts.getDtsFunction(rootInfo4); - assert.strictEqual(reStr, 'export function testFunc(param: any): any;\n\n'); + assert.strictEqual(reStr, 'export function testFunc(param: any): any;\n' + + '\n' + + 'export function testFuncAsync(param: any, cbf: (param: any) => void): void;\n' + + '\n' + + 'export function testFuncPromise(param: any): Promise;\n' + + '\n'); assert.match(reStr, /param: any/); }); diff --git a/src/vscode_plugin/src/test/suite/gen/gendtsstructs.test.ts b/src/vscode_plugin/src/test/suite/gen/gendtsstructs.test.ts index b4df10e430ec9ee2ca734097cafcb4e3326a5858..bc1bf4f66d9cf33dacbc2cab84b0a7ed24fb7240 100644 --- a/src/vscode_plugin/src/test/suite/gen/gendtsstructs.test.ts +++ b/src/vscode_plugin/src/test/suite/gen/gendtsstructs.test.ts @@ -75,8 +75,14 @@ suite('Gendts_structs_Suite', () => { }; let resStr = genDts.getDtsStructs(rootInfo); - assert.strictEqual(resStr, 'export type StructObj = {\n\tname: string;' - + '\n\tage: number;\n\tfuncTest(v: number): boolean;\n};\n\n'); + assert.strictEqual(resStr, 'export type StructObj = {\n' + + '\tname: string;\n' + + '\tage: number;\n' + + '\tfuncTest(v: number): boolean;\n' + + '\tfuncTestAsync(v: number, cbf: (param: boolean) => void): void;\n' + + '\tfuncTestPromise(v: number): Promise;\n' + + '};\n' + + '\n'); //用例2.正常情况,有alias,且alias不等于name let structs2: StructObj[] = [ @@ -128,9 +134,16 @@ suite('Gendts_structs_Suite', () => { }; resStr = genDts.getDtsStructs(rootInfo2); - assert.strictEqual(resStr, 'export type StructObj = {\n\tname: string;' - + '\n\tage: number;\n\tfuncTest(v: number): boolean;\n};\n\n' - + 'export type Alias = StructObj;\n\n'); + assert.strictEqual(resStr, 'export type StructObj = {\n' + + '\tname: string;\n' + + '\tage: number;\n' + + '\tfuncTest(v: number): boolean;\n' + + '\tfuncTestAsync(v: number, cbf: (param: boolean) => void): void;\n' + + '\tfuncTestPromise(v: number): Promise;\n' + + '};\n' + + '\n' + + 'export type Alias = StructObj;\n' + + '\n'); //用例3.正常情况,有alias,且alias等于name let structs3: StructObj[] = [ @@ -182,8 +195,14 @@ suite('Gendts_structs_Suite', () => { }; resStr = genDts.getDtsStructs(rootInfo3); - assert.strictEqual(resStr, 'export type StructObj = {\n\tname: string;' - + '\n\tage: number;\n\tfuncTest(v: number): boolean;\n};\n\n'); + assert.strictEqual(resStr, 'export type StructObj = {\n' + + '\tname: string;\n' + + '\tage: number;\n' + + '\tfuncTest(v: number): boolean;\n' + + '\tfuncTestAsync(v: number, cbf: (param: boolean) => void): void;\n' + + '\tfuncTestPromise(v: number): Promise;\n' + + '};\n' + + '\n'); //用例4.正常情况,一个member,多个parameters let structs4: StructObj[] = [ @@ -226,8 +245,13 @@ suite('Gendts_structs_Suite', () => { }; resStr = genDts.getDtsStructs(rootInfo4); - assert.strictEqual(resStr, 'export type StructObj = {\n\tname: string;' - + '\n\tfuncTest(a: string, b: number, c: boolean): boolean;\n};\n\n'); + assert.strictEqual(resStr, 'export type StructObj = {\n' + + '\tname: string;\n' + + '\tfuncTest(a: string, b: number, c: boolean): boolean;\n' + + '\tfuncTestAsync(a: string, b: number, c: boolean, cbf: (param: boolean) => void): void;\n' + + '\tfuncTestPromise(a: string, b: number, c: boolean): Promise;\n' + + '};\n' + + '\n'); //用例4.正常情况,多个member,多个parameters let structs5: StructObj[] = [ @@ -276,8 +300,14 @@ suite('Gendts_structs_Suite', () => { }; resStr = genDts.getDtsStructs(rootInfo5); - assert.strictEqual(resStr, 'export type StructObj = {\n\tname: string;' - + '\n\tage: number;\n\tfuncTest(aa: string, bb: number, cc: boolean): boolean;\n};\n\n'); + assert.strictEqual(resStr, 'export type StructObj = {\n' + + '\tname: string;\n' + + '\tage: number;\n' + + '\tfuncTest(aa: string, bb: number, cc: boolean): boolean;\n' + + '\tfuncTestAsync(aa: string, bb: number, cc: boolean, cbf: (param: boolean) => void): void;\n' + + '\tfuncTestPromise(aa: string, bb: number, cc: boolean): Promise;\n' + + '};\n' + + '\n'); //用例6.正常情况,一个member,一个parameters let structs6: StructObj[] = [ @@ -318,9 +348,15 @@ suite('Gendts_structs_Suite', () => { }; resStr = genDts.getDtsStructs(rootInfo6); - assert.strictEqual(resStr, 'export type StructObj = {\n\tname: string;' - + '\n\tfuncTest(aa: string): boolean;\n};\n\nexport type Alias = StructObj;\n\n'); - + assert.strictEqual(resStr, 'export type StructObj = {\n' + + '\tname: string;\n' + + '\tfuncTest(aa: string): boolean;\n' + + '\tfuncTestAsync(aa: string, cbf: (param: boolean) => void): void;\n' + + '\tfuncTestPromise(aa: string): Promise;\n' + + '};\n' + + '\n' + + 'export type Alias = StructObj;\n' + + '\n'); }); //2, 测试边界情况 @@ -372,7 +408,12 @@ suite('Gendts_structs_Suite', () => { fileName: 'test', }; resStr = genDts.getDtsStructs(rootInfo2); - assert.strictEqual(resStr, 'export type StructObj = {\n\tfuncTest(v: number): boolean;\n};\n\n'); + assert.strictEqual(resStr, 'export type StructObj = {\n' + + '\tfuncTest(v: number): boolean;\n' + + '\tfuncTestAsync(v: number, cbf: (param: boolean) => void): void;\n' + + '\tfuncTestPromise(v: number): Promise;\n' + + '};\n' + + '\n'); //用例3.structs有成员,成员变量不为空,成员方法为空 let structs3: StructObj[] =[{ diff --git a/src/vscode_plugin/src/test/suite/gen/gennapicommoncpp.test.ts b/src/vscode_plugin/src/test/suite/gen/gennapicommoncpp.test.ts index 890d2f56ccb334884b8e86b18d98474afd970701..5bc3db06b2ac7b7e93119cb62bc305f9737dee48 100644 --- a/src/vscode_plugin/src/test/suite/gen/gennapicommoncpp.test.ts +++ b/src/vscode_plugin/src/test/suite/gen/gennapicommoncpp.test.ts @@ -76,6 +76,7 @@ suite('Gennapicommoncpp_file_Suite', () => { let rootInfo: GenInfo = { parseObj: parseObj, rawFilePath: hFilePath, + fileName: undefined } let fileContent = genNapiCommonCpp.doGenCommonCppFile(rootInfo, napiCommonCppTemplate.content); assert.strictEqual(fileContent.indexOf('[fileName]') >= 0? 0: -1, 0); diff --git a/src/vscode_plugin/src/test/suite/gen/gennapicommonh.test.ts b/src/vscode_plugin/src/test/suite/gen/gennapicommonh.test.ts index e46023cc771902c8a0e6cbffcacf19592bb44d84..cc149f035644a166df74c76fdc009a24d366bf6c 100644 --- a/src/vscode_plugin/src/test/suite/gen/gennapicommonh.test.ts +++ b/src/vscode_plugin/src/test/suite/gen/gennapicommonh.test.ts @@ -78,6 +78,7 @@ suite('Gennapicommonh_file_Suite', () => { let rootInfo: GenInfo = { parseObj: parseObj, rawFilePath: hFilePath, + fileName: undefined } let fileContent = genNapiCommonH.doGenCommonHFile(rootInfo, napiCommonHTemplate.content); assert.strictEqual(fileContent.indexOf('[upper_filename]') >= 0? 0: -1, 0);