#!/usr/bin/env python
# -*- coding: utf-8 -*-
##################################################################
#
# Copyright (c) 2023 CICV, Inc. All Rights Reserved
#
##################################################################
"""
@Authors:           yangzihao(yangzihao@china-icv.cn)
@Data:              2024/01/30
@Last Modified:     2024/01/30
@Summary:           Evaluateion functions
"""

import os
import sys

sys.path.append('../config')
sys.path.append('../common')
sys.path.append('../modules')
sys.path.append('../results')

import json
import traceback

import log
from common import json2dict
from config_parser import ConfigParse
from multi_cases_evaluate import multi_case_statistic


def multiple_cases_eval(configPath, singleReportPath, reportPath):
    logger = log.get_logger()
    # 加载配置文件
    try:
        # json_file = os.path.join(configPath, 'config.json')
        config = ConfigParse(configPath)
    except Exception as e:
        print('Config file parsing ERROR!', e)
        logger.error("MULTIPLE_CASES_EVAL: Config file parsing ERROR!")
        sys.exit(-1)

    # 加载各单用例报告字典
    try:
        cases_dict = json2dict(singleReportPath)
    except Exception as e:
        print('Cases dict file parsing ERROR!', e)
        logger.error("MULTIPLE_CASES_EVAL: Cases dict config file parsing ERROR!")
        sys.exit(-1)

    # 生成多用例报告
    try:
        # multiple cases report statistic and generate
        multi_dict = multi_case_statistic(cases_dict, config)
        with open(f'{reportPath}', 'w', encoding='utf-8') as f:
            f.write(json.dumps(multi_dict, ensure_ascii=False))
    except:
        traceback.print_exc()
        print(1)
        logger.error("MULTIPLE_CASES_EVAL: Evaluate multiple cases ERROR!")
        sys.exit(-1)