Files
powertrain-build/tests/powertrain_build/test_core_dummy.py
olindgre 2ece01e1d7 Make powertrain-build not overlap with pybuild in site-packages
Change-Id: I7b59f3f04f0f787d35db0b9389f295bf1ad24f56
2024-09-17 10:25:04 +02:00

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')