1ca0551cfSopenharmony_ci#!/usr/bin/env python3
2ca0551cfSopenharmony_ci# -*- coding: utf-8 -*-
3ca0551cfSopenharmony_ci
4ca0551cfSopenharmony_ci#
5ca0551cfSopenharmony_ci# Copyright (c) 2024 Huawei Device Co., Ltd.
6ca0551cfSopenharmony_ci# Licensed under the Apache License, Version 2.0 (the "License");
7ca0551cfSopenharmony_ci# you may not use this file except in compliance with the License.
8ca0551cfSopenharmony_ci# You may obtain a copy of the License at
9ca0551cfSopenharmony_ci#
10ca0551cfSopenharmony_ci#     http://www.apache.org/licenses/LICENSE-2.0
11ca0551cfSopenharmony_ci#
12ca0551cfSopenharmony_ci# Unless required by applicable law or agreed to in writing, software
13ca0551cfSopenharmony_ci# distributed under the License is distributed on an "AS IS" BASIS,
14ca0551cfSopenharmony_ci# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15ca0551cfSopenharmony_ci# See the License for the specific language governing permissions and
16ca0551cfSopenharmony_ci# limitations under the License.
17ca0551cfSopenharmony_ci#
18ca0551cfSopenharmony_ci
19ca0551cfSopenharmony_ciimport os
20ca0551cfSopenharmony_ciimport importlib
21ca0551cfSopenharmony_ci
22ca0551cfSopenharmony_cifrom util import file_exists, make_binary_file, print_failure, print_success, get_subclasses, get_idl
23ca0551cfSopenharmony_cifrom test_base import Test
24ca0551cfSopenharmony_ci
25ca0551cfSopenharmony_ciexclude_file = ["test_base.py", "unit_test.py", "util.py"]
26ca0551cfSopenharmony_cifor file_name in os.listdir(os.path.dirname(os.path.abspath(__file__))):
27ca0551cfSopenharmony_ci    if file_name.endswith('.py'):
28ca0551cfSopenharmony_ci        if file_name in exclude_file:
29ca0551cfSopenharmony_ci            continue
30ca0551cfSopenharmony_ci        module_name = file_name[:-3]
31ca0551cfSopenharmony_ci        importlib.import_module(module_name)
32ca0551cfSopenharmony_ci
33ca0551cfSopenharmony_ci
34ca0551cfSopenharmony_ciclass Suite:
35ca0551cfSopenharmony_ci    test_cases = get_subclasses(Test)
36ca0551cfSopenharmony_ci    test_objs = list()
37ca0551cfSopenharmony_ci
38ca0551cfSopenharmony_ci    @staticmethod
39ca0551cfSopenharmony_ci    def set_up_test_case():
40ca0551cfSopenharmony_ci        hdi_gen_file = get_idl()
41ca0551cfSopenharmony_ci        ret = file_exists(hdi_gen_file)
42ca0551cfSopenharmony_ci        if not ret:
43ca0551cfSopenharmony_ci            hdi_gen_path = "../../"
44ca0551cfSopenharmony_ci            if make_binary_file(hdi_gen_path)[0] == 0:
45ca0551cfSopenharmony_ci                ret = True
46ca0551cfSopenharmony_ci        if not ret:
47ca0551cfSopenharmony_ci            print_failure("[===========] failed to make idl-gen")
48ca0551cfSopenharmony_ci        return ret
49ca0551cfSopenharmony_ci
50ca0551cfSopenharmony_ci    @staticmethod
51ca0551cfSopenharmony_ci    def run_suite():
52ca0551cfSopenharmony_ci        test_case_num = len(Suite.test_cases)
53ca0551cfSopenharmony_ci        success_case_num = 0
54ca0551cfSopenharmony_ci        print_success("[===========] start {} test".format(test_case_num))
55ca0551cfSopenharmony_ci        for test_case in Suite.test_cases:
56ca0551cfSopenharmony_ci            obj = test_case()
57ca0551cfSopenharmony_ci            Suite.test_objs.append(obj)
58ca0551cfSopenharmony_ci            if obj.test():
59ca0551cfSopenharmony_ci                success_case_num += 1
60ca0551cfSopenharmony_ci        print_success("[    PASSED ] {} test".format(success_case_num))
61ca0551cfSopenharmony_ci        failure_case_num = test_case_num - success_case_num
62ca0551cfSopenharmony_ci        if failure_case_num > 0:
63ca0551cfSopenharmony_ci            print_failure("[    FAILED ] {} test".format(failure_case_num))
64ca0551cfSopenharmony_ci
65ca0551cfSopenharmony_ci
66ca0551cfSopenharmony_ciif __name__ == "__main__":
67ca0551cfSopenharmony_ci    if not Suite.set_up_test_case():
68ca0551cfSopenharmony_ci        print_failure("test case set up failed!")
69ca0551cfSopenharmony_ci        exit(-1)
70ca0551cfSopenharmony_ci    Suite.run_suite()
71