# Copyright 2024 Volvo Car Corporation # Licensed under Apache 2.0. """Unit test script for CoreDummy class.""" import io import unittest from unittest.mock import patch, mock_open, MagicMock from powertrain_build.core_dummy import CoreDummy from powertrain_build.unit_configs import UnitConfigs from .core_cnfg import CORE_CFG from . import core_dummy_cnfg class TestCoreDummyTL(unittest.TestCase): """Test case for testing the FeatureConfigs class.""" def setUp(self): """Set-up common data structures for all tests in the test case.""" self.unit_cfg = MagicMock(spec_set=UnitConfigs) type(self.unit_cfg).base_types_headers = '#include "tl_basetypes.h"\n' type(self.unit_cfg).code_generators = {'target_link'} self.core_dummy = CoreDummy(CORE_CFG['CFG1'], self.unit_cfg) self.core_dummy.fh_h = io.StringIO() self.core_dummy.fh_c = io.StringIO() def tearDown(self): """Tear down common data structures for all tests in the test case.""" self.core_dummy.fh_h.close() self.core_dummy.fh_h = None self.core_dummy.fh_c.close() self.core_dummy.fh_c = None def test_gen_rb_header(self): """Test generation of the RB start of the c and h files for the dummy core definition files. """ self.core_dummy._gen_rb_header('TESTFILE.h') h_result = self.core_dummy.fh_h.getvalue() c_result = self.core_dummy.fh_c.getvalue() self.assertEqual(h_result, core_dummy_cnfg.RB_HEADER_H_TL) self.assertEqual(c_result, core_dummy_cnfg.RB_HEADER_C) def test_gen_rb_event_dummies(self): """Test generation of the RB dummy event declarations.""" self.core_dummy._gen_rb_event_dummies() h_result = self.core_dummy.fh_h.getvalue() c_result = self.core_dummy.fh_c.getvalue() self.assertEqual(h_result, core_dummy_cnfg.RB_EVENT_H) self.assertEqual(c_result, core_dummy_cnfg.RB_EVENT_C) def test_gen_rb_fid_dummies(self): """Test generation of the RB dummy function id declarations.""" self.core_dummy._gen_rb_fid_dummies() h_result = self.core_dummy.fh_h.getvalue() c_result = self.core_dummy.fh_c.getvalue() self.assertEqual(h_result, core_dummy_cnfg.RB_FID_H) self.assertEqual(c_result, core_dummy_cnfg.RB_FID_C) def test_gen_rb_iumpr_dummies(self): """Test generation of the RB dummy IUMPR declarations.""" self.core_dummy._gen_rb_iumpr_dummies() h_result = self.core_dummy.fh_h.getvalue() c_result = self.core_dummy.fh_c.getvalue() self.assertEqual(h_result, core_dummy_cnfg.RB_IUMPR_H) self.assertEqual(c_result, core_dummy_cnfg.RB_IUMPR_C) def test_gen_rb_mode06_dummies(self): """Generate the RB dummy mode$06 declarations.""" self.core_dummy._gen_rb_mode06_dummies() h_result = self.core_dummy.fh_h.getvalue() c_result = self.core_dummy.fh_c.getvalue() self.assertEqual(h_result, core_dummy_cnfg.RB_MODE06_H) self.assertEqual(c_result, core_dummy_cnfg.RB_MODE06_C) def test_gen_rb_rnk_dummies(self): """Test generation of the RB dummy ranking declarations.""" self.core_dummy._gen_rb_rnk_dummies() h_result = self.core_dummy.fh_h.getvalue() c_result = self.core_dummy.fh_c.getvalue() self.assertEqual(h_result, core_dummy_cnfg.RB_RNK_H_TL) self.assertEqual(c_result, core_dummy_cnfg.RB_RNK_C_TL) def test_gen_rb_end(self): """Test generation of the RB end of the c and h files for the dummy core definition files. """ self.core_dummy._gen_rb_end('testfile') h_result = self.core_dummy.fh_h.getvalue() c_result = self.core_dummy.fh_c.getvalue() self.assertEqual(h_result, core_dummy_cnfg.RB_END_H) self.assertEqual(c_result, core_dummy_cnfg.RB_END_C) def test_generate_rb_core_dummy_files(self): """Test generation of RB dummy files.""" result = [] mopen = mock_open() mopen.return_value.write = result.append with patch('builtins.open', mopen, create=True): self.core_dummy.generate_rb_core_dummy_files('testfile') self.assertEqual(result[0], '/* Autogenerated core id dummy file */\n\n') self.assertEqual(result[-2], ' END OF FILE\n') def test_generate_rb_core_dummy_files_empty(self): """Test generation of RB dummy files with empty indata.""" result = [] mopen = mock_open() mopen.return_value.write = result.append with patch('builtins.open', mopen, create=True): core_dummy = CoreDummy({}, self.unit_cfg) core_dummy.generate_rb_core_dummy_files('testfile') self.assertEqual(result[0], '/* Autogenerated core id dummy file */\n\n') self.assertEqual(result[-2], ' END OF FILE\n') def test_gen_dg2_header(self): """Test generation of the Denso Gen2/3 start of the c and h files for the dummy core definition files. """ self.core_dummy._gen_dg2_header('testfile') h_result = self.core_dummy.fh_h.getvalue() c_result = self.core_dummy.fh_c.getvalue() self.assertEqual(h_result, core_dummy_cnfg.DG2_HEADER_H) self.assertEqual(c_result, core_dummy_cnfg.DG2_HEADER_C_TL) def test_gen_dg2_event_dummies(self): """Test generation of the Denso Gen2+ dummy event declarations.""" self.core_dummy._gen_dg2_event_dummies() h_result = self.core_dummy.fh_h.getvalue() c_result = self.core_dummy.fh_c.getvalue() self.assertEqual(h_result, core_dummy_cnfg.DG2_EVENT_H) self.assertEqual(c_result, core_dummy_cnfg.DG2_EVENT_C) def test_gen_dg2_fid_dummies(self): """Test generation of the Denso Gen2+ dummy function id declarations.""" self.core_dummy._gen_dg2_fid_dummies() h_result = self.core_dummy.fh_h.getvalue() c_result = self.core_dummy.fh_c.getvalue() self.assertEqual(h_result, core_dummy_cnfg.DG2_FID_H) self.assertEqual(c_result, core_dummy_cnfg.DG2_FID_C) def test_gen_dg2_iumpr_dummies(self): """Test generation of the Denso Gen2+ dummy IUMPR declarations.""" self.core_dummy._gen_dg2_iumpr_dummies() h_result = self.core_dummy.fh_h.getvalue() c_result = self.core_dummy.fh_c.getvalue() self.assertEqual(h_result, core_dummy_cnfg.DG2_IUMPR_H_TL) self.assertEqual(c_result, core_dummy_cnfg.DG2_IUMPR_C_TL) def test_gen_dg2_mode06_dummies(self): """Test generation of the Denso Gen2+ dummy mode$06 declarations.""" self.core_dummy._gen_dg2_mode06_dummies() h_result = self.core_dummy.fh_h.getvalue() c_result = self.core_dummy.fh_c.getvalue() self.assertEqual(h_result, core_dummy_cnfg.DG2_MODE06_H_TL) self.assertEqual(c_result, core_dummy_cnfg.DG2_MODE06_C_TL) def test_gen_dg2_rnk_dummies(self): """Test generation of the Denso Gen2+ dummy ranking declarations.""" self.core_dummy._gen_dg2_rnk_dummies() h_result = self.core_dummy.fh_h.getvalue() c_result = self.core_dummy.fh_c.getvalue() self.assertEqual(h_result, core_dummy_cnfg.DG2_RNK_H_TL) self.assertEqual(c_result, core_dummy_cnfg.DG2_RNK_C_TL) def test_gen_dg2_end(self): """Test generation of the Denso Gen2+ end of the c and h files for the dummy core definition files. """ self.core_dummy._gen_dg2_end('testfile') h_result = self.core_dummy.fh_h.getvalue() c_result = self.core_dummy.fh_c.getvalue() self.assertEqual(h_result, core_dummy_cnfg.DG2_END_H) self.assertEqual(c_result, core_dummy_cnfg.DG2_END_C) def test_generate_dg2_core_dummy_files(self): """Test generation of Denso dummy files.""" result = [] mopen = mock_open() mopen.return_value.write = result.append with patch('builtins.open', mopen, create=True): self.core_dummy.generate_dg2_core_dummy_files('testfile') self.assertEqual(result[0], '/* Autogenerated core id dummy file */\n\n') self.assertEqual(result[-2], ' END OF FILE\n') def test_generate_dg2_core_dummy_files_empty(self): """Test generation of Denso dummy files with empty indata.""" result = [] mopen = mock_open() mopen.return_value.write = result.append with patch('builtins.open', mopen, create=True): core_dummy = CoreDummy({}, self.unit_cfg) core_dummy.generate_dg2_core_dummy_files('testfile') self.assertEqual(result[0], '/* Autogenerated core id dummy file */\n\n') self.assertEqual(result[-2], ' END OF FILE\n') class TestCoreDummyMixed(TestCoreDummyTL): """Test case for testing the FeatureConfigs class.""" def setUp(self): """Set-up common data structures for all tests in the test case.""" self.unit_cfg = MagicMock(spec_set=UnitConfigs) type(self.unit_cfg).base_types_headers = '#include "rtwtypes.h"\n#include "tl_basetypes.h"\n' type(self.unit_cfg).code_generators = {'target_link', 'embedded_coder'} self.core_dummy = CoreDummy(CORE_CFG['CFG1'], self.unit_cfg) self.core_dummy.fh_h = io.StringIO() self.core_dummy.fh_c = io.StringIO() def test_gen_dg2_header(self): """Test generation of the Denso Gen2/3 start of the c and h files for the dummy core definition files. """ self.core_dummy._gen_dg2_header('testfile') h_result = self.core_dummy.fh_h.getvalue() c_result = self.core_dummy.fh_c.getvalue() self.assertEqual(h_result, core_dummy_cnfg.DG2_HEADER_H) self.assertEqual(c_result, core_dummy_cnfg.DG2_HEADER_C_MIXED) def test_gen_rb_header(self): """Test generation of the RB start of the c and h files for the dummy core definition files. """ self.core_dummy._gen_rb_header('TESTFILE.h') h_result = self.core_dummy.fh_h.getvalue() c_result = self.core_dummy.fh_c.getvalue() self.assertEqual(h_result, core_dummy_cnfg.RB_HEADER_H_MIXED) self.assertEqual(c_result, core_dummy_cnfg.RB_HEADER_C) class TestCoreDummyEC(unittest.TestCase): """Test case for testing the FeatureConfigs class.""" def setUp(self): """Set-up common data structures for all tests in the test case.""" self.unit_cfg = MagicMock(spec_set=UnitConfigs) type(self.unit_cfg).base_types_headers = '#include "rtwtypes.h"\n' type(self.unit_cfg).code_generators = {'embedded_coder'} self.core_dummy = CoreDummy(CORE_CFG['CFG1'], self.unit_cfg) self.core_dummy.fh_h = io.StringIO() self.core_dummy.fh_c = io.StringIO() def tearDown(self): """Tear down common data structures for all tests in the test case.""" self.core_dummy.fh_h.close() self.core_dummy.fh_h = None self.core_dummy.fh_c.close() self.core_dummy.fh_c = None def test_gen_rb_header(self): """Test generation of the RB start of the c and h files for the dummy core definition files. """ self.core_dummy._gen_rb_header('TESTFILE.h') h_result = self.core_dummy.fh_h.getvalue() c_result = self.core_dummy.fh_c.getvalue() self.assertEqual(h_result, core_dummy_cnfg.RB_HEADER_H_EC) self.assertEqual(c_result, core_dummy_cnfg.RB_HEADER_C) def test_gen_rb_event_dummies(self): """Test generation of the RB dummy event declarations.""" self.core_dummy._gen_rb_event_dummies() h_result = self.core_dummy.fh_h.getvalue() c_result = self.core_dummy.fh_c.getvalue() self.assertEqual(h_result, core_dummy_cnfg.RB_EVENT_H) self.assertEqual(c_result, core_dummy_cnfg.RB_EVENT_C) def test_gen_rb_fid_dummies(self): """Test generation of the RB dummy function id declarations.""" self.core_dummy._gen_rb_fid_dummies() h_result = self.core_dummy.fh_h.getvalue() c_result = self.core_dummy.fh_c.getvalue() self.assertEqual(h_result, core_dummy_cnfg.RB_FID_H) self.assertEqual(c_result, core_dummy_cnfg.RB_FID_C) def test_gen_rb_iumpr_dummies(self): """Test generation of the RB dummy IUMPR declarations.""" self.core_dummy._gen_rb_iumpr_dummies() h_result = self.core_dummy.fh_h.getvalue() c_result = self.core_dummy.fh_c.getvalue() self.assertEqual(h_result, core_dummy_cnfg.RB_IUMPR_H) self.assertEqual(c_result, core_dummy_cnfg.RB_IUMPR_C) def test_gen_rb_mode06_dummies(self): """Generate the RB dummy mode$06 declarations.""" self.core_dummy._gen_rb_mode06_dummies() h_result = self.core_dummy.fh_h.getvalue() c_result = self.core_dummy.fh_c.getvalue() self.assertEqual(h_result, core_dummy_cnfg.RB_MODE06_H) self.assertEqual(c_result, core_dummy_cnfg.RB_MODE06_C) def test_gen_rb_rnk_dummies(self): """Test generation of the RB dummy ranking declarations.""" self.core_dummy._gen_rb_rnk_dummies() h_result = self.core_dummy.fh_h.getvalue() c_result = self.core_dummy.fh_c.getvalue() self.assertEqual(h_result, core_dummy_cnfg.RB_RNK_H_EC) self.assertEqual(c_result, core_dummy_cnfg.RB_RNK_C_EC) def test_gen_rb_end(self): """Test generation of the RB end of the c and h files for the dummy core definition files. """ self.core_dummy._gen_rb_end('testfile') h_result = self.core_dummy.fh_h.getvalue() c_result = self.core_dummy.fh_c.getvalue() self.assertEqual(h_result, core_dummy_cnfg.RB_END_H) self.assertEqual(c_result, core_dummy_cnfg.RB_END_C) def test_generate_rb_core_dummy_files(self): """Test generation of RB dummy files.""" result = [] mopen = mock_open() mopen.return_value.write = result.append with patch('builtins.open', mopen, create=True): self.core_dummy.generate_rb_core_dummy_files('testfile') self.assertEqual(result[0], '/* Autogenerated core id dummy file */\n\n') self.assertEqual(result[-2], ' END OF FILE\n') def test_generate_rb_core_dummy_files_empty(self): """Test generation of RB dummy files with empty indata.""" result = [] mopen = mock_open() mopen.return_value.write = result.append with patch('builtins.open', mopen, create=True): core_dummy = CoreDummy({}, self.unit_cfg) core_dummy.generate_rb_core_dummy_files('testfile') self.assertEqual(result[0], '/* Autogenerated core id dummy file */\n\n') self.assertEqual(result[-2], ' END OF FILE\n') def test_gen_dg2_header(self): """Test generation of the Denso Gen2/3 start of the c and h files for the dummy core definition files. """ self.core_dummy._gen_dg2_header('testfile') h_result = self.core_dummy.fh_h.getvalue() c_result = self.core_dummy.fh_c.getvalue() self.assertEqual(h_result, core_dummy_cnfg.DG2_HEADER_H) self.assertEqual(c_result, core_dummy_cnfg.DG2_HEADER_C_EC) def test_gen_dg2_event_dummies(self): """Test generation of the Denso Gen2+ dummy event declarations.""" self.core_dummy._gen_dg2_event_dummies() h_result = self.core_dummy.fh_h.getvalue() c_result = self.core_dummy.fh_c.getvalue() self.assertEqual(h_result, core_dummy_cnfg.DG2_EVENT_H) self.assertEqual(c_result, core_dummy_cnfg.DG2_EVENT_C) def test_gen_dg2_fid_dummies(self): """Test generation of the Denso Gen2+ dummy function id declarations.""" self.core_dummy._gen_dg2_fid_dummies() h_result = self.core_dummy.fh_h.getvalue() c_result = self.core_dummy.fh_c.getvalue() self.assertEqual(h_result, core_dummy_cnfg.DG2_FID_H) self.assertEqual(c_result, core_dummy_cnfg.DG2_FID_C) def test_gen_dg2_iumpr_dummies(self): """Test generation of the Denso Gen2+ dummy IUMPR declarations.""" self.core_dummy._gen_dg2_iumpr_dummies() h_result = self.core_dummy.fh_h.getvalue() c_result = self.core_dummy.fh_c.getvalue() self.assertEqual(h_result, core_dummy_cnfg.DG2_IUMPR_H_EC) self.assertEqual(c_result, core_dummy_cnfg.DG2_IUMPR_C_EC) def test_gen_dg2_mode06_dummies(self): """Test generation of the Denso Gen2+ dummy mode$06 declarations.""" self.core_dummy._gen_dg2_mode06_dummies() h_result = self.core_dummy.fh_h.getvalue() c_result = self.core_dummy.fh_c.getvalue() self.assertEqual(h_result, core_dummy_cnfg.DG2_MODE06_H_EC) self.assertEqual(c_result, core_dummy_cnfg.DG2_MODE06_C_EC) def test_gen_dg2_rnk_dummies(self): """Test generation of the Denso Gen2+ dummy ranking declarations.""" self.core_dummy._gen_dg2_rnk_dummies() h_result = self.core_dummy.fh_h.getvalue() c_result = self.core_dummy.fh_c.getvalue() self.assertEqual(h_result, core_dummy_cnfg.DG2_RNK_H_EC) self.assertEqual(c_result, core_dummy_cnfg.DG2_RNK_C_EC) def test_gen_dg2_end(self): """Test generation of the Denso Gen2+ end of the c and h files for the dummy core definition files. """ self.core_dummy._gen_dg2_end('testfile') h_result = self.core_dummy.fh_h.getvalue() c_result = self.core_dummy.fh_c.getvalue() self.assertEqual(h_result, core_dummy_cnfg.DG2_END_H) self.assertEqual(c_result, core_dummy_cnfg.DG2_END_C) def test_generate_dg2_core_dummy_files(self): """Test generation of Denso dummy files.""" result = [] mopen = mock_open() mopen.return_value.write = result.append with patch('builtins.open', mopen, create=True): self.core_dummy.generate_dg2_core_dummy_files('testfile') self.assertEqual(result[0], '/* Autogenerated core id dummy file */\n\n') self.assertEqual(result[-2], ' END OF FILE\n') def test_generate_dg2_core_dummy_files_empty(self): """Test generation of Denso dummy files with empty indata.""" result = [] mopen = mock_open() mopen.return_value.write = result.append with patch('builtins.open', mopen, create=True): core_dummy = CoreDummy({}, self.unit_cfg) core_dummy.generate_dg2_core_dummy_files('testfile') self.assertEqual(result[0], '/* Autogenerated core id dummy file */\n\n') self.assertEqual(result[-2], ' END OF FILE\n')