blob: 8ef013ef770da14db76176b499f4bc71210fc7c1 (
plain)
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
|
from pathlib import Path
from textwrap import dedent
from unittest import TestCase
from pyGHDL.dom import Expression
from pyGHDL.dom.Misc import Design, Document
from pyGHDL.dom.Symbol import SimpleObjectSymbol
from pyGHDL.dom.Object import Constant
from pyGHDL.dom.Expression import InverseExpression
if __name__ == "__main__":
print("ERROR: you called a testcase declaration file as an executable module.")
print("Use: 'python -m unitest <testcase module>'")
exit(1)
class Expressions(TestCase):
_root = Path(__file__).resolve().parent.parent
def test_NotExpression(self):
self._filename: Path = self._root / "{className}.vhdl".format(className=self.__class__.__name__)
sourceCode = dedent("""\
package package_1 is
constant c0 : boolean := not true;
end package;
""")
with self._filename.open(mode="w", encoding="utf-8") as file:
file.write(sourceCode)
design = Design()
document = Document(self._filename)
design.Documents.append(document)
self.assertEqual(len(design.Documents[0].Packages), 1)
package = design.Documents[0].Packages[0]
self.assertTrue(package.Name == "package_1")
self.assertEqual(len(package.DeclaredItems), 1)
item: Constant = package.DeclaredItems[0]
self.assertTrue(isinstance(item, Constant))
self.assertTrue(item.Name == "c0")
self.assertTrue(item.SubType.SymbolName == "boolean")
default: Expression = item.DefaultExpression
self.assertTrue(isinstance(default, InverseExpression))
self.assertTrue(isinstance(default.Operand, SimpleObjectSymbol))
self.assertTrue(default.Operand.SymbolName == "true")
|