411 lines
18 KiB
Python
411 lines
18 KiB
Python
# 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')
|