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_cifrom base import file_exists, make_binary_file, print_failure, print_success, get_subclasses, get_idl
20ca0551cfSopenharmony_cifrom base import Test
21ca0551cfSopenharmony_cifrom hdi_hash_test import __all__
22ca0551cfSopenharmony_ciimport importlib
23ca0551cfSopenharmony_ci
24ca0551cfSopenharmony_cifor module_name in __all__:
25ca0551cfSopenharmony_ci    module = importlib.import_module(f'hdi_hash_test.{module_name}')
26ca0551cfSopenharmony_ci
27ca0551cfSopenharmony_ci
28ca0551cfSopenharmony_ciclass Tests:
29ca0551cfSopenharmony_ci    test_cases = get_subclasses(Test)
30ca0551cfSopenharmony_ci    test_objs = list()
31ca0551cfSopenharmony_ci
32ca0551cfSopenharmony_ci    @staticmethod
33ca0551cfSopenharmony_ci    def set_up_test_case():
34ca0551cfSopenharmony_ci        hdi_gen_file = get_idl()
35ca0551cfSopenharmony_ci        ret = file_exists(hdi_gen_file)
36ca0551cfSopenharmony_ci        if not ret:
37ca0551cfSopenharmony_ci            hdi_gen_path = "../../"
38ca0551cfSopenharmony_ci            if make_binary_file(hdi_gen_path)[0] == 0:
39ca0551cfSopenharmony_ci                ret = True
40ca0551cfSopenharmony_ci        if not ret:
41ca0551cfSopenharmony_ci            print_failure("[===========] failed to make idl-gen")
42ca0551cfSopenharmony_ci        return ret
43ca0551cfSopenharmony_ci
44ca0551cfSopenharmony_ci    @staticmethod
45ca0551cfSopenharmony_ci    def tear_down_test_case():
46ca0551cfSopenharmony_ci        for case in Tests.test_objs:
47ca0551cfSopenharmony_ci            case.remove_output()
48ca0551cfSopenharmony_ci
49ca0551cfSopenharmony_ci    @staticmethod
50ca0551cfSopenharmony_ci    def test():
51ca0551cfSopenharmony_ci        test_case_num = len(Tests.test_cases)
52ca0551cfSopenharmony_ci        success_case_num = 0
53ca0551cfSopenharmony_ci        print_success("[===========] start {} test".format(test_case_num))
54ca0551cfSopenharmony_ci        for test_case in Tests.test_cases:
55ca0551cfSopenharmony_ci            obj = test_case()
56ca0551cfSopenharmony_ci            Tests.test_objs.append(obj)
57ca0551cfSopenharmony_ci            if obj.test():
58ca0551cfSopenharmony_ci                success_case_num += 1
59ca0551cfSopenharmony_ci        print_success("[    PASSED ] {} test".format(success_case_num))
60ca0551cfSopenharmony_ci        failure_case_num = test_case_num - success_case_num
61ca0551cfSopenharmony_ci        if failure_case_num > 0:
62ca0551cfSopenharmony_ci            print_failure("[    FAILED ] {} test".format(failure_case_num))
63ca0551cfSopenharmony_ci
64ca0551cfSopenharmony_ci
65ca0551cfSopenharmony_ciif __name__ == "__main__":
66ca0551cfSopenharmony_ci    if not Tests.set_up_test_case():
67ca0551cfSopenharmony_ci        print_failure("test case set up failed!")
68ca0551cfSopenharmony_ci        exit(-1)
69ca0551cfSopenharmony_ci    Tests.test()
70ca0551cfSopenharmony_ci    Tests.tear_down_test_case()
71