Coverage for hdl_registers/test/test_register_mode.py: 100%

28 statements  

« prev     ^ index     » next       coverage.py v7.9.1, created at 2025-06-20 20:52 +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 

10from hdl_registers.register_mode import ( 

11 HardwareAccessDirection, 

12 RegisterMode, 

13 SoftwareAccessDirection, 

14) 

15 

16 

17def test_repr(): 

18 assert ( 

19 repr( 

20 RegisterMode( 

21 shorthand="a", 

22 name="b", 

23 description="c", 

24 software_can_read=False, 

25 software_can_write=False, 

26 hardware_has_up=False, 

27 ) 

28 ) 

29 == "RegisterMode(shorthand=a)" 

30 ) 

31 

32 

33def test_software_access_direction(): 

34 register_mode = RegisterMode( 

35 shorthand="a", 

36 name="b", 

37 description="c", 

38 software_can_read=True, 

39 software_can_write=False, 

40 hardware_has_up=False, 

41 ) 

42 

43 assert register_mode.is_software_accessible(SoftwareAccessDirection.READ) 

44 assert not register_mode.is_software_accessible(SoftwareAccessDirection.WRITE) 

45 

46 

47def test_hardware_access_direction(): 

48 register_mode = RegisterMode( 

49 shorthand="a", 

50 name="b", 

51 description="c", 

52 software_can_read=True, 

53 software_can_write=False, 

54 hardware_has_up=True, 

55 ) 

56 

57 assert register_mode.is_hardware_accessible(HardwareAccessDirection.UP) 

58 assert not register_mode.is_software_accessible(HardwareAccessDirection.DOWN) 

59 

60 register_mode = RegisterMode( 

61 shorthand="a", 

62 name="b", 

63 description="c", 

64 software_can_read=True, 

65 software_can_write=True, 

66 hardware_has_up=False, 

67 ) 

68 

69 assert not register_mode.is_hardware_accessible(HardwareAccessDirection.UP) 

70 assert register_mode.is_software_accessible(HardwareAccessDirection.DOWN) 

71 

72 

73def test_repr_str_eq_hash(): 

74 def get_mode(shorthand: str) -> RegisterMode: 

75 return RegisterMode( 

76 shorthand=shorthand, 

77 name="b", 

78 description="c", 

79 software_can_read=True, 

80 software_can_write=False, 

81 hardware_has_up=False, 

82 ) 

83 

84 register_mode_a = get_mode("a") 

85 register_mode_b = get_mode("a") 

86 register_mode_c = get_mode("c") 

87 

88 assert repr(register_mode_a) == "RegisterMode(shorthand=a)" 

89 assert repr(register_mode_a) == repr(register_mode_b) 

90 assert repr(register_mode_a) != repr(register_mode_c) 

91 

92 assert str(register_mode_a) == repr(register_mode_a) 

93 

94 assert register_mode_a == register_mode_b 

95 assert register_mode_a != register_mode_c 

96 

97 assert hash(register_mode_a) == hash(register_mode_b) 

98 assert hash(register_mode_a) != hash(register_mode_c)