Skip to content

Commit 059ad08

Browse files
authored
Quality tests for API (#255)
* API reports(only when API tests pass) will be generated showing which methods have been implemented in a class and it's parent classes.
1 parent 8d8e688 commit 059ad08

File tree

17 files changed

+348
-365
lines changed

17 files changed

+348
-365
lines changed

.coveragerc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ parallel = True
33
source = pydatastructs
44
omit =
55
*/tests/*
6+
*/setup.py
67

78
[report]
89
exclude_lines =

.travis.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ install:
88
- pip install -r requirements.txt
99

1010
script:
11-
- python -m pytest --doctest-modules --cov=./ --cov-report=xml
11+
- python -m pytest --doctest-modules --cov=./ --cov-report=xml -s
1212

1313
after_success:
1414
- codecov

pydatastructs/graphs/adjacency_list.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,12 @@ def __new__(cls, *vertices):
2323
obj.edge_weights = dict()
2424
return obj
2525

26+
@classmethod
27+
def methods(self):
28+
return ['is_adjacent', 'neighbors',
29+
'add_vertex', 'remove_vertex', 'add_edge',
30+
'get_edge', 'remove_edge', '__new__']
31+
2632
def is_adjacent(self, node1, node2):
2733
node1 = self.__getattribute__(node1)
2834
return hasattr(node1, node2)

pydatastructs/graphs/adjacency_matrix.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,12 @@ def __new__(cls, *vertices):
2626
obj.edge_weights = dict()
2727
return obj
2828

29+
@classmethod
30+
def methods(self):
31+
return ['is_adjacent', 'neighbors',
32+
'add_edge', 'get_edge', 'remove_edge',
33+
'__new__']
34+
2935
def is_adjacent(self, node1, node2):
3036
node1, node2 = str(node1), str(node2)
3137
row = self.matrix.get(node1, dict())

pydatastructs/linear_data_structures/arrays.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,12 @@ def __new__(cls, dtype=NoneType, *args, **kwargs):
109109

110110
return obj
111111

112+
@classmethod
113+
def methods(cls):
114+
return ['__new__', '__getitem__',
115+
'__setitem__', 'fill', '__len__',
116+
'__str__']
117+
112118
def __getitem__(self, i):
113119
if i >= self._size or i < 0:
114120
raise IndexError("Index out of range.")
@@ -215,6 +221,12 @@ def __new__(cls, dtype=NoneType, *args, **kwargs):
215221
obj._last_pos_filled = obj._num - 1
216222
return obj
217223

224+
@classmethod
225+
def methods(cls):
226+
return ['__new__', '_modify',
227+
'append', 'delete', 'size',
228+
'__str__', '__reversed__']
229+
218230
def _modify(self, force=False):
219231
"""
220232
Contracts the array if Num(T)/Size(T) falls

0 commit comments

Comments
 (0)