Coverage for hdl_registers/generator/cpp/test/test_register_cpp_generator.py: 100%

15 statements  

« prev     ^ index     » next       coverage.py v7.6.12, created at 2025-03-12 11:11 +0000

1# -------------------------------------------------------------------------------------------------- 

2# Copyright (c) Lukas Vik. All rights reserved. 

3# 

4# This file is part of the hdl-registers project, an HDL register generator fast enough to run 

5# in real time. 

6# https://hdl-registers.com 

7# https://github.com/hdl-registers/hdl-registers 

8# -------------------------------------------------------------------------------------------------- 

9 

10# Some limited unit tests that check the generated code. 

11# Note that the generated C++ code is also functionally tested in the 

12# file 'test_compiled_cpp_code.py'. 

13# That test generates C++ code from an example register set, compiles it and performs some 

14# run-time assertions in a C program. 

15# That test is considered more meaningful and exhaustive than a unit test would be. 

16 

17import pytest 

18from tsfpga.system_utils import read_file 

19 

20from hdl_registers import HDL_REGISTERS_TESTS 

21from hdl_registers.generator.cpp.interface import CppInterfaceGenerator 

22from hdl_registers.parser.toml import from_toml 

23 

24 

25@pytest.fixture 

26def cpp_test_toml_code(tmp_path): 

27 registers = from_toml("test", HDL_REGISTERS_TESTS / "regs_test.toml") 

28 

29 return read_file( 

30 CppInterfaceGenerator(register_list=registers, output_folder=tmp_path).create() 

31 ) 

32 

33 

34def test_read_only_register_has_no_setters(cpp_test_toml_code): 

35 assert "get_status" in cpp_test_toml_code 

36 assert "set_status" not in cpp_test_toml_code 

37 

38 

39def test_write_only_register_has_no_setters(cpp_test_toml_code): 

40 assert "set_command" in cpp_test_toml_code 

41 assert "get_command" not in cpp_test_toml_code