1/**
2 * Copyright (c) 2024 Huawei Device 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 */
15
16import { hilog } from '@kit.PerformanceAnalysisKit';
17import { describe, beforeAll, beforeEach, afterEach, afterAll, it, expect, TestType, Level, Size } from '@ohos/hypium';
18import { zlib } from '@kit.BasicServicesKit';
19
20const TAG: string = 'BmsZlibChecksumTestTag';
21const Domain: number = 0x0000;
22const CODE_PARAMETER_ERROR: number = 401;
23
24export default function bmsZlibChecksumAdler32Test() {
25  let checksum: zlib.Checksum = zlib.createChecksumSync();
26  let buf = new ArrayBuffer(12);
27  let bufEmpty = new ArrayBuffer(12);
28  let str = 'hello world!';
29  describe('bmsZlibChecksumAdler32Test', () => {
30    // Defines a test suite. Two parameters are supported: test suite name and test suite function.
31    beforeAll(() => {
32      // Presets an action, which is performed only once before all test cases of the test suite start.
33      // This API supports only one parameter: preset action function.
34      let data = new Uint8Array(buf);
35      for (let i = 0, j = str.length; i < j; i++) {
36        data[i] = str.charCodeAt(i);
37      }
38    })
39    beforeEach(() => {
40      // Presets an action, which is performed before each unit test case starts.
41      // The number of execution times is the same as the number of test cases defined by **it**.
42      // This API supports only one parameter: preset action function.
43    })
44    afterEach(() => {
45      // Presets a clear action, which is performed after each unit test case ends.
46      // The number of execution times is the same as the number of test cases defined by **it**.
47      // This API supports only one parameter: clear action function.
48    })
49    afterAll(() => {
50      // Presets a clear action, which is performed after all test cases of the test suite end.
51      // This API supports only one parameter: clear action function.
52    })
53    /**
54     * @tc.number: Sub_Bms_Zlib_Checksum_Check_0400
55     * @tc.name: Sub_Bms_Zlib_Checksum_Check_0400
56     * @tc.desc: test adler32(0,bufEmpty)
57     * @tc.size: MediumTest
58     * @tc.type: Function
59     * @tc.level: Level2
60     */
61    it("Sub_Bms_Zlib_Checksum_Check_0400", TestType.FUNCTION | Size.MEDIUMTEST | Level.LEVEL2, async (done: Function) => {
62      try {
63        let adler = 0;
64        hilog.info(Domain, TAG, `Sub_Bms_Zlib_Checksum_Check_0400 start`);
65        let num: number = await checksum.adler32(adler, bufEmpty);
66        hilog.info(Domain, TAG, `Sub_Bms_Zlib_Checksum_Check_0400 adler ${adler} ret: ${num}`);
67        expect(true).assertTrue();
68      } catch (e) {
69        hilog.error(Domain, TAG, `Sub_Bms_Zlib_Checksum_Check_0400 error, error code is: ${e.code}, error message is: ${e.message}`);
70        expect().assertFail();
71      }
72      done();
73    });
74    /**
75     * @tc.number: Sub_Bms_Zlib_Checksum_Check_0500
76     * @tc.name: Sub_Bms_Zlib_Checksum_Check_0500
77     * @tc.desc: test adler32(-1,buf)
78     * @tc.size: MediumTest
79     * @tc.type: Function
80     * @tc.level: Level2
81     */
82    it("Sub_Bms_Zlib_Checksum_Check_0500", TestType.FUNCTION | Size.MEDIUMTEST | Level.LEVEL2, async (done: Function) => {
83      try {
84        let adler = -1;
85        hilog.info(Domain, TAG, `Sub_Bms_Zlib_Checksum_Check_0500 start`);
86        let num: number = await checksum.adler32(adler, buf);
87        hilog.info(Domain, TAG, `Sub_Bms_Zlib_Checksum_Check_0500 adler=${adler} buf=${str}, ret=${num}`);
88        expect(true).assertTrue();
89      } catch (e) {
90        hilog.error(Domain, TAG, `Sub_Bms_Zlib_Checksum_Check_0500 error, error code is: ${e.code}, error message is: ${e.message}`);
91        expect().assertFail();
92      }
93      done();
94    });
95    /**
96     * @tc.number: Sub_Bms_Zlib_Checksum_Check_0600
97     * @tc.name: Sub_Bms_Zlib_Checksum_Check_0600
98     * @tc.desc: test adler32(9223372036854775808,buf)
99     * @tc.size: MediumTest
100     * @tc.type: Function
101     * @tc.level: Level2
102     */
103    it("Sub_Bms_Zlib_Checksum_Check_0600", TestType.FUNCTION | Size.MEDIUMTEST | Level.LEVEL2, async (done: Function) => {
104      try {
105        let adler = 9223372036854775808;
106        hilog.info(Domain, TAG, `Sub_Bms_Zlib_Checksum_Check_0600 start`);
107        let num: number = await checksum.adler32(adler, buf);
108        hilog.info(Domain, TAG, `Sub_Bms_Zlib_Checksum_Check_0600 adler=${adler} buf=${str}, ret=${num}`);
109        expect(true).assertTrue();
110      } catch (e) {
111        hilog.error(Domain, TAG, `Sub_Bms_Zlib_Checksum_Check_0600 error, error code is: ${e.code}, error message is: ${e.message}`);
112        expect().assertFail();
113      }
114      done();
115    });
116    /**
117     * @tc.number: Sub_Bms_Zlib_Checksum_Check_0800
118     * @tc.name: Sub_Bms_Zlib_Checksum_Check_0800
119     * @tc.desc: test adler32(undefined,buf)
120     * @tc.size: MediumTest
121     * @tc.type: Function
122     * @tc.level: Level2
123     */
124    it("Sub_Bms_Zlib_Checksum_Check_0800", TestType.FUNCTION | Size.MEDIUMTEST | Level.LEVEL2, async (done: Function) => {
125      try {
126        let adler = undefined;
127        hilog.info(Domain, TAG, `Sub_Bms_Zlib_Checksum_Check_0800 start`);
128        let num: number = await checksum.adler32(adler, buf);
129        hilog.info(Domain, TAG, `Sub_Bms_Zlib_Checksum_Check_0800 adler=${adler} buf=${str}, ret=${num}`);
130        expect(num).assertFail();
131      } catch (e) {
132        hilog.error(Domain, TAG, `Sub_Bms_Zlib_Checksum_Check_0800 error, error code is: ${e.code}, error message is: ${e.message}`);
133        expect(e.code).assertEqual(CODE_PARAMETER_ERROR);
134      }
135      done();
136    });
137    /**
138     * @tc.number: Sub_Bms_Zlib_Checksum_Check_0900
139     * @tc.name: Sub_Bms_Zlib_Checksum_Check_0900
140     * @tc.desc: test adler32(0,null)
141     * @tc.size: MediumTest
142     * @tc.type: Function
143     * @tc.level: Level2
144     */
145    it("Sub_Bms_Zlib_Checksum_Check_0900", TestType.FUNCTION | Size.MEDIUMTEST | Level.LEVEL2, async (done: Function) => {
146      try {
147        let adler = 0;
148        hilog.info(Domain, TAG, `Sub_Bms_Zlib_Checksum_Check_0900 start`);
149        let num: number = await checksum.adler32(adler, null);
150        hilog.info(Domain, TAG, `Sub_Bms_Zlib_Checksum_Check_0900 adler=${adler} buf=null, ret=${num}`);
151        expect(num).assertFail();
152      } catch (e) {
153        hilog.error(Domain, TAG, `Sub_Bms_Zlib_Checksum_Check_0900 error, error code is: ${e.code}, error message is: ${e.message}`);
154        expect(e.code).assertEqual(CODE_PARAMETER_ERROR);
155      }
156      done();
157    });
158    /**
159     * @tc.number: Sub_Bms_Zlib_Checksum_Check_1000
160     * @tc.name: Sub_Bms_Zlib_Checksum_Check_1000
161     * @tc.desc: test adler32(0,undefined)
162     * @tc.size: MediumTest
163     * @tc.type: Function
164     * @tc.level: Level2
165     */
166    it("Sub_Bms_Zlib_Checksum_Check_1000", TestType.FUNCTION | Size.MEDIUMTEST | Level.LEVEL2, async (done: Function) => {
167      try {
168        let adler = 0;
169        hilog.info(Domain, TAG, `Sub_Bms_Zlib_Checksum_Check_1000 start`);
170        let num: number = await checksum.adler32(adler, undefined);
171        hilog.info(Domain, TAG, `Sub_Bms_Zlib_Checksum_Check_1000 adler=${adler} buf=undefined, ret=${num}`);
172        expect(num).assertFail();
173      } catch (e) {
174        hilog.error(Domain, TAG, `Sub_Bms_Zlib_Checksum_Check_1000 error, error code is: ${e.code}, error message is: ${e.message}`);
175        expect(e.code).assertEqual(CODE_PARAMETER_ERROR);
176      }
177      done();
178    });
179
180  })
181}