Repository navigation
Expand file tree
/
Copy pathtest_enums.py
More file actions
104 lines (93 loc) · 3.91 KB
/
Copy pathtest_enums.py
File metadata and controls
104 lines (93 loc) · 3.91 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
"""Tests the enums module."""
from collections.abc import Callable
import pytest
from ratapi.utils.enums import (
BackgroundActions,
BoundHandling,
Calculations,
Display,
Geometries,
Hydration,
Languages,
LayerModels,
Parallel,
Priors,
Procedures,
RATEnum,
Strategies,
TypeOptions,
)
@pytest.mark.parametrize(
["test_enum", "test_str", "expected_value"],
[
(Procedures, "calculate", Procedures.Calculate),
(Procedures, "simplex", Procedures.Simplex),
(Procedures, "ns", Procedures.NS),
(Procedures, "de", Procedures.DE),
(Procedures, "dream", Procedures.DREAM),
(Parallel, "single", Parallel.Single),
(Parallel, "points", Parallel.Points),
(Parallel, "contrasts", Parallel.Contrasts),
(Display, "off", Display.Off),
(Display, "iter", Display.Iter),
(Display, "notify", Display.Notify),
(Display, "final", Display.Final),
(BoundHandling, "off", BoundHandling.Off),
(BoundHandling, "reflect", BoundHandling.Reflect),
(BoundHandling, "bound", BoundHandling.Bound),
(BoundHandling, "fold", BoundHandling.Fold),
(TypeOptions, "constant", TypeOptions.Constant),
(TypeOptions, "data", TypeOptions.Data),
(TypeOptions, "function", TypeOptions.Function),
(BackgroundActions, "add", BackgroundActions.Add),
(BackgroundActions, "subtract", BackgroundActions.Subtract),
(Languages, "cpp", Languages.Cpp),
(Languages, "python", Languages.Python),
(Languages, "matlab", Languages.Matlab),
(Hydration, "bulk in", Hydration.BulkIn),
(Hydration, "bulk out", Hydration.BulkOut),
(Priors, "uniform", Priors.Uniform),
(Priors, "gaussian", Priors.Gaussian),
(Calculations, "normal", Calculations.Normal),
(Calculations, "domains", Calculations.Domains),
(LayerModels, "custom layers", LayerModels.CustomLayers),
(LayerModels, "custom xy", LayerModels.CustomXY),
(LayerModels, "standard layers", LayerModels.StandardLayers),
(Geometries, "air/substrate", Geometries.AirSubstrate),
(Geometries, "substrate/liquid", Geometries.SubstrateLiquid),
],
)
def test_case_insensitivity(test_enum: Callable, test_str: str, expected_value: RATEnum) -> None:
"""RAT Enums should accept string input regardless of case."""
assert test_enum(test_str) == expected_value
assert test_enum(test_str.upper()) == expected_value
assert test_enum(test_str.title()) == expected_value
@pytest.mark.parametrize(
["test_enum", "test_str", "expected_value"],
[
(Hydration, "bulk in", Hydration.BulkIn),
(Hydration, "bulk out", Hydration.BulkOut),
(Calculations, "normal", Calculations.Normal),
(LayerModels, "custom layers", LayerModels.CustomLayers),
(LayerModels, "custom xy", LayerModels.CustomXY),
(LayerModels, "standard layers", LayerModels.StandardLayers),
],
)
def test_dash_underscore(test_enum: Callable, test_str: str, expected_value: RATEnum) -> None:
"""RAT Enums should accept dashes or underscores between words with string input."""
assert test_enum(test_str.replace(" ", "-")) == expected_value
assert test_enum(test_str.replace(" ", "_")) == expected_value
@pytest.mark.parametrize(
["test_enum", "test_str", "expected_value"],
[
(Languages, "c++", Languages.Cpp),
],
)
def test_alternative_spellings(test_enum: Callable, test_str: str, expected_value: RATEnum) -> None:
"""RAT Enums should accept some alternative spellings."""
assert test_enum(test_str) == expected_value
assert test_enum(test_str.upper()) == expected_value
assert test_enum(test_str.title()) == expected_value
def test_integer_strategies():
"""Test that strategies can be input as integers."""
assert [Strategies(i) for i in range(1, len(Strategies) + 1)] == list(Strategies)