131c75014Sopenharmony_ci/*
231c75014Sopenharmony_ci * Copyright (c) 2020-2021 Huawei Device Co., Ltd.
331c75014Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
431c75014Sopenharmony_ci * you may not use this file except in compliance with the License.
531c75014Sopenharmony_ci * You may obtain a copy of the License at
631c75014Sopenharmony_ci *
731c75014Sopenharmony_ci *     http://www.apache.org/licenses/LICENSE-2.0
831c75014Sopenharmony_ci *
931c75014Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software
1031c75014Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
1131c75014Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1231c75014Sopenharmony_ci * See the License for the specific language governing permissions and
1331c75014Sopenharmony_ci * limitations under the License.
1431c75014Sopenharmony_ci */
1531c75014Sopenharmony_ci
1631c75014Sopenharmony_ci#ifndef HCTEST_INTERNAL_H
1731c75014Sopenharmony_ci#define HCTEST_INTERNAL_H
1831c75014Sopenharmony_ci
1931c75014Sopenharmony_ci#include "common.h"
2031c75014Sopenharmony_ci
2131c75014Sopenharmony_ci#ifdef __cplusplus
2231c75014Sopenharmony_ci#if __cplusplus
2331c75014Sopenharmony_ciextern "C" {
2431c75014Sopenharmony_ci#endif
2531c75014Sopenharmony_ci#endif
2631c75014Sopenharmony_ci
2731c75014Sopenharmony_citypedef struct TestResult TestResult;
2831c75014Sopenharmony_cistruct TestResult {
2931c75014Sopenharmony_ci    const int8  result;
3031c75014Sopenharmony_ci    const char* messages;
3131c75014Sopenharmony_ci};
3231c75014Sopenharmony_ci
3331c75014Sopenharmony_citypedef struct CTestCase CTestCase;
3431c75014Sopenharmony_cistruct CTestCase {
3531c75014Sopenharmony_ci    /**
3631c75014Sopenharmony_ci    * @brief test suite name
3731c75014Sopenharmony_ci    * */
3831c75014Sopenharmony_ci    const char *suite_name;
3931c75014Sopenharmony_ci
4031c75014Sopenharmony_ci    /**
4131c75014Sopenharmony_ci    * @brief test case name
4231c75014Sopenharmony_ci    * */
4331c75014Sopenharmony_ci    const char *case_name;
4431c75014Sopenharmony_ci
4531c75014Sopenharmony_ci    /**
4631c75014Sopenharmony_ci    * @brief test case flag
4731c75014Sopenharmony_ci    * */
4831c75014Sopenharmony_ci    int32 flag;
4931c75014Sopenharmony_ci
5031c75014Sopenharmony_ci    /**
5131c75014Sopenharmony_ci    * @brief test case line number
5231c75014Sopenharmony_ci    * */
5331c75014Sopenharmony_ci    int16 line_num;
5431c75014Sopenharmony_ci
5531c75014Sopenharmony_ci    /**
5631c75014Sopenharmony_ci    * @brief test case setup.
5731c75014Sopenharmony_ci    * @param the test case addr.
5831c75014Sopenharmony_ci    * @return TRUE success
5931c75014Sopenharmony_ci    * */
6031c75014Sopenharmony_ci    BOOL (*lite_setup)(void);
6131c75014Sopenharmony_ci
6231c75014Sopenharmony_ci    /**
6331c75014Sopenharmony_ci    * @brief  test case teardown.
6431c75014Sopenharmony_ci    * @param the test case addr.
6531c75014Sopenharmony_ci    * @return TRUE success
6631c75014Sopenharmony_ci    * */
6731c75014Sopenharmony_ci    BOOL (*lite_teardown)(void);
6831c75014Sopenharmony_ci
6931c75014Sopenharmony_ci    /**
7031c75014Sopenharmony_ci    * @brief execute the test case.
7131c75014Sopenharmony_ci    * @param the test case addr.
7231c75014Sopenharmony_ci    * @return test results
7331c75014Sopenharmony_ci    * */
7431c75014Sopenharmony_ci    void (*execute_func)(void);
7531c75014Sopenharmony_ci};
7631c75014Sopenharmony_ci
7731c75014Sopenharmony_ci/**
7831c75014Sopenharmony_ci * test type
7931c75014Sopenharmony_ci */
8031c75014Sopenharmony_cienum TestType {
8131c75014Sopenharmony_ci    Function = 1 << 8,
8231c75014Sopenharmony_ci    Performance = 2 << 8,
8331c75014Sopenharmony_ci    Power = 3 << 8,
8431c75014Sopenharmony_ci    Reliability = 4 << 8,
8531c75014Sopenharmony_ci    Security = 5 << 8,
8631c75014Sopenharmony_ci    Global = 6 << 8,
8731c75014Sopenharmony_ci    Compatibility = 7 << 8,
8831c75014Sopenharmony_ci    User = 8 << 8,
8931c75014Sopenharmony_ci    Standard = 9 << 8,
9031c75014Sopenharmony_ci    Safety = 10 << 8,
9131c75014Sopenharmony_ci    Resilience = 11 << 8
9231c75014Sopenharmony_ci};
9331c75014Sopenharmony_ci
9431c75014Sopenharmony_ci/**
9531c75014Sopenharmony_ci * test size
9631c75014Sopenharmony_ci */
9731c75014Sopenharmony_cienum TestSize {
9831c75014Sopenharmony_ci    SmallTest = 1 << 4,
9931c75014Sopenharmony_ci    MediumTest = 2 << 4,
10031c75014Sopenharmony_ci    LargeTest = 3 << 4
10131c75014Sopenharmony_ci};
10231c75014Sopenharmony_ci
10331c75014Sopenharmony_ci/**
10431c75014Sopenharmony_ci  * test case level
10531c75014Sopenharmony_ci  */
10631c75014Sopenharmony_cienum TestRank {
10731c75014Sopenharmony_ci    Level0 = 1,
10831c75014Sopenharmony_ci    Level1 = 2,
10931c75014Sopenharmony_ci    Level2 = 3,
11031c75014Sopenharmony_ci    Level3 = 4,
11131c75014Sopenharmony_ci    Level4 = 5
11231c75014Sopenharmony_ci};
11331c75014Sopenharmony_ci
11431c75014Sopenharmony_ci/**
11531c75014Sopenharmony_ci  * test case level
11631c75014Sopenharmony_ci  */
11731c75014Sopenharmony_cienum TestLevel {
11831c75014Sopenharmony_ci    LEVEL0 = 1,
11931c75014Sopenharmony_ci    LEVEL1 = 2,
12031c75014Sopenharmony_ci    LEVEL2 = 3,
12131c75014Sopenharmony_ci    LEVEL3 = 4,
12231c75014Sopenharmony_ci    LEVEL4 = 5
12331c75014Sopenharmony_ci};
12431c75014Sopenharmony_ci
12531c75014Sopenharmony_citypedef struct CTestSuite CTestSuite;
12631c75014Sopenharmony_cistruct CTestSuite {
12731c75014Sopenharmony_ci    const char* subsystem_name;
12831c75014Sopenharmony_ci    const char* module_name;
12931c75014Sopenharmony_ci    const char* suite_name;
13031c75014Sopenharmony_ci    const char* file;
13131c75014Sopenharmony_ci    int16 times;
13231c75014Sopenharmony_ci    Vector test_cases;
13331c75014Sopenharmony_ci};
13431c75014Sopenharmony_ci
13531c75014Sopenharmony_ci#define HCTEST_SERVICE "HCTEST"
13631c75014Sopenharmony_ci#define TEST_FLAG 0x02
13731c75014Sopenharmony_ci#define MSG_START_TEST 1
13831c75014Sopenharmony_ci#define MAXIMUM_TRY_TIMES 3
13931c75014Sopenharmony_ci#define TASK_QUEUE_SIZE 20
14031c75014Sopenharmony_ci
14131c75014Sopenharmony_ci#ifdef __cplusplus
14231c75014Sopenharmony_ci#if __cplusplus
14331c75014Sopenharmony_ci}
14431c75014Sopenharmony_ci#endif
14531c75014Sopenharmony_ci#endif
14631c75014Sopenharmony_ci
14731c75014Sopenharmony_ci#endif
14831c75014Sopenharmony_ci
149