Coverage for tests / unit / enums / test_base.py: 100%

49 statements  

« prev     ^ index     » next       coverage.py v7.13.0, created at 2026-04-03 18:53 +0000

1"""Tests for base StrEnum utility classes.""" 

2 

3from __future__ import annotations 

4 

5from enum import auto 

6 

7from assertpy import assert_that 

8 

9from lintro.enums.hyphenated_str_enum import HyphenatedStrEnum 

10from lintro.enums.uppercase_str_enum import UppercaseStrEnum 

11 

12 

13def test_upper_case_str_enum_single_word() -> None: 

14 """UppercaseStrEnum produces uppercase values for single-word members.""" 

15 

16 class TestEnum(UppercaseStrEnum): 

17 HEAD = auto() 

18 MAIN = auto() 

19 MASTER = auto() 

20 

21 assert_that(TestEnum.HEAD.value).is_equal_to("HEAD") 

22 assert_that(TestEnum.MAIN.value).is_equal_to("MAIN") 

23 assert_that(TestEnum.MASTER.value).is_equal_to("MASTER") 

24 

25 

26def test_upper_case_str_enum_with_underscores() -> None: 

27 """UppercaseStrEnum produces uppercase values preserving underscores.""" 

28 

29 class TestEnum(UppercaseStrEnum): 

30 REV_PARSE = auto() 

31 GIT_COMMAND = auto() 

32 

33 assert_that(TestEnum.REV_PARSE.value).is_equal_to("REV_PARSE") 

34 assert_that(TestEnum.GIT_COMMAND.value).is_equal_to("GIT_COMMAND") 

35 

36 

37def test_hyphenated_str_enum_single_word() -> None: 

38 """HyphenatedStrEnum produces lowercase values for single-word members.""" 

39 

40 class TestEnum(HyphenatedStrEnum): 

41 DESCRIBE = auto() 

42 LOG = auto() 

43 STATUS = auto() 

44 

45 assert_that(TestEnum.DESCRIBE.value).is_equal_to("describe") 

46 assert_that(TestEnum.LOG.value).is_equal_to("log") 

47 assert_that(TestEnum.STATUS.value).is_equal_to("status") 

48 

49 

50def test_hyphenated_str_enum_with_underscores() -> None: 

51 """HyphenatedStrEnum converts underscores to hyphens.""" 

52 

53 class TestEnum(HyphenatedStrEnum): 

54 REV_PARSE = auto() 

55 GIT_COMMAND = auto() 

56 MULTI_WORD_NAME = auto() 

57 

58 assert_that(TestEnum.REV_PARSE.value).is_equal_to("rev-parse") 

59 assert_that(TestEnum.GIT_COMMAND.value).is_equal_to("git-command") 

60 assert_that(TestEnum.MULTI_WORD_NAME.value).is_equal_to("multi-word-name") 

61 

62 

63def test_hyphenated_str_enum_multiple_underscores() -> None: 

64 """HyphenatedStrEnum handles multiple consecutive underscores correctly.""" 

65 

66 class TestEnum(HyphenatedStrEnum): 

67 A_B_C = auto() 

68 MULTI__UNDERSCORE = auto() 

69 

70 assert_that(TestEnum.A_B_C.value).is_equal_to("a-b-c") 

71 assert_that(TestEnum.MULTI__UNDERSCORE.value).is_equal_to("multi--underscore") 

72 

73 

74def test_git_ref_enum_uses_upper_case() -> None: 

75 """GitRef enum correctly uses UppercaseStrEnum to produce uppercase values.""" 

76 from lintro.enums.git_ref import GitRef 

77 

78 assert_that(GitRef.HEAD.value).is_equal_to("HEAD") 

79 

80 

81def test_git_command_enum_uses_hyphenated() -> None: 

82 """GitCommand enum correctly uses HyphenatedStrEnum to produce hyphenated values.""" 

83 from lintro.enums.git_command import GitCommand 

84 

85 assert_that(GitCommand.DESCRIBE.value).is_equal_to("describe") 

86 assert_that(GitCommand.REV_PARSE.value).is_equal_to("rev-parse") 

87 assert_that(GitCommand.LOG.value).is_equal_to("log")