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

15 statements  

« prev     ^ index     » next       coverage.py v7.6.1, created at 2024-09-07 20:51 +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 

17# Third party libraries 

18import pytest 

19from tsfpga.system_utils import read_file 

20 

21# First party libraries 

22from hdl_registers import HDL_REGISTERS_TESTS 

23from hdl_registers.generator.cpp.interface import CppInterfaceGenerator 

24from hdl_registers.parser.toml import from_toml 

25 

26 

27@pytest.fixture 

28def cpp_test_toml_code(tmp_path): 

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

30 

31 return read_file( 

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

33 ) 

34 

35 

36# False positive for pytest fixtures 

37# pylint: disable=redefined-outer-name 

38 

39 

40def test_read_only_register_has_no_setters(cpp_test_toml_code): 

41 assert "get_status" in cpp_test_toml_code 

42 assert "set_status" not in cpp_test_toml_code 

43 

44 

45def test_write_only_register_has_no_setters(cpp_test_toml_code): 

46 assert "set_command" in cpp_test_toml_code 

47 assert "get_command" not in cpp_test_toml_code