Skip to content

Commit

Permalink
Added testcases for port lists.
Browse files Browse the repository at this point in the history
  • Loading branch information
Paebbels committed Nov 15, 2020
1 parent 021332b commit a087e04
Show file tree
Hide file tree
Showing 2 changed files with 112 additions and 3 deletions.
109 changes: 109 additions & 0 deletions tests/unit/PortList.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,109 @@
from textwrap import dedent
from unittest import TestCase

from pyVHDLParser.Blocks.List import GenericList, PortList
from pyVHDLParser.Blocks.List.PortList import PortListInterfaceSignalBlock
from pyVHDLParser.Token import WordToken, StartOfDocumentToken, SpaceToken, CharacterToken, EndOfDocumentToken, \
LinebreakToken, IndentationToken
from pyVHDLParser.Blocks import StartOfDocumentBlock, EndOfDocumentBlock, BlockParserException, InterfaceObject
from pyVHDLParser.Blocks.Common import WhitespaceBlock, LinebreakBlock, IndentationBlock
from pyVHDLParser.Blocks.Structural import Entity

from tests.unit import Initializer, ExpectedDataMixin, LinkingTests, TokenSequence, BlockSequence, ExpectedTokenStream, ExpectedBlockStream


if __name__ == "__main__":
print("ERROR: you called a testcase declaration file as an executable module.")
print("Use: 'python -m unitest <testcase module>'")
exit(1)


def setUpModule():
i = Initializer()

class SimplePortList_OneLine_SinglePort(TestCase, ExpectedDataMixin, LinkingTests, TokenSequence, BlockSequence):
code = "entity e is port (port1 : bit); end;"
tokenStream = ExpectedTokenStream(
[ (StartOfDocumentToken, None),
(WordToken, "entity"),
(SpaceToken, " "),
(WordToken, "e"),
(SpaceToken, " "),
(WordToken, "is"),
(SpaceToken, " "),
(WordToken, "port"),
(SpaceToken, " "),
(CharacterToken, "("),
(WordToken, "port1"),
(SpaceToken, " "),
(CharacterToken, ":"),
(SpaceToken, " "),
(WordToken, "bit"),
(CharacterToken, ")"),
(CharacterToken, ";"),
(SpaceToken, " "),
(WordToken, "end"),
(CharacterToken, ";"),
(EndOfDocumentToken, None)
]
)
blockStream = ExpectedBlockStream(
[ (StartOfDocumentBlock, None), #
(Entity.NameBlock, "entity e is"), # entity e is
(WhitespaceBlock, " "), #
(PortList.OpenBlock, "port ("), # port (
(PortListInterfaceSignalBlock, "port1 : bit"), # port1 : bit
(PortList.CloseBlock, ");"), # );
(WhitespaceBlock, " "), #
(Entity.EndBlock, "end;"), # end;
(EndOfDocumentBlock, None) #
]
)

class SimplePortList_OneLine_DoublePort(TestCase, ExpectedDataMixin, LinkingTests, TokenSequence, BlockSequence):
code = "entity e is port (port1 : bit; port2 : boolean ); end;"
tokenStream = ExpectedTokenStream(
[ (StartOfDocumentToken, None),
(WordToken, "entity"),
(SpaceToken, " "),
(WordToken, "e"),
(SpaceToken, " "),
(WordToken, "is"),
(SpaceToken, " "),
(WordToken, "port"),
(SpaceToken, " "),
(CharacterToken, "("),
(WordToken, "port1"),
(SpaceToken, " "),
(CharacterToken, ":"),
(SpaceToken, " "),
(WordToken, "bit"),
(CharacterToken, ";"),
(WordToken, "port2"),
(SpaceToken, " "),
(CharacterToken, ":"),
(SpaceToken, " "),
(WordToken, "boolean"),
(SpaceToken, " "),
(CharacterToken, ")"),
(CharacterToken, ";"),
(SpaceToken, " "),
(WordToken, "end"),
(CharacterToken, ";"),
(EndOfDocumentToken, None)
]
)
blockStream = ExpectedBlockStream(
[ (StartOfDocumentBlock, None), #
(Entity.NameBlock, "entity e is"), # entity e is
(WhitespaceBlock, " "), #
(PortList.OpenBlock, "port ("), # port (
(PortListInterfaceSignalBlock, "port1 : bit"), # port1 : bit
(PortList.DelimiterBlock, ";"), # ;
(PortListInterfaceSignalBlock, "port2 : boolean "), # port1 : bit
(PortList.CloseBlock, ");"), # );
(WhitespaceBlock, " "), #
(Entity.EndBlock, "end;"), # end;
(EndOfDocumentBlock, None) #
]
)
6 changes: 3 additions & 3 deletions tests/unit/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -172,12 +172,12 @@ def test_BlockSequence(self) -> None:
)
)
if item[1] is not None:
blockValue = repr(block)
blockValue = str(block)
super().failIf(
blockValue != item[1],
msg="The blocks's value does not match.\n Actual: '{actual}'\n Expected: '{expected}'".format(
actual=blockValue,
expected=item[1]
actual=CharacterTranslation(blockValue, oneLiner=True),
expected=CharacterTranslation(item[1], oneLiner=True)
)
)

Expand Down

0 comments on commit a087e04

Please sign in to comment.