79 lines
1.6 KiB
Python
79 lines
1.6 KiB
Python
from typing import (
|
|
Optional,
|
|
Tuple,
|
|
)
|
|
|
|
import pytest
|
|
|
|
import aristaproto
|
|
|
|
|
|
class Colour(aristaproto.Enum):
|
|
RED = 1
|
|
GREEN = 2
|
|
BLUE = 3
|
|
|
|
|
|
PURPLE = Colour.__new__(Colour, name=None, value=4)
|
|
|
|
|
|
@pytest.mark.parametrize(
|
|
"member, str_value",
|
|
[
|
|
(Colour.RED, "RED"),
|
|
(Colour.GREEN, "GREEN"),
|
|
(Colour.BLUE, "BLUE"),
|
|
],
|
|
)
|
|
def test_str(member: Colour, str_value: str) -> None:
|
|
assert str(member) == str_value
|
|
|
|
|
|
@pytest.mark.parametrize(
|
|
"member, repr_value",
|
|
[
|
|
(Colour.RED, "Colour.RED"),
|
|
(Colour.GREEN, "Colour.GREEN"),
|
|
(Colour.BLUE, "Colour.BLUE"),
|
|
],
|
|
)
|
|
def test_repr(member: Colour, repr_value: str) -> None:
|
|
assert repr(member) == repr_value
|
|
|
|
|
|
@pytest.mark.parametrize(
|
|
"member, values",
|
|
[
|
|
(Colour.RED, ("RED", 1)),
|
|
(Colour.GREEN, ("GREEN", 2)),
|
|
(Colour.BLUE, ("BLUE", 3)),
|
|
(PURPLE, (None, 4)),
|
|
],
|
|
)
|
|
def test_name_values(member: Colour, values: Tuple[Optional[str], int]) -> None:
|
|
assert (member.name, member.value) == values
|
|
|
|
|
|
@pytest.mark.parametrize(
|
|
"member, input_str",
|
|
[
|
|
(Colour.RED, "RED"),
|
|
(Colour.GREEN, "GREEN"),
|
|
(Colour.BLUE, "BLUE"),
|
|
],
|
|
)
|
|
def test_from_string(member: Colour, input_str: str) -> None:
|
|
assert Colour.from_string(input_str) == member
|
|
|
|
|
|
@pytest.mark.parametrize(
|
|
"member, input_int",
|
|
[
|
|
(Colour.RED, 1),
|
|
(Colour.GREEN, 2),
|
|
(Colour.BLUE, 3),
|
|
(PURPLE, 4),
|
|
],
|
|
)
|
|
def test_try_value(member: Colour, input_int: int) -> None:
|
|
assert Colour.try_value(input_int) == member
|