Skip to content

Commit 863b9d4

Browse files
Issue#1402: Adding rule interface_incomplete_type_declaration_500
1 parent cc678cb commit 863b9d4

File tree

19 files changed

+460
-23
lines changed

19 files changed

+460
-23
lines changed

docs/configuring_uppercase_and_lowercase_rules.rst

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -416,6 +416,8 @@ Rules Enforcing Case
416416
* `instantiation_031 <instantiation_rules.html#instantiation-031>`_
417417
* `instantiation_500 <instantiation_rules.html#instantiation-500>`_
418418

419+
* `interface_incomplete_type_declaration_500 <../interface_incomplete_type_declaration_rules.html#interface-incomplete-type-declaration-500>`_
420+
419421
* `iteration_scheme_500 <iteration_scheme_rules.html#iteration-scheme-500>`_
420422
* `iteration_scheme_501 <iteration_scheme_rules.html#iteration-scheme-501>`_
421423

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
.. include:: includes.rst
2+
3+
Interface Incomplete Type Declaration Rules
4+
-------------------------------------------
5+
6+
interface_incomplete_type_declaration_500
7+
#########################################
8+
9+
|phase_6| |error| |case| |case_keyword|
10+
11+
This rule checks the **type** keyword has proper case.
12+
13+
|configuring_uppercase_and_lowercase_rules_link|
14+
15+
**Violation**
16+
17+
.. code-block:: vhdl
18+
19+
generic (
20+
TYPE generic_data_type
21+
22+
**Fix**
23+
24+
.. code-block:: vhdl
25+
26+
generic (
27+
type generic_data_type

docs/rule_groups/case_keyword_rule_group.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,7 @@ Rules Enforcing Case::Keyword Rule Group
105105
* `index_subtype_definition_500 <../index_subtype_definition_rules.html#index-subtype-definition-500>`_
106106
* `instantiation_027 <../instantiation_rules.html#instantiation-027>`_
107107
* `instantiation_031 <../instantiation_rules.html#instantiation-031>`_
108+
* `interface_incomplete_type_declaration_500 <../interface_incomplete_type_declaration_rules.html#interface-incomplete-type-declaration-500>`_
108109
* `iteration_scheme_500 <../iteration_scheme_rules.html#iteration-scheme-500>`_
109110
* `iteration_scheme_501 <../iteration_scheme_rules.html#iteration-scheme-501>`_
110111
* `library_004 <../library_rules.html#library-004>`_

docs/rule_groups/case_rule_group.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -145,6 +145,7 @@ Rules Enforcing Case Rule Group
145145
* `instantiation_028 <../instantiation_rules.html#instantiation-028>`_
146146
* `instantiation_031 <../instantiation_rules.html#instantiation-031>`_
147147
* `instantiation_500 <../instantiation_rules.html#instantiation-500>`_
148+
* `interface_incomplete_type_declaration_500 <../interface_incomplete_type_declaration_rules.html#interface-incomplete-type-declaration-500>`_
148149
* `iteration_scheme_500 <../iteration_scheme_rules.html#iteration-scheme-500>`_
149150
* `iteration_scheme_501 <../iteration_scheme_rules.html#iteration-scheme-501>`_
150151
* `library_004 <../library_rules.html#library-004>`_

docs/rules.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@ The rules are divided into categories depending on the part of the VHDL code bei
5555
if_generate_statement_rules.rst
5656
index_subtype_definition_rules.rst
5757
instantiation_rules.rst
58+
interface_incomplete_type_declaration_rules.rst
5859
iteration_scheme_rules.rst
5960
length_rules.rst
6061
library_rules.rst
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
2+
entity fifo is
3+
generic (
4+
type generic_data_type;
5+
type generic_data_type;
6+
type generic_data_type
7+
);
8+
port (
9+
data_in : generic_data_type
10+
);
11+
end entity fifo;
12+
13+
architecture rtl of fifo is
14+
15+
component buffer is
16+
generic (
17+
type generic_data_type;
18+
type generic_data_type;
19+
type generic_data_type
20+
);
21+
port (
22+
data_in : generic_data_type
23+
);
24+
end component buffer;
25+
26+
begin
27+
28+
buf1 : buffer
29+
generic map (
30+
generic_data_type => std_logic
31+
)
32+
port map (
33+
data_in => '0'
34+
);
35+
36+
end architecture rtl;
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
2+
entity fifo is
3+
generic (
4+
TYPE generic_data_type;
5+
TYPE generic_data_type;
6+
TYPE generic_data_type
7+
);
8+
port (
9+
data_in : generic_data_type
10+
);
11+
end entity fifo;
12+
13+
architecture rtl of fifo is
14+
15+
component buffer is
16+
generic (
17+
TYPE generic_data_type;
18+
TYPE generic_data_type;
19+
TYPE generic_data_type
20+
);
21+
port (
22+
data_in : generic_data_type
23+
);
24+
end component buffer;
25+
26+
begin
27+
28+
buf1 : buffer
29+
generic map (
30+
generic_data_type => std_logic
31+
)
32+
port map (
33+
data_in => '0'
34+
);
35+
36+
end architecture rtl;
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
2+
entity fifo is
3+
generic (
4+
type generic_data_type;
5+
TyPe generic_data_type;
6+
TYPE generic_data_type
7+
);
8+
port (
9+
data_in : generic_data_type
10+
);
11+
end entity fifo;
12+
13+
architecture rtl of fifo is
14+
15+
component buffer is
16+
generic (
17+
type generic_data_type;
18+
TyPe generic_data_type;
19+
TYPE generic_data_type
20+
);
21+
port (
22+
data_in : generic_data_type
23+
);
24+
end component buffer;
25+
26+
begin
27+
28+
buf1 : buffer
29+
generic map (
30+
generic_data_type => std_logic
31+
)
32+
port map (
33+
data_in => '0'
34+
);
35+
36+
end architecture rtl;
Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
# -*- coding: utf-8 -*-
2+
3+
import os
4+
import unittest
5+
6+
from tests import utils
7+
from vsg import vhdlFile
8+
from vsg.rules import interface_incomplete_type_declaration
9+
10+
sTestDir = os.path.dirname(__file__)
11+
12+
lFile, eError = vhdlFile.utils.read_vhdlfile(os.path.join(sTestDir, "rule_500_test_input.vhd"))
13+
14+
15+
class test_rule(unittest.TestCase):
16+
def setUp(self):
17+
self.oFile = vhdlFile.vhdlFile(lFile)
18+
self.assertIsNone(eError)
19+
20+
def test_rule_500_lower(self):
21+
oRule = interface_incomplete_type_declaration.rule_500()
22+
self.assertTrue(oRule)
23+
self.assertEqual(oRule.name, "interface_incomplete_type_declaration")
24+
self.assertEqual(oRule.identifier, "500")
25+
26+
lExpected = [5, 6, 18, 19]
27+
28+
oRule.analyze(self.oFile)
29+
self.assertEqual(utils.extract_violation_lines_from_violation_object(oRule.violations), lExpected)
30+
31+
def test_rule_500_upper(self):
32+
oRule = interface_incomplete_type_declaration.rule_500()
33+
oRule.case = "upper"
34+
self.assertTrue(oRule)
35+
self.assertEqual(oRule.name, "interface_incomplete_type_declaration")
36+
self.assertEqual(oRule.identifier, "500")
37+
38+
lExpected = [4, 5, 17, 18]
39+
oRule.analyze(self.oFile)
40+
self.assertEqual(utils.extract_violation_lines_from_violation_object(oRule.violations), lExpected)
41+
42+
def test_fix_rule_500_lower(self):
43+
oRule = interface_incomplete_type_declaration.rule_500()
44+
45+
oRule.fix(self.oFile)
46+
47+
lActual = self.oFile.get_lines()
48+
49+
lExpected = []
50+
lExpected.append("")
51+
utils.read_file(os.path.join(sTestDir, "rule_500_test_input.fixed_lower.vhd"), lExpected)
52+
53+
self.assertEqual(lExpected, lActual)
54+
55+
oRule.analyze(self.oFile)
56+
self.assertEqual(oRule.violations, [])
57+
58+
def test_fix_rule_500_upper(self):
59+
oRule = interface_incomplete_type_declaration.rule_500()
60+
oRule.case = "upper"
61+
62+
oRule.fix(self.oFile)
63+
64+
lActual = self.oFile.get_lines()
65+
66+
lExpected = []
67+
lExpected.append("")
68+
utils.read_file(os.path.join(sTestDir, "rule_500_test_input.fixed_upper.vhd"), lExpected)
69+
70+
self.assertEqual(lExpected, lActual)
71+
72+
oRule.analyze(self.oFile)
73+
self.assertEqual(oRule.violations, [])

tests/rule_doc/test_rule_doc.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -363,6 +363,11 @@ def test_instantiation_rules_doc(self):
363363

364364
self.assertEqual(lExpected, lActual)
365365

366+
def test_interface_incomplete_type_declaration_rules_doc(self):
367+
lExpected, lActual = self.compare_files("interface_incomplete_type_declaration")
368+
369+
self.assertEqual(lExpected, lActual)
370+
366371
def test_iteration_scheme_doc(self):
367372
lExpected, lActual = self.compare_files("iteration_scheme")
368373

0 commit comments

Comments
 (0)