1/*
2* Copyright (c) 2022 Shenzhen Kaihong Digital Industry Development Co., Ltd.
3* Licensed under the Apache License, Version 2.0 (the "License");
4* you may not use this file except in compliance with the License.
5* You may obtain a copy of the License at
6*
7* http://www.apache.org/licenses/LICENSE-2.0
8*
9* Unless required by applicable law or agreed to in writing, software
10* distributed under the License is distributed on an "AS IS" BASIS,
11* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12* See the License for the specific language governing permissions and
13* limitations under the License.
14*/
15const test = require("./out/build/Release/napitest")
16var assert = require("assert");
17
18describe('number first cases', function () {
19    // 测试:function fun1(v: number): number;
20    it('test fun1', function () {
21        let ret = test.fun1(18);
22        assert.deepStrictEqual(ret, 0);
23    });
24
25    // 测试:function fun2(v1: number, v2: number[]): number[];
26    it('test fun2', function () {
27        let ret = test.fun2(18, [18, 20]);
28        assert.deepStrictEqual(ret, []);
29    });
30
31    // 测试:function fun3(v1: Array<number>, v2: number): Array<number>;
32    it('test fun3', function () {
33        let ret = test.fun3([18, 20], 20);
34        assert.deepStrictEqual(ret, []);
35    });
36
37    // 测试:function fun4(v: { [key: string]: number }): number;
38    it('test fun4', function () {
39        let ret = test.fun4({ 'isTrue': 18, 'isExit': 20 });
40        assert.deepStrictEqual(ret, 0);
41    });
42
43    // 测试:function fun5(v1: Map<string, number>, v2: number): number;
44    it('test fun5', function () {
45        let ret = test.fun5({ 'isTrue': 18, 'isExit': 20 }, 18);
46        assert.deepStrictEqual(ret, 0);
47    });
48
49    function asynFun1(err, ret) {
50        assert.strictEqual(err.code, 0)
51        assert.deepStrictEqual(ret, 0)
52    }
53
54    function def1(ret) {
55        assert.deepStrictEqual(ret, 0);
56    }
57
58    // 测试:function fun6(v1: number, callback: AsyncCallback<number>): void;
59    it('test fun6_callback', function () {
60        test.fun6(15, asynFun1);
61        test.fun6(15).then(def1);
62    });
63
64    // 测试:function fun6(v1: number): Promise<number>;
65    it('test fun6_promise', function () {
66        let promiseObj = test.fun6(15);
67        promiseObj.then(ret => { def1(ret) });
68    });
69});
70
71describe('number second cases', function () {
72    function asynFun2(err, ret) {
73        assert.deepStrictEqual(err.code, 0)
74        assert.deepStrictEqual(ret, [])
75    }
76
77    function def2(ret) {
78        assert.deepStrictEqual(ret, []);
79    }
80
81    // 测试:function fun7(v: number, v1: AsyncCallback<Array<number>>): void;
82    it('test fun7_callback', function () {
83        test.fun7(15, asynFun2);
84        test.fun7(15).then(def2);
85    });
86
87    // 测试:function fun7(v: number): Promise<Array<number>>;
88    it('test fun7_promise', function () {
89        let promiseObj = test.fun7(15);
90        promiseObj.then(ret => { def2(ret) });
91    });
92
93    function cb1(ret) {
94        assert.deepStrictEqual(ret, 0)
95    }
96
97    // 测试:function fun9(v1: number, callback: Callback<number>): void;
98    it('test fun9', function () {
99        test.fun9(15, cb1);
100    });
101
102    // 测试:function fun10(v1: Test): Test;
103    it('test fun10', function () {
104        let ret = test.fun10({ age: 18, height: [20, 20], width: [18, 18] });
105        assert.deepStrictEqual(typeof ret, 'object');
106        assert.strictEqual(ret.age,0)
107        assert.deepStrictEqual(ret.height,[])
108        assert.deepStrictEqual(ret.width,[])
109    });
110});