Files
powertrain-build/tests/zone_controller/test_calibration.py
Henrik Wahlqvist f9b08f29e3 Bug fix so that cLVCSC_TriggerReadRteCData ends up in the RTE dummy file
Change-Id: I130b7bf6adf71e9b3608ec9ee4bb65e4e7c242df
2025-08-27 17:11:33 +02:00

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)