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
« prev ^ index » next coverage.py v7.13.0, created at 2026-04-03 18:53 +0000
1"""Tests for base StrEnum utility classes."""
3from __future__ import annotations
5from enum import auto
7from assertpy import assert_that
9from lintro.enums.hyphenated_str_enum import HyphenatedStrEnum
10from lintro.enums.uppercase_str_enum import UppercaseStrEnum
13def test_upper_case_str_enum_single_word() -> None:
14 """UppercaseStrEnum produces uppercase values for single-word members."""
16 class TestEnum(UppercaseStrEnum):
17 HEAD = auto()
18 MAIN = auto()
19 MASTER = auto()
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")
26def test_upper_case_str_enum_with_underscores() -> None:
27 """UppercaseStrEnum produces uppercase values preserving underscores."""
29 class TestEnum(UppercaseStrEnum):
30 REV_PARSE = auto()
31 GIT_COMMAND = auto()
33 assert_that(TestEnum.REV_PARSE.value).is_equal_to("REV_PARSE")
34 assert_that(TestEnum.GIT_COMMAND.value).is_equal_to("GIT_COMMAND")
37def test_hyphenated_str_enum_single_word() -> None:
38 """HyphenatedStrEnum produces lowercase values for single-word members."""
40 class TestEnum(HyphenatedStrEnum):
41 DESCRIBE = auto()
42 LOG = auto()
43 STATUS = auto()
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")
50def test_hyphenated_str_enum_with_underscores() -> None:
51 """HyphenatedStrEnum converts underscores to hyphens."""
53 class TestEnum(HyphenatedStrEnum):
54 REV_PARSE = auto()
55 GIT_COMMAND = auto()
56 MULTI_WORD_NAME = auto()
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")
63def test_hyphenated_str_enum_multiple_underscores() -> None:
64 """HyphenatedStrEnum handles multiple consecutive underscores correctly."""
66 class TestEnum(HyphenatedStrEnum):
67 A_B_C = auto()
68 MULTI__UNDERSCORE = auto()
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")
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
78 assert_that(GitRef.HEAD.value).is_equal_to("HEAD")
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
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")