Test cases for LibLarch
Test cases for LibLarch
For purpose of rewriting parts of LibLarch, there is a small demo at lp:~izidor/gtg/liblarch-demo. It contains liblarch and liblarch-gtk code, unittests and a GUI application for experimenting. A screenshot of the demo application:
The following list of behavior defined by use cases is required:
Test case #1
- run unit tests
Expected result: Every unit test passes.
Test case #2
-
Load situation form file example-trees/delete-randomly
-
Select all tasks (<CTRL> + A)
-
Press Delete randomly
Expected result: The operation is completed in a reasonable time and without errors in the console (compare by deleting by Delete backwards)
Actual result: Many tracebacks in console, deleting takes a long time.
Test case #3
-
Load situation form file example-trees/test_suite
-
Select any Task X and delete it
Expected result: No warning and the resulting tree like this one:
==================== Tree ====================
root
A
C
D
B
E
F
==============================================
Test case #4
-
Load situation form file example-trees/test_suite
-
Select any parent of Task X and delete it
Expected result: No warnings and preserve consistency of the tree
Test case #5
-
Load situation form file example-trees/test_suite
-
Press the button Delete DFXBCAE
Expected result: No warnings, the result tree is empty.
Actual result:
/home/iyo/projekte/liblarch-demo/GTG/gtk/liblarch_gtk/treemodel.py:403: GtkWarning: _gtk_rbtree_reorder: assertion `tree->root->count == length' failed
f(*args)
Test case #6
-
Load situation form file example-trees/test_suite
-
Select any task (X or not X) and press Tree high 3 backwards
Expected result: added to tree and preserved consistency of the tree
Actual result: many warnings, e.g
** (main.py:29964): CRITICAL **: pygtk_generic_tree_model_get_value: assertion `VALID_ITER(iter, tree_model)' failed
** (main.py:29964): CRITICAL **: pygtk_generic_tree_model_get_value: assertion `VALID_ITER(iter, tree_model)' failed
** (main.py:29964): CRITICAL **: pygtk_generic_tree_model_iter_children: assertion `parent == NULL || parent->stamp == PYGTK_GENERIC_TREE_MODEL(tree_model)->stamp' failed
Test case #6
-
Load situation form file example-trees/test_suite
-
Select any task (X or not X) and press Tree high 3 backwards
Expected result: added to tree and preserved consistency of the tree
Actual result: many warnings, e.g
** (main.py:29964): CRITICAL **: pygtk_generic_tree_model_get_value: assertion `VALID_ITER(iter, tree_model)' failed
** (main.py:29964): CRITICAL **: pygtk_generic_tree_model_get_value: assertion `VALID_ITER(iter, tree_model)' failed
** (main.py:29964): CRITICAL **: pygtk_generic_tree_model_iter_children: assertion `parent == NULL || parent->stamp == PYGTK_GENERIC_TREE_MODEL(tree_model)->stamp' failed
Test case #7
- Load situation form file example-trees/cycle
Expected result: A traceback:
Traceback (most recent call last):
File "./main.py", line 504, in load_from_file
parent_node.add_child(child)
File "/home/iyo/projekte/liblarch-demo/GTG/tools/liblarch/tree.py", line 600, in add_child
toreturn = self.new_relationship(self.get_id(),node_id)
File "/home/iyo/projekte/liblarch-demo/GTG/tools/liblarch/tree.py", line 484, in new_relationship
return self.tree.new_relationship(par,chi)
File "/home/iyo/projekte/liblarch-demo/GTG/tools/liblarch/tree.py", line 233, in new_relationship
"between %s and %s" %(parent_id,child_id))
Exception: Cannot build circular relationshipbetween Child and Parent
- Press button Print Tree (to see how liblarch see the tree)
Expected result: print the same tree which is shown in liblarch_widget
Actual result: many parent, child nodes and ended by a traceback RuntimeError: maximum recursion depth exceeded in cmp
... shorten ...
File "/home/iyo/projekte/liblarch-demo/GTG/tools/liblarch/tree.py", line 427, in _print_from_node
self._print_from_node(cur_node, prefix)
File "/home/iyo/projekte/liblarch-demo/GTG/tools/liblarch/tree.py", line 427, in _print_from_node
self._print_from_node(cur_node, prefix)
File "/home/iyo/projekte/liblarch-demo/GTG/tools/liblarch/tree.py", line 427, in _print_from_node
self._print_from_node(cur_node, prefix)
File "/home/iyo/projekte/liblarch-demo/GTG/tools/liblarch/tree.py", line 427, in _print_from_node
self._print_from_node(cur_node, prefix)
File "/home/iyo/projekte/liblarch-demo/GTG/tools/liblarch/tree.py", line 427, in _print_from_node
self._print_from_node(cur_node, prefix)
File "/home/iyo/projekte/liblarch-demo/GTG/tools/liblarch/tree.py", line 427, in _print_from_node
self._print_from_node(cur_node, prefix)
File "/home/iyo/projekte/liblarch-demo/GTG/tools/liblarch/tree.py", line 427, in _print_from_node
self._print_from_node(cur_node, prefix)
File "/home/iyo/projekte/liblarch-demo/GTG/tools/liblarch/tree.py", line 427, in _print_from_node
self._print_from_node(cur_node, prefix)
File "/home/iyo/projekte/liblarch-demo/GTG/tools/liblarch/tree.py", line 427, in _print_from_node
self._print_from_node(cur_node, prefix)
File "/home/iyo/projekte/liblarch-demo/GTG/tools/liblarch/tree.py", line 427, in _print_from_node
self._print_from_node(cur_node, prefix)
File "/home/iyo/projekte/liblarch-demo/GTG/tools/liblarch/tree.py", line 427, in _print_from_node
self._print_from_node(cur_node, prefix)
File "/home/iyo/projekte/liblarch-demo/GTG/tools/liblarch/tree.py", line 427, in _print_from_node
self._print_from_node(cur_node, prefix)
File "/home/iyo/projekte/liblarch-demo/GTG/tools/liblarch/tree.py", line 427, in _print_from_node
self._print_from_node(cur_node, prefix)
File "/home/iyo/projekte/liblarch-demo/GTG/tools/liblarch/tree.py", line 427, in _print_from_node
self._print_from_node(cur_node, prefix)
File "/home/iyo/projekte/liblarch-demo/GTG/tools/liblarch/tree.py", line 427, in _print_from_node
self._print_from_node(cur_node, prefix)
File "/home/iyo/projekte/liblarch-demo/GTG/tools/liblarch/tree.py", line 427, in _print_from_node
self._print_from_node(cur_node, prefix)
File "/home/iyo/projekte/liblarch-demo/GTG/tools/liblarch/tree.py", line 427, in _print_from_node
self._print_from_node(cur_node, prefix)
File "/home/iyo/projekte/liblarch-demo/GTG/tools/liblarch/tree.py", line 427, in _print_from_node
self._print_from_node(cur_node, prefix)
File "/home/iyo/projekte/liblarch-demo/GTG/tools/liblarch/tree.py", line 427, in _print_from_node
self._print_from_node(cur_node, prefix)
File "/home/iyo/projekte/liblarch-demo/GTG/tools/liblarch/tree.py", line 426, in _print_from_node
cur_node = node.get_child(c)
File "/home/iyo/projekte/liblarch-demo/GTG/tools/liblarch/tree.py", line 583, in get_child
if self.tree and self.tree.has_node(node_id) and node_id in self.children:
File "/home/iyo/projekte/liblarch-demo/GTG/tools/liblarch/tree.py", line 339, in has_node
return (node_id in self.nodes)
RuntimeError: maximum recursion depth exceeded in cmp
Test case #8
Same as Test case #7 but load example-trees/cycle2 instead. It is contains indirect recursion (A->B, B->A).