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_ciimport { AsyncCallback, Callback } from './../basic';
168c339a94Sopenharmony_ci
178c339a94Sopenharmony_cideclare namespace napitest {
188c339a94Sopenharmony_ci    export class Image {
198c339a94Sopenharmony_ci        width: number;
208c339a94Sopenharmony_ci        height: number;
218c339a94Sopenharmony_ci        toDataURL(type?: string, quality?: number): string;
228c339a94Sopenharmony_ci    }
238c339a94Sopenharmony_ci
248c339a94Sopenharmony_ci    export class Human {
258c339a94Sopenharmony_ci        name: string;
268c339a94Sopenharmony_ci        age: number;
278c339a94Sopenharmony_ci    }
288c339a94Sopenharmony_ci
298c339a94Sopenharmony_ci    // 变换括号位置
308c339a94Sopenharmony_ci    class Man 
318c339a94Sopenharmony_ci    {
328c339a94Sopenharmony_ci        name: string;
338c339a94Sopenharmony_ci        age: number;
348c339a94Sopenharmony_ci    }
358c339a94Sopenharmony_ci
368c339a94Sopenharmony_ci    // 有参构造函数的转换,成员变量包含数值型枚举
378c339a94Sopenharmony_ci    export class Woman {
388c339a94Sopenharmony_ci      constructor(name_: string, age_: number, isMarried_: boolean, status_: TestStatus);
398c339a94Sopenharmony_ci      w_name: string;
408c339a94Sopenharmony_ci      w_age: number;
418c339a94Sopenharmony_ci      w_isMarried: boolean;
428c339a94Sopenharmony_ci      w_status: TestStatus;
438c339a94Sopenharmony_ci    }
448c339a94Sopenharmony_ci
458c339a94Sopenharmony_ci    // 有参构造函数的转换,成员变量包含字符型枚举
468c339a94Sopenharmony_ci    export class Child {
478c339a94Sopenharmony_ci      constructor(name_: string, age_: number, status_: TestEnumString);
488c339a94Sopenharmony_ci      w_name: string;
498c339a94Sopenharmony_ci      w_age: number;
508c339a94Sopenharmony_ci      w_status: TestEnumString;
518c339a94Sopenharmony_ci    }
528c339a94Sopenharmony_ci
538c339a94Sopenharmony_ci    export enum LaunchReason {
548c339a94Sopenharmony_ci        UNKNOWN = 0,
558c339a94Sopenharmony_ci        START_ABILITY = 1,
568c339a94Sopenharmony_ci        CALL = 2,
578c339a94Sopenharmony_ci        CONTINUATION = 3,
588c339a94Sopenharmony_ci    }
598c339a94Sopenharmony_ci
608c339a94Sopenharmony_ci    export class TestClass1 {
618c339a94Sopenharmony_ci        ahuman: Human;
628c339a94Sopenharmony_ci        fun1(v: number): number;
638c339a94Sopenharmony_ci        fun2(numcc: Array<number>, mancc: Human): Human;
648c339a94Sopenharmony_ci        fun3: (v: number, v1: string, v2: boolean) => boolean;
658c339a94Sopenharmony_ci        fun4: (mancc: Map<string, string>,v?: string) => Array<number>;
668c339a94Sopenharmony_ci        fun5: (data: Array<Human>) => Human;
678c339a94Sopenharmony_ci        fun6: (v: string[], v1: { [key: string]: boolean }) => string[];
688c339a94Sopenharmony_ci        fun8: () => void;
698c339a94Sopenharmony_ci        fun9(manA: Man): string;
708c339a94Sopenharmony_ci        fun10(v: Image): string;
718c339a94Sopenharmony_ci        
728c339a94Sopenharmony_ci        //参数为enum
738c339a94Sopenharmony_ci        fun11(v: LaunchReason): string;
748c339a94Sopenharmony_ci        fun12(v: TestStatus): string;
758c339a94Sopenharmony_ci        fun13(v: TestEnumString): string;
768c339a94Sopenharmony_ci
778c339a94Sopenharmony_ci        // return value is enum type of defined later
788c339a94Sopenharmony_ci        // to support
798c339a94Sopenharmony_ci        // fun14(v: string): ReturnStatus; 
808c339a94Sopenharmony_ci        // fun15(v: string): ReturnEnumString;
818c339a94Sopenharmony_ci
828c339a94Sopenharmony_ci        /*fun7: (v: string, v1: LaunchReason) => LaunchReason;  --待支持*/
838c339a94Sopenharmony_ci    }
848c339a94Sopenharmony_ci
858c339a94Sopenharmony_ci    // class 定义在使用之后 begin
868c339a94Sopenharmony_ci    function func4(v: TestClassLater): string;
878c339a94Sopenharmony_ci
888c339a94Sopenharmony_ci    export class TestClassUse {
898c339a94Sopenharmony_ci        v0: string;
908c339a94Sopenharmony_ci        // v1: testClassLater;
918c339a94Sopenharmony_ci        funceUse(n0: TestClassLater): string;
928c339a94Sopenharmony_ci    }
938c339a94Sopenharmony_ci
948c339a94Sopenharmony_ci    export class TestClassLater {
958c339a94Sopenharmony_ci        v0: string;
968c339a94Sopenharmony_ci        v1: number;
978c339a94Sopenharmony_ci        funcLater(n0: number): string;
988c339a94Sopenharmony_ci    }
998c339a94Sopenharmony_ci    // class 定义在使用之后 end
1008c339a94Sopenharmony_ci
1018c339a94Sopenharmony_ci    // 数值型枚举
1028c339a94Sopenharmony_ci    export enum TestStatus {
1038c339a94Sopenharmony_ci        UNKNOWN = 0,
1048c339a94Sopenharmony_ci        START_ABILITY = 1,
1058c339a94Sopenharmony_ci        CALL = 2,
1068c339a94Sopenharmony_ci        CONTINUATION = 3,
1078c339a94Sopenharmony_ci    }
1088c339a94Sopenharmony_ci
1098c339a94Sopenharmony_ci    // 字符型枚举
1108c339a94Sopenharmony_ci    export enum TestEnumString {
1118c339a94Sopenharmony_ci        ACTION_HOME = 'ohos.want.action.home',
1128c339a94Sopenharmony_ci        ACTION_DIAL = 'ohos.want.action.dial',
1138c339a94Sopenharmony_ci        ACTION_SEARCH = 'ohos.want.action.search',
1148c339a94Sopenharmony_ci        ACTION_WIRELESS_SETTINGS = 'ohos.settings.wireless',
1158c339a94Sopenharmony_ci    }
1168c339a94Sopenharmony_ci
1178c339a94Sopenharmony_ci    // 数值型枚举
1188c339a94Sopenharmony_ci    export enum ReturnStatus {
1198c339a94Sopenharmony_ci        UNKNOWN = 0,
1208c339a94Sopenharmony_ci        START_RETURN = 1,
1218c339a94Sopenharmony_ci        MIDDLE_RETURN = 2,
1228c339a94Sopenharmony_ci        END_RETURN = 3,
1238c339a94Sopenharmony_ci    }
1248c339a94Sopenharmony_ci
1258c339a94Sopenharmony_ci    // 字符型枚举
1268c339a94Sopenharmony_ci    export enum ReturnEnumString {
1278c339a94Sopenharmony_ci        RETURN_HOME = 'ohos.want.return.home',
1288c339a94Sopenharmony_ci        RETURN_DIAL = 'ohos.want.return.dial',
1298c339a94Sopenharmony_ci        RETURN_SEARCH = 'ohos.want.return.search',
1308c339a94Sopenharmony_ci        RETURN_WIRELESS_SETTINGS = 'ohos.settings.return.wireless',
1318c339a94Sopenharmony_ci    }
1328c339a94Sopenharmony_ci
1338c339a94Sopenharmony_ci    export class TestClass2 {
1348c339a94Sopenharmony_ci        // 函数多参数非嵌套场景
1358c339a94Sopenharmony_ci        func1(name : string, fp3: {nm: string, age: number, flag: boolean}): string;
1368c339a94Sopenharmony_ci
1378c339a94Sopenharmony_ci        // 函数返回值场景
1388c339a94Sopenharmony_ci        func2(input: string): { read: number; written: number; flag: boolean };
1398c339a94Sopenharmony_ci
1408c339a94Sopenharmony_ci        // Promise返回值逗号场景
1418c339a94Sopenharmony_ci        func3(from: string, to: string): Promise<{result: number, errMsg: string, isT: boolean}>;
1428c339a94Sopenharmony_ci
1438c339a94Sopenharmony_ci        // Promise返回值分号场景
1448c339a94Sopenharmony_ci        func4(from: string, to: string): Promise<{result: number; errMsg: string; isT: boolean}>;
1458c339a94Sopenharmony_ci
1468c339a94Sopenharmony_ci        // class成员方法隐式推导返回值
1478c339a94Sopenharmony_ci        func5(v1: string, v2: number, v3: boolean);
1488c339a94Sopenharmony_ci    }
1498c339a94Sopenharmony_ci
1508c339a94Sopenharmony_ci    // class 成员变量包含enum类型,且class成员方法自引用
1518c339a94Sopenharmony_ci    export enum Type
1528c339a94Sopenharmony_ci    {
1538c339a94Sopenharmony_ci        typeA,
1548c339a94Sopenharmony_ci        typeB,
1558c339a94Sopenharmony_ci        typeC
1568c339a94Sopenharmony_ci    }
1578c339a94Sopenharmony_ci  
1588c339a94Sopenharmony_ci    export class Test {
1598c339a94Sopenharmony_ci        type: Type;
1608c339a94Sopenharmony_ci        func(param: Type): boolean;
1618c339a94Sopenharmony_ci    }
1628c339a94Sopenharmony_ci  
1638c339a94Sopenharmony_ci    export interface aa {
1648c339a94Sopenharmony_ci        abc: string;
1658c339a94Sopenharmony_ci        def: number;
1668c339a94Sopenharmony_ci    }
1678c339a94Sopenharmony_ci  
1688c339a94Sopenharmony_ci    export class Demo {
1698c339a94Sopenharmony_ci        equals(other: Demo): boolean;
1708c339a94Sopenharmony_ci        handleCallback(): void;
1718c339a94Sopenharmony_ci  
1728c339a94Sopenharmony_ci        intPro: number;
1738c339a94Sopenharmony_ci        strPro: string;
1748c339a94Sopenharmony_ci        boolPro: boolean;
1758c339a94Sopenharmony_ci        inter: aa;
1768c339a94Sopenharmony_ci        type: Type;
1778c339a94Sopenharmony_ci    }
1788c339a94Sopenharmony_ci  
1798c339a94Sopenharmony_ci    function funcTest(v: Type): boolean; // enum为参数
1808c339a94Sopenharmony_ci    function funcTest2(v: Test): boolean;  // 包含enum成员变量的 class 为参数
1818c339a94Sopenharmony_ci}
1828c339a94Sopenharmony_ci
1838c339a94Sopenharmony_ciexport default napitest;
184