Coverage for tsfpga/vivado/test/test_build_result_checker.py: 100%
36 statements
« prev ^ index » next coverage.py v7.2.1, created at 2023-09-27 20:00 +0000
« prev ^ index » next coverage.py v7.2.1, created at 2023-09-27 20:00 +0000
1# --------------------------------------------------------------------------------------------------
2# Copyright (c) Lukas Vik. All rights reserved.
3#
4# This file is part of the tsfpga project, a project platform for modern FPGA development.
5# https://tsfpga.com
6# https://gitlab.com/tsfpga/tsfpga
7# --------------------------------------------------------------------------------------------------
9# Standard libraries
10import io
11from unittest.mock import MagicMock, patch
13# First party libraries
14from tsfpga.vivado.build_result import BuildResult as build_result_spec
15from tsfpga.vivado.build_result_checker import (
16 DspBlocks,
17 EqualTo,
18 LessThan,
19 MaximumLogicLevel,
20 TotalLuts,
21)
24@patch("sys.stdout", new_callable=io.StringIO)
25def test_size_checker_less_than_pass(mock_stdout):
26 build_result = MagicMock(spec=build_result_spec)
27 build_result.synthesis_size = {"Total LUTs": 5}
28 assert TotalLuts(LessThan(10)).check(build_result)
29 assert mock_stdout.getvalue() == "Result check passed for Total LUTs: 5 (< 10)\n"
32@patch("sys.stdout", new_callable=io.StringIO)
33def test_size_checker_equal_to_fail(mock_stdout):
34 build_result = MagicMock(spec=build_result_spec)
35 build_result.synthesis_size = {"Total LUTs": 5}
36 assert not TotalLuts(EqualTo(50)).check(build_result)
37 assert mock_stdout.getvalue() == "Result check failed for Total LUTs. Got 5, expected 50.\n"
40def test_size_checker_dsp_blocks_has_two_names():
41 build_result = MagicMock(spec=build_result_spec)
43 build_result.synthesis_size = {"DSP Blocks": 5}
45 assert DspBlocks(EqualTo(5)).check(build_result)
46 assert not DspBlocks(EqualTo(2)).check(build_result)
48 build_result.synthesis_size = {"DSP48 Blocks": 7}
50 assert DspBlocks(EqualTo(7)).check(build_result)
51 assert not DspBlocks(EqualTo(2)).check(build_result)
54@patch("sys.stdout", new_callable=io.StringIO)
55def test_logic_level_checker_equal_to_pass(mock_stdout):
56 build_result = MagicMock(spec=build_result_spec)
57 build_result.maximum_logic_level = 5
58 assert MaximumLogicLevel(EqualTo(5)).check(build_result)
59 assert mock_stdout.getvalue() == "Result check passed for maximum logic level: 5 (5)\n"
62@patch("sys.stdout", new_callable=io.StringIO)
63def test_logic_level_checker_less_than_fail(mock_stdout):
64 build_result = MagicMock(spec=build_result_spec)
65 build_result.maximum_logic_level = 11
66 assert not MaximumLogicLevel(LessThan(7)).check(build_result)
67 assert (
68 mock_stdout.getvalue()
69 == "Result check failed for maximum logic level. Got 11, expected < 7.\n"
70 )