205 lines
9.4 KiB
Python
205 lines
9.4 KiB
Python
# Copyright 2024 Volvo Car Corporation
|
|
# Licensed under Apache 2.0.
|
|
|
|
"""Unit test script for powertrain_build.zone_controller.calibration."""
|
|
|
|
from unittest import TestCase
|
|
from unittest.mock import MagicMock
|
|
from powertrain_build.zone_controller.calibration import ZoneControllerCalibration
|
|
|
|
|
|
def mock_get_composition_config(key):
|
|
"""Function to mock BuildProjConfig.get_composition_config."""
|
|
return {
|
|
"asil": "QM",
|
|
"softwareComponentName": "testName_SC",
|
|
}[key]
|
|
|
|
|
|
def mock_get_composition_config_asil(key):
|
|
"""Function to mock BuildProjConfig.get_composition_config."""
|
|
return {
|
|
"asil": "ASILC",
|
|
"softwareComponentName": "testName_SC",
|
|
}[key]
|
|
|
|
|
|
class TestZoneControllerCalibration(TestCase):
|
|
"""Test case for testing composition_yaml."""
|
|
|
|
def setUp(self):
|
|
"""Set-up common data structures for all tests in the test case."""
|
|
self.build_cfg = MagicMock()
|
|
self.build_cfg.name = "XVC"
|
|
self.build_cfg.get_src_code_dst_dir.return_value = None
|
|
self.build_cfg.get_composition_config.side_effect = mock_get_composition_config
|
|
self.build_cfg.get_scheduler_prefix.return_value = "suffix"
|
|
self.dummy_calib_data = {
|
|
"class_info": {
|
|
"dummy_one": {
|
|
"type": "Float32",
|
|
"width": 1
|
|
},
|
|
"dummy_two": {
|
|
"type": "UInt8",
|
|
"width": 1
|
|
},
|
|
"dummy_three": {
|
|
"type": "UInt8",
|
|
"width": [1, 2]
|
|
},
|
|
"dummy_four": {
|
|
"type": "UInt8",
|
|
"width": [2, 2]
|
|
},
|
|
"ctestName_SC_TriggerReadRteCData": {
|
|
"type": "Float32",
|
|
"width": 1
|
|
}
|
|
},
|
|
"data_types": {}
|
|
}
|
|
self.zone_controller_calibation = ZoneControllerCalibration(self.build_cfg, self.dummy_calib_data)
|
|
|
|
def test_get_header_file_content(self):
|
|
"""Test ZoneControllerCalibration.get_header_file_content."""
|
|
result = self.zone_controller_calibation.get_header_file_content()
|
|
expected = [
|
|
"#ifndef CALIBRATION_INTERFACE_SUFFIX_H\n",
|
|
"#define CALIBRATION_INTERFACE_SUFFIX_H\n",
|
|
"#define CVC_CAL\n",
|
|
'#include <string.h>\n',
|
|
'#include "tl_basetypes.h"\n',
|
|
'#include "Rte_testName_SC.h"\n',
|
|
"\n",
|
|
'#include "CVC_CAL_START.h"\n',
|
|
"extern CVC_CAL Float32 dummy_one;\n",
|
|
"extern CVC_CAL UInt8 dummy_two;\n",
|
|
"extern CVC_CAL UInt8 dummy_three[2];\n",
|
|
"extern CVC_CAL UInt8 dummy_four[2][2];\n",
|
|
"extern CVC_CAL Float32 ctestName_SC_TriggerReadRteCData;\n",
|
|
'#include "CVC_CAL_END.h"\n',
|
|
"\n",
|
|
"extern Float32 Rte_CData_testName_SC_dummy_one(void);\n",
|
|
"extern UInt8 Rte_CData_testName_SC_dummy_two(void);\n",
|
|
"extern const UInt8* Rte_CData_testName_SC_dummy_three(void);\n",
|
|
"extern const UInt8* Rte_CData_testName_SC_dummy_four(void);\n",
|
|
"extern Float32 Rte_CData_testName_SC_ctestName_SC_TriggerReadRteCData(void);\n",
|
|
"\n",
|
|
"void testName_SC_ZcCalibrationInit(void);\n",
|
|
"void testName_SC_ZcCalibrationStep(void);\n",
|
|
"\n",
|
|
"#endif /* CALIBRATION_INTERFACE_SUFFIX_H */\n"
|
|
]
|
|
self.assertListEqual(result, expected)
|
|
|
|
def test_get_header_file_content_asil(self):
|
|
"""Test ZoneControllerCalibration.get_header_file_content with ASIL level."""
|
|
self.build_cfg.get_composition_config.side_effect = mock_get_composition_config_asil
|
|
self.zone_controller_calibation = ZoneControllerCalibration(self.build_cfg, self.dummy_calib_data)
|
|
result = self.zone_controller_calibation.get_header_file_content()
|
|
expected = [
|
|
"#ifndef CALIBRATION_INTERFACE_SUFFIX_H\n",
|
|
"#define CALIBRATION_INTERFACE_SUFFIX_H\n",
|
|
"#define CVC_CAL\n",
|
|
'#include <string.h>\n',
|
|
'#include "tl_basetypes.h"\n',
|
|
'#include "Rte_testName_SC.h"\n',
|
|
"\n",
|
|
'#include "CVC_CAL_ASIL_C_START.h"\n',
|
|
"extern CVC_CAL Float32 dummy_one;\n",
|
|
"extern CVC_CAL UInt8 dummy_two;\n",
|
|
"extern CVC_CAL UInt8 dummy_three[2];\n",
|
|
"extern CVC_CAL UInt8 dummy_four[2][2];\n",
|
|
"extern CVC_CAL Float32 ctestName_SC_TriggerReadRteCData;\n",
|
|
'#include "CVC_CAL_ASIL_C_END.h"\n',
|
|
"\n",
|
|
"extern Float32 Rte_CData_testName_SC_dummy_one(void);\n",
|
|
"extern UInt8 Rte_CData_testName_SC_dummy_two(void);\n",
|
|
"extern const UInt8* Rte_CData_testName_SC_dummy_three(void);\n",
|
|
"extern const UInt8* Rte_CData_testName_SC_dummy_four(void);\n",
|
|
"extern Float32 Rte_CData_testName_SC_ctestName_SC_TriggerReadRteCData(void);\n",
|
|
"\n",
|
|
"void testName_SC_ZcCalibrationInit(void);\n",
|
|
"void testName_SC_ZcCalibrationStep(void);\n",
|
|
"\n",
|
|
"#endif /* CALIBRATION_INTERFACE_SUFFIX_H */\n"
|
|
]
|
|
self.assertListEqual(result, expected)
|
|
|
|
def test_get_source_file_content(self):
|
|
"""Test ZoneControllerCalibration.get_source_file_content."""
|
|
result = self.zone_controller_calibation.get_source_file_content()
|
|
expected = [
|
|
'#include "calibration_interface_suffix.h"\n',
|
|
"\n",
|
|
'#include "CVC_CAL_START.h"\n',
|
|
"CVC_CAL Float32 ctestName_SC_TriggerReadRteCData = 0;\n",
|
|
'#include "CVC_CAL_END.h"\n',
|
|
"\n",
|
|
'#include "CVC_CODE_START.h"\n',
|
|
"void testName_SC_ZcCalibrationInit(void)\n",
|
|
"{\n",
|
|
" dummy_one = Rte_CData_testName_SC_dummy_one();\n",
|
|
" dummy_two = Rte_CData_testName_SC_dummy_two();\n",
|
|
" memcpy(dummy_three, Rte_CData_testName_SC_dummy_three(), sizeof(dummy_three));\n",
|
|
" memcpy(dummy_four, Rte_CData_testName_SC_dummy_four(), sizeof(dummy_four));\n",
|
|
" ctestName_SC_TriggerReadRteCData = Rte_CData_testName_SC_ctestName_SC_TriggerReadRteCData();\n",
|
|
"}\n",
|
|
'#include "CVC_CODE_END.h"\n',
|
|
"\n",
|
|
'#include "CVC_CODE_START.h"\n',
|
|
"void testName_SC_ZcCalibrationStep(void)\n",
|
|
"{\n",
|
|
" if (ctestName_SC_TriggerReadRteCData != Rte_CData_testName_SC_ctestName_SC_TriggerReadRteCData())\n",
|
|
" {\n",
|
|
" dummy_one = Rte_CData_testName_SC_dummy_one();\n",
|
|
" dummy_two = Rte_CData_testName_SC_dummy_two();\n",
|
|
" memcpy(dummy_three, Rte_CData_testName_SC_dummy_three(), sizeof(dummy_three));\n",
|
|
" memcpy(dummy_four, Rte_CData_testName_SC_dummy_four(), sizeof(dummy_four));\n",
|
|
" ctestName_SC_TriggerReadRteCData = Rte_CData_testName_SC_ctestName_SC_TriggerReadRteCData();\n",
|
|
" }\n",
|
|
"}\n",
|
|
'#include "CVC_CODE_END.h"\n'
|
|
]
|
|
self.assertListEqual(result, expected)
|
|
|
|
def test_get_source_file_content_asil(self):
|
|
"""Test ZoneControllerCalibration.get_source_file_content with ASIL level."""
|
|
self.build_cfg.get_composition_config.side_effect = mock_get_composition_config_asil
|
|
self.zone_controller_calibation = ZoneControllerCalibration(self.build_cfg, self.dummy_calib_data)
|
|
result = self.zone_controller_calibation.get_source_file_content()
|
|
expected = [
|
|
'#include "calibration_interface_suffix.h"\n',
|
|
"\n",
|
|
'#include "CVC_CAL_ASIL_C_START.h"\n',
|
|
"CVC_CAL Float32 ctestName_SC_TriggerReadRteCData = 0;\n",
|
|
'#include "CVC_CAL_ASIL_C_END.h"\n',
|
|
"\n",
|
|
'#include "CVC_CODE_ASIL_C_START.h"\n',
|
|
"void testName_SC_ZcCalibrationInit(void)\n",
|
|
"{\n",
|
|
" dummy_one = Rte_CData_testName_SC_dummy_one();\n",
|
|
" dummy_two = Rte_CData_testName_SC_dummy_two();\n",
|
|
" memcpy(dummy_three, Rte_CData_testName_SC_dummy_three(), sizeof(dummy_three));\n",
|
|
" memcpy(dummy_four, Rte_CData_testName_SC_dummy_four(), sizeof(dummy_four));\n",
|
|
" ctestName_SC_TriggerReadRteCData = Rte_CData_testName_SC_ctestName_SC_TriggerReadRteCData();\n",
|
|
"}\n",
|
|
'#include "CVC_CODE_ASIL_C_END.h"\n',
|
|
"\n",
|
|
'#include "CVC_CODE_ASIL_C_START.h"\n',
|
|
"void testName_SC_ZcCalibrationStep(void)\n",
|
|
"{\n",
|
|
" if (ctestName_SC_TriggerReadRteCData != Rte_CData_testName_SC_ctestName_SC_TriggerReadRteCData())\n",
|
|
" {\n",
|
|
" dummy_one = Rte_CData_testName_SC_dummy_one();\n",
|
|
" dummy_two = Rte_CData_testName_SC_dummy_two();\n",
|
|
" memcpy(dummy_three, Rte_CData_testName_SC_dummy_three(), sizeof(dummy_three));\n",
|
|
" memcpy(dummy_four, Rte_CData_testName_SC_dummy_four(), sizeof(dummy_four));\n",
|
|
" ctestName_SC_TriggerReadRteCData = Rte_CData_testName_SC_ctestName_SC_TriggerReadRteCData();\n",
|
|
" }\n",
|
|
"}\n",
|
|
'#include "CVC_CODE_ASIL_C_END.h"\n'
|
|
]
|
|
self.assertListEqual(result, expected)
|