1886da342Sopenharmony_ci/*
2886da342Sopenharmony_ci * Copyright (c) 2021-2024 Huawei Device Co., Ltd.
3886da342Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
4886da342Sopenharmony_ci * you may not use this file except in compliance with the License.
5886da342Sopenharmony_ci * You may obtain a copy of the License at
6886da342Sopenharmony_ci *
7886da342Sopenharmony_ci *     http://www.apache.org/licenses/LICENSE-2.0
8886da342Sopenharmony_ci *
9886da342Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software
10886da342Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
11886da342Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12886da342Sopenharmony_ci * See the License for the specific language governing permissions and
13886da342Sopenharmony_ci * limitations under the License.
14886da342Sopenharmony_ci */
15886da342Sopenharmony_ci
16886da342Sopenharmony_cifunction assertThrowError(actualValue, expected) {
17886da342Sopenharmony_ci    let result = false;
18886da342Sopenharmony_ci    let message = '';
19886da342Sopenharmony_ci    let err;
20886da342Sopenharmony_ci    if (typeof actualValue !== 'function') {
21886da342Sopenharmony_ci        throw new Error('actualValue is not a function');
22886da342Sopenharmony_ci    }
23886da342Sopenharmony_ci    try {
24886da342Sopenharmony_ci        actualValue();
25886da342Sopenharmony_ci        return {
26886da342Sopenharmony_ci            pass: result,
27886da342Sopenharmony_ci            message: ' An error is not thrown while it is expected!'
28886da342Sopenharmony_ci        };
29886da342Sopenharmony_ci    } catch (e) {
30886da342Sopenharmony_ci        err = e;
31886da342Sopenharmony_ci    }
32886da342Sopenharmony_ci    if (err instanceof Error) {
33886da342Sopenharmony_ci        let type = typeof expected[0];
34886da342Sopenharmony_ci        if (type === 'function') {
35886da342Sopenharmony_ci            result = err.constructor.name === expected[0].name;
36886da342Sopenharmony_ci            message = 'expected throw failed , ' + err.constructor.name + ' is not ' + expected[0].name;
37886da342Sopenharmony_ci        } else if (type === 'string') {
38886da342Sopenharmony_ci            result = err.message.includes(expected[0]);
39886da342Sopenharmony_ci            message = 'expected throw failed , ' + err.message + ' is not ' + expected[0];
40886da342Sopenharmony_ci        }
41886da342Sopenharmony_ci    }
42886da342Sopenharmony_ci    return {
43886da342Sopenharmony_ci        pass: result,
44886da342Sopenharmony_ci        message: message
45886da342Sopenharmony_ci    };
46886da342Sopenharmony_ci}
47886da342Sopenharmony_ci
48886da342Sopenharmony_ciexport default assertThrowError;
49