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 { TestClass1, fun5} = require("./out/build/Release/napitest")
16const { fun6, fun7, fun8} = require("./out/build/Release/napitest")
17const test = require("./out/build/Release/napitest")
18var assert = require("assert");
19
20describe('Object interface', function () {
21    var Radio = {
22        RADIO_UNKNOWN : 0,
23        RADIO_GSM : 1,
24        RADIO_1XRTT : 2,
25    }
26
27    let tc1 = new TestClass1();
28    // 测试:fun1(v: Object): number;
29    it('test TestClass1 fun1', function () {
30        let ret = tc1.fun1({"age":10,"name":"nameValue"});
31        assert.strictEqual(ret, 0);
32        ret = tc1.fun1({"age":[10,15],"name":"nameValue"});
33        assert.strictEqual(ret,0)
34        ret = tc1.fun1({"age":10,"name":{'test':'"nameValue"'}});
35        assert.strictEqual(ret,0)
36        ret = tc1.fun1({"age":10,"name":{'test':'nameValue','test1':15}});
37        assert.strictEqual(ret,0)
38        ret = tc1.fun1({"age":10,"name": Radio.RADIO_GSM});
39        assert.strictEqual(ret,0)
40    });
41
42    // 测试:fun2(num: number, v: Object): number;
43    it('test TestClass1 fun2', function () {
44        let ret = tc1.fun2(2, {"age":10,"name":"nameValue"});
45        assert.strictEqual(ret, 0);
46    });
47
48    // 测试:fun3(num: number, v: Object, Sam: string): number;
49    it('test TestClass1 fun3', function () {
50        let ret = tc1.fun3(2, {"age":10,"name":"nameValue"}, "test4");
51        assert.strictEqual(ret, 0);
52    });
53
54    // 测试:fun4(numcc: number): Object;
55    it('test TestClass1 fun4', function () {
56        let ret = tc1.fun4(2);
57        assert.deepStrictEqual(typeof ret, 'object');
58    });
59
60    // 测试:fun9(): number;
61    it('test TestClass1 fun9', function () {
62        let ret = tc1.fun9();
63        assert.strictEqual(ret, 0);
64    });
65
66});
67
68describe('Object function', function () {
69    var Radio = {
70        RADIO_UNKNOWN : 0,
71        RADIO_GSM : 1,
72        RADIO_1XRTT : 2,
73    }
74
75    // 测试:function fun5(v1: Object): number;
76    it('test fun5', function () {
77        let ret = fun5({"name":"sam","age":10});
78        assert.strictEqual(ret, 0);
79        ret = fun5({"name":['Sam','Peter'],"age":10});
80        assert.strictEqual(ret, 0);
81        ret = fun5({"name":{'test': '11'},"age":10});
82        assert.strictEqual(ret, 0);
83        ret = fun5({"name":{'test': '11','test1':true},"age":10});
84        assert.strictEqual(ret, 0);
85        ret = fun5({"name":Radio.RADIO_GSM,"age":10});
86        assert.strictEqual(ret, 0);
87    });
88
89    // 测试:function fun6(num1: number, v2: Object): number;
90    it('test fun6', function () {
91        let ret = fun6(2, {"age":10,"name":"nameValue"});
92        assert.strictEqual(ret, 0);
93    });
94
95    // 测试:function fun7(num2: number, v3: Object, nike: string): number;
96    it('test fun7', function () {
97        let ret = fun7(2, {"age":10,"name":"nameValue"}, "test4");
98        assert.strictEqual(ret, 0);
99    });
100
101    // 测试:function fun8(dd: number): Object;
102    it('test fun8', function () {
103        let ret = fun8(2);
104        assert.deepStrictEqual(typeof ret, 'object');
105    });
106});