# 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 \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 \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)