Coverage for tsfpga/test/test_math_utils.py: 100%
99 statements
« prev ^ index » next coverage.py v7.6.12, created at 2025-02-21 20:51 +0000
« prev ^ index » next coverage.py v7.6.12, created at 2025-02-21 20:51 +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://github.com/tsfpga/tsfpga
7# --------------------------------------------------------------------------------------------------
9import pytest
11from tsfpga.math_utils import (
12 to_binary_nibble_string,
13 to_binary_string,
14 to_hex_byte_string,
15 to_hex_string,
16)
19def test_to_binary_string():
20 assert to_binary_string(value=0, result_width=1) == "0"
21 assert to_binary_string(value=1, result_width=1) == "1"
22 assert to_binary_string(value=2, result_width=3) == "010"
23 assert to_binary_string(value=15, result_width=4) == "1111"
24 assert to_binary_string(value=0, result_width=5) == "00000"
27def test_to_binary_string_width_out_of_range_should_raise_exception():
28 with pytest.raises(ValueError) as exception_info:
29 to_binary_string(value=15, result_width=0)
30 assert str(exception_info.value) == 'Invalid result width "0".'
32 with pytest.raises(ValueError) as exception_info:
33 to_binary_string(value=-7, result_width=-3)
34 assert str(exception_info.value) == 'Invalid result width "-3".'
37def test_to_binary_string_value_out_of_range_should_raise_exception():
38 with pytest.raises(ValueError) as exception_info:
39 to_binary_string(value=15, result_width=3)
40 assert str(exception_info.value) == 'Value "15" out of 3-bit range.'
42 with pytest.raises(ValueError) as exception_info:
43 to_binary_string(value=-7, result_width=10)
44 assert str(exception_info.value) == 'Value "-7" out of 10-bit range.'
47def test_to_binary_nibble_string():
48 assert to_binary_nibble_string(value=0, result_width_bits=1) == "0"
49 assert to_binary_nibble_string(value=1, result_width_bits=1) == "1"
51 assert to_binary_nibble_string(value=2, result_width_bits=3) == "010"
52 assert to_binary_nibble_string(value=7, result_width_bits=3) == "111"
54 assert to_binary_nibble_string(value=15, result_width_bits=4) == "1111"
56 assert to_binary_nibble_string(value=0, result_width_bits=5) == "0_0000"
57 assert to_binary_nibble_string(value=16, result_width_bits=5) == "1_0000"
59 assert to_binary_nibble_string(value=265, result_width_bits=9) == "1_0000_1001"
60 assert to_binary_nibble_string(value=565, result_width_bits=10) == "10_0011_0101"
61 assert to_binary_nibble_string(value=565, result_width_bits=12) == "0010_0011_0101"
62 assert to_binary_nibble_string(value=2345, result_width_bits=12) == "1001_0010_1001"
64 assert to_binary_nibble_string(value=5345, result_width_bits=13) == "1_0100_1110_0001"
67def test_to_binary_nibble_string_width_out_of_range_should_raise_exception():
68 with pytest.raises(ValueError) as exception_info:
69 to_binary_nibble_string(value=15, result_width_bits=0)
70 assert str(exception_info.value) == 'Invalid result width "0".'
72 with pytest.raises(ValueError) as exception_info:
73 to_binary_nibble_string(value=-7, result_width_bits=-3)
74 assert str(exception_info.value) == 'Invalid result width "-3".'
77def test_to_binary_nibble_string_value_out_of_range_should_raise_exception():
78 with pytest.raises(ValueError) as exception_info:
79 to_binary_nibble_string(value=15, result_width_bits=3)
80 assert str(exception_info.value) == 'Value "15" out of 3-bit range.'
82 with pytest.raises(ValueError) as exception_info:
83 to_binary_nibble_string(value=-7, result_width_bits=10)
84 assert str(exception_info.value) == 'Value "-7" out of 10-bit range.'
87def test_to_hex_string():
88 assert to_hex_string(value=0, result_width_bits=1) == "0"
89 assert to_hex_string(value=1, result_width_bits=1) == "1"
90 assert to_hex_string(value=2, result_width_bits=3) == "2"
91 assert to_hex_string(value=2, result_width_bits=4) == "2"
92 assert to_hex_string(value=2, result_width_bits=5) == "02"
93 assert to_hex_string(value=15, result_width_bits=4) == "F"
94 assert to_hex_string(value=0, result_width_bits=5) == "00"
97def test_to_hex_string_width_out_of_range_should_raise_exception():
98 with pytest.raises(ValueError) as exception_info:
99 to_hex_string(value=15, result_width_bits=0)
100 assert str(exception_info.value) == 'Invalid result width "0".'
102 with pytest.raises(ValueError) as exception_info:
103 to_hex_string(value=-7, result_width_bits=-3)
104 assert str(exception_info.value) == 'Invalid result width "-3".'
107def test_to_hex_string_value_out_of_range_should_raise_exception():
108 with pytest.raises(ValueError) as exception_info:
109 to_hex_string(value=15, result_width_bits=3)
110 assert str(exception_info.value) == 'Value "15" out of 3-bit range.'
112 with pytest.raises(ValueError) as exception_info:
113 to_hex_string(value=-7, result_width_bits=10)
114 assert str(exception_info.value) == 'Value "-7" out of 10-bit range.'
117def test_to_hex_byte_string():
118 assert to_hex_byte_string(value=0, result_width_bits=1) == "0"
119 assert to_hex_byte_string(value=1, result_width_bits=1) == "1"
121 assert to_hex_byte_string(value=2, result_width_bits=3) == "2"
122 assert to_hex_byte_string(value=7, result_width_bits=3) == "7"
124 assert to_hex_byte_string(value=15, result_width_bits=4) == "F"
126 assert to_hex_byte_string(value=0, result_width_bits=5) == "00"
127 assert to_hex_byte_string(value=15, result_width_bits=5) == "0F"
128 assert to_hex_byte_string(value=16, result_width_bits=5) == "10"
130 assert to_hex_byte_string(value=265, result_width_bits=9) == "1_09"
131 assert to_hex_byte_string(value=565, result_width_bits=10) == "2_35"
132 assert to_hex_byte_string(value=565, result_width_bits=12) == "2_35"
133 assert to_hex_byte_string(value=2345, result_width_bits=12) == "9_29"
135 assert to_hex_byte_string(value=5345, result_width_bits=13) == "14_E1"
138def test_to_hex_byte_string_width_out_of_range_should_raise_exception():
139 with pytest.raises(ValueError) as exception_info:
140 to_hex_byte_string(value=15, result_width_bits=0)
141 assert str(exception_info.value) == 'Invalid result width "0".'
143 with pytest.raises(ValueError) as exception_info:
144 to_hex_byte_string(value=-7, result_width_bits=-3)
145 assert str(exception_info.value) == 'Invalid result width "-3".'
148def test_to_hex_byte_string_value_out_of_range_should_raise_exception():
149 with pytest.raises(ValueError) as exception_info:
150 to_hex_byte_string(value=15, result_width_bits=3)
151 assert str(exception_info.value) == 'Value "15" out of 3-bit range.'
153 with pytest.raises(ValueError) as exception_info:
154 to_hex_byte_string(value=-7, result_width_bits=10)
155 assert str(exception_info.value) == 'Value "-7" out of 10-bit range.'