Skip to content

Commit 7dfa950

Browse files
authored
v0.2.0
2 parents ab6ab22 + 290b146 commit 7dfa950

File tree

2 files changed

+126
-35
lines changed

2 files changed

+126
-35
lines changed

pySystemRDLModel/__init__.py

Lines changed: 40 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -44,50 +44,53 @@
4444
__email__ = "[email protected]"
4545
__copyright__ = "2023-2023, Patrick Lehmann"
4646
__license__ = "Apache License, Version 2.0"
47-
__version__ = "0.1.0"
47+
__version__ = "0.2.0"
4848

4949

5050
@export
5151
@unique
5252
class SystemRDLVersion(Enum):
53-
Any = -1
54-
SystemVerilog2005 = 2005
55-
SystemVerilog2009 = 2009
56-
SystemVerilog2012 = 2012
57-
SystemVerilog2017 = 2017
53+
Any = -1
54+
SystemRDL2005 = 2005
55+
SystemRDL2009 = 2009
56+
SystemRDL2012 = 2012
57+
SystemRDL2017 = 2017
5858

5959
__VERSION_MAPPINGS__: Dict[Union[int, str], Enum] = {
60-
5: SystemVerilog2005,
61-
9: SystemVerilog2009,
62-
12: SystemVerilog2012,
63-
17: SystemVerilog2017,
64-
2005: SystemVerilog2005,
65-
2009: SystemVerilog2009,
66-
2012: SystemVerilog2012,
67-
2017: SystemVerilog2017,
60+
-1: Any,
61+
5: SystemRDL2005,
62+
9: SystemRDL2009,
63+
12: SystemRDL2012,
64+
17: SystemRDL2017,
65+
2005: SystemRDL2005,
66+
2009: SystemRDL2009,
67+
2012: SystemRDL2012,
68+
2017: SystemRDL2017,
6869
"Any": Any,
69-
"05": SystemVerilog2005,
70-
"09": SystemVerilog2009,
71-
"12": SystemVerilog2012,
72-
"17": SystemVerilog2017,
73-
"2005": SystemVerilog2005,
74-
"2009": SystemVerilog2009,
75-
"2012": SystemVerilog2012,
76-
"2017": SystemVerilog2017,
70+
"05": SystemRDL2005,
71+
"09": SystemRDL2009,
72+
"12": SystemRDL2012,
73+
"17": SystemRDL2017,
74+
"2005": SystemRDL2005,
75+
"2009": SystemRDL2009,
76+
"2012": SystemRDL2012,
77+
"2017": SystemRDL2017,
7778
}
7879

7980
def __init__(self, *_):
8081
"""Patch the embedded MAP dictionary"""
81-
for k, v in self.__class__.__VERSION_MAPPINGS__.items():
82-
if (not isinstance(v, self.__class__)) and (v == self.value):
83-
self.__class__.__VERSION_MAPPINGS__[k] = self
82+
cls = self.__class__
83+
for k, v in cls.__VERSION_MAPPINGS__.items():
84+
if (not isinstance(v, cls)) and (v == self.value):
85+
print(f"patching {k}:{v} with {self}")
86+
cls.__VERSION_MAPPINGS__[k] = self
8487

8588
@classmethod
86-
def Parse(cls, value):
89+
def Parse(cls, value: Union[int, str]) -> "SystemRDLVersion":
8790
try:
8891
return cls.__VERSION_MAPPINGS__[value]
8992
except KeyError:
90-
ValueError(f"Value '{value!s}' cannot be parsed to member of {cls.__name__}.")
93+
raise ValueError(f"Value '{value!s}' cannot be parsed to member of {cls.__name__}.")
9194

9295
def __lt__(self, other):
9396
return self.value < other.value
@@ -110,8 +113,14 @@ def __eq__(self, other):
110113
else:
111114
return self.value == other.value
112115

113-
def __str__(self):
114-
return "SV'" + str(self.value)[-2:]
116+
def __str__(self) -> str:
117+
if self.value == -1:
118+
return "SystemRDL'Any"
119+
else:
120+
return f"SystemRDL'{str(self.value)[-2:]}"
115121

116-
def __repr__(self):
117-
return str(self.value)
122+
def __repr__(self) -> str:
123+
if self.value == -1:
124+
return "Any"
125+
else:
126+
return str(self.value)

tests/unit/Instantiate.py

Lines changed: 86 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -40,8 +40,90 @@
4040
exit(1)
4141

4242

43-
class Instantiate(TestCase):
44-
def test_SystemRDLVersion(self):
45-
version = SystemRDLVersion.Parse("2017")
43+
class SysRDLVersion(TestCase):
44+
def test_Any(self):
45+
versions = (
46+
SystemRDLVersion.Parse(-1),
47+
SystemRDLVersion.Parse("Any"),
48+
)
4649

47-
self.assertIsNotNone(version)
50+
for version in versions:
51+
self.assertIs(SystemRDLVersion.Any, version)
52+
53+
print()
54+
print(version)
55+
print(version.value)
56+
57+
def test_2005(self):
58+
versions = (
59+
SystemRDLVersion.Parse(5),
60+
SystemRDLVersion.Parse(2005),
61+
SystemRDLVersion.Parse("05"),
62+
SystemRDLVersion.Parse("2005"),
63+
)
64+
65+
for version in versions:
66+
self.assertIs(SystemRDLVersion.SystemRDL2005, version)
67+
68+
print()
69+
print(version)
70+
print(version.value)
71+
72+
def test_2009(self):
73+
versions = (
74+
SystemRDLVersion.Parse(9),
75+
SystemRDLVersion.Parse(2009),
76+
SystemRDLVersion.Parse("09"),
77+
SystemRDLVersion.Parse("2009"),
78+
)
79+
80+
for version in versions:
81+
self.assertIs(SystemRDLVersion.SystemRDL2009, version)
82+
83+
print()
84+
print(version)
85+
print(version.value)
86+
87+
def test_2012(self):
88+
versions = (
89+
SystemRDLVersion.Parse(12),
90+
SystemRDLVersion.Parse(2012),
91+
SystemRDLVersion.Parse("12"),
92+
SystemRDLVersion.Parse("2012"),
93+
)
94+
95+
for version in versions:
96+
self.assertIs(SystemRDLVersion.SystemRDL2012, version)
97+
98+
print()
99+
print(version)
100+
print(version.value)
101+
102+
def test_2019(self):
103+
versions = (
104+
SystemRDLVersion.Parse(17),
105+
SystemRDLVersion.Parse(2017),
106+
SystemRDLVersion.Parse("17"),
107+
SystemRDLVersion.Parse("2017"),
108+
)
109+
110+
for version in versions:
111+
self.assertIs(SystemRDLVersion.SystemRDL2017, version)
112+
113+
print()
114+
print(version)
115+
print(version.value)
116+
117+
def test_IntError(self):
118+
with self.assertRaises(ValueError):
119+
_ = SystemRDLVersion.Parse(0)
120+
121+
with self.assertRaises(ValueError):
122+
_ = SystemRDLVersion.Parse(13)
123+
124+
def test_StrError(self):
125+
with self.assertRaises(ValueError):
126+
_ = SystemRDLVersion.Parse("0")
127+
128+
with self.assertRaises(ValueError):
129+
_ = SystemRDLVersion.Parse("13")

0 commit comments

Comments
 (0)