[geneagrapher] 164/226: - Added tests to have better coverage of geneagrapher.py. - Changed order that nodes are visited while building the dot file output. - Changed graph output to standard out to not add an extra newline at end.
Doug Torrance
dtorrance-guest at moszumanska.debian.org
Sat Jul 11 17:11:00 UTC 2015
This is an automated email from the git hooks/post-receive script.
dtorrance-guest pushed a commit to branch master
in repository geneagrapher.
commit 979a8eb533544c8c424d08deeb176e72cb1afa88
Author: David Alber <alber.david at gmail.com>
Date: Fri Nov 4 00:24:48 2011 -0700
- Added tests to have better coverage of geneagrapher.py.
- Changed order that nodes are visited while building the dot file output.
- Changed graph output to standard out to not add an extra newline at end.
---
geneagrapher/geneagrapher.py | 2 +-
geneagrapher/graph/graph.py | 2 +-
tests/test_geneagrapher_methods.py | 252 +++++++++++++++++++++++++++++++++++++
3 files changed, 254 insertions(+), 2 deletions(-)
diff --git a/geneagrapher/geneagrapher.py b/geneagrapher/geneagrapher.py
index 9877964..af4f609 100644
--- a/geneagrapher/geneagrapher.py
+++ b/geneagrapher/geneagrapher.py
@@ -120,7 +120,7 @@ class Geneagrapher:
outfile.write(dotfile)
outfile.close()
else:
- print dotfile
+ print dotfile,
def ggrapher():
"""Function to run the Geneagrapher. This is the function called when
diff --git a/geneagrapher/graph/graph.py b/geneagrapher/graph/graph.py
index 1e39460..d6b6704 100644
--- a/geneagrapher/graph/graph.py
+++ b/geneagrapher/graph/graph.py
@@ -102,7 +102,7 @@ class Graph:
printed_nodes = {}
while len(queue) > 0:
- node_id = queue.pop()
+ node_id = queue.pop(0)
if not self.has_node(node_id):
# Skip this id if a corresponding node is not present.
continue
diff --git a/tests/test_geneagrapher_methods.py b/tests/test_geneagrapher_methods.py
index 31bfb9e..dbc40d5 100644
--- a/tests/test_geneagrapher_methods.py
+++ b/tests/test_geneagrapher_methods.py
@@ -1,5 +1,7 @@
+import os
import sys
import unittest
+import StringIO
from geneagrapher import geneagrapher
from geneagrapher.graph import Graph
@@ -47,5 +49,255 @@ class TestGeneagrapherMethods(unittest.TestCase):
self.assertEquals(self.ggrapher.write_filename, "filler")
self.assertEquals(self.ggrapher.leaf_ids, [3, 43])
+ def test005_parse_short_options(self):
+ # Test parse_input() with short versions of the options.
+ sys.argv = ['geneagrapher', '-a', '-d', '-f', 'filler', '-v', '3', '43']
+ self.ggrapher.parse_input()
+ self.assertEquals(self.ggrapher.get_ancestors, True)
+ self.assertEquals(self.ggrapher.get_descendants, True)
+ self.assertEquals(self.ggrapher.verbose, True)
+ self.assertEquals(self.ggrapher.write_filename, "filler")
+ self.assertEquals(self.ggrapher.leaf_ids, [3, 43])
+
+ def test006_build_graph_only_self(self):
+ # Graph building with no ancestors or descendants.
+ self.ggrapher.leaf_ids.append(127946)
+ self.ggrapher.build_graph()
+ nodes = self.ggrapher.graph.nodes
+ self.assertEquals(len(nodes), 1)
+ self.assertTrue(nodes.has_key(127946))
+
+ node = nodes[127946]
+ self.assertEquals(node.ancestors, [137717, 137705])
+ self.assertEquals(node.descendants, [144155, 127803])
+
+ record = node.record
+ self.assertEquals(record.name, "Christian Thomasius")
+ self.assertEquals(record.institution, None)
+ self.assertEquals(record.year, 1672)
+ self.assertEquals(record.id, 127946)
+
+ def test007_build_graph_with_ancestors(self):
+ # Graph building with ancestors.
+ self.ggrapher.leaf_ids.append(127946)
+ self.ggrapher.get_ancestors = True
+ self.ggrapher.build_graph()
+ nodes = self.ggrapher.graph.nodes
+ self.assertEquals(len(nodes), 4)
+ self.assertTrue(nodes.has_key(127946))
+ self.assertTrue(nodes.has_key(137717))
+ self.assertTrue(nodes.has_key(137705))
+ self.assertTrue(nodes.has_key(143630))
+
+ node = nodes[127946]
+ self.assertEquals(node.ancestors, [137717, 137705])
+ self.assertEquals(node.descendants, [144155, 127803])
+
+ record = node.record
+ self.assertEquals(record.name, "Christian Thomasius")
+ self.assertEquals(record.institution, None)
+ self.assertEquals(record.year, 1672)
+ self.assertEquals(record.id, 127946)
+
+ node = nodes[137717]
+ self.assertEquals(node.ancestors, [])
+ self.assertEquals(node.descendants, [127946])
+
+ record = node.record
+ self.assertEquals(record.name, "Valentin Alberti")
+ self.assertEquals(record.institution, u"Universit\xe4t Leipzig")
+ self.assertEquals(record.year, 1678)
+ self.assertEquals(record.id, 137717)
+
+ node = nodes[137705]
+ self.assertEquals(node.ancestors, [143630])
+ self.assertEquals(node.descendants, [60985, 21235, 127946])
+
+ record = node.record
+ self.assertEquals(record.name, "Jakob Thomasius")
+ self.assertEquals(record.institution, u"Universit\xe4t Leipzig")
+ self.assertEquals(record.year, 1643)
+ self.assertEquals(record.id, 137705)
+
+ node = nodes[143630]
+ self.assertEquals(node.ancestors, [])
+ self.assertEquals(node.descendants, [137705])
+
+ record = node.record
+ self.assertEquals(record.name, "Friedrich Leibniz")
+ self.assertEquals(record.institution, None)
+ self.assertEquals(record.year, None)
+ self.assertEquals(record.id, 143630)
+
+ def test008_build_graph_with_descendants(self):
+ # Graph building with descendants.
+ self.ggrapher.leaf_ids.append(79568)
+ self.ggrapher.get_descendants = True
+ self.ggrapher.build_graph()
+ nodes = self.ggrapher.graph.nodes
+ self.assertEquals(len(nodes), 3)
+ self.assertTrue(nodes.has_key(79568))
+ self.assertTrue(nodes.has_key(79562))
+ self.assertTrue(nodes.has_key(99457))
+
+ node = nodes[79568]
+ self.assertEquals(node.ancestors, [13301])
+ self.assertEquals(node.descendants, [79562, 99457])
+
+ record = node.record
+ self.assertEquals(record.name, "Ramdas Kumaresan")
+ self.assertEquals(record.institution, u"University of Rhode Island")
+ self.assertEquals(record.year, 1982)
+ self.assertEquals(record.id, 79568)
+
+ node = nodes[79562]
+ self.assertEquals(node.ancestors, [79568])
+ self.assertEquals(node.descendants, [])
+
+ record = node.record
+ self.assertEquals(record.name, "C. S. Ramalingam")
+ self.assertEquals(record.institution, u"University of Rhode Island")
+ self.assertEquals(record.year, 1995)
+ self.assertEquals(record.id, 79562)
+
+ node = nodes[99457]
+ self.assertEquals(node.ancestors, [79568])
+ self.assertEquals(node.descendants, [])
+
+ record = node.record
+ self.assertEquals(record.name, "Yadong Wang")
+ self.assertEquals(record.institution, u"University of Rhode Island")
+ self.assertEquals(record.year, 2003)
+ self.assertEquals(record.id, 99457)
+
+ def test009_end_to_end_self_stdout(self):
+ # Complete test getting no ancestors or descendants and writing the
+ # result to stdout.
+ sys.argv = ['geneagrapher', '30484']
+ self.ggrapher.parse_input()
+ self.assertEquals(self.ggrapher.get_ancestors, False)
+ self.assertEquals(self.ggrapher.get_descendants, False)
+ self.assertEquals(self.ggrapher.verbose, False)
+ self.assertEquals(self.ggrapher.write_filename, None)
+ self.assertEquals(self.ggrapher.leaf_ids, [30484])
+
+ self.ggrapher.build_graph()
+
+ # Redirect stdout to capture output.
+ stdout = sys.stdout
+ stdout_intercept = StringIO.StringIO()
+ sys.stdout = stdout_intercept
+ self.ggrapher.generate_dot_file()
+ sys.stdout = stdout
+
+ expected = u"""digraph genealogy {
+ graph [charset="utf-8"];
+ node [shape=plaintext];
+ edge [style=bold];
+
+ 30484 [label="Peter Chris Pappas \\nThe Pennsylvania State University (1982)"];
+
+}
+"""
+ self.assertEquals(stdout_intercept.getvalue().decode('utf-8'), expected)
+
+ def test010_end_to_end_ancestors_stdout(self):
+ # Complete test getting with ancestors, writing the result to stdout.
+ sys.argv = ['geneagrapher', '-a', '127946']
+ self.ggrapher.parse_input()
+ self.assertEquals(self.ggrapher.get_ancestors, True)
+ self.assertEquals(self.ggrapher.get_descendants, False)
+ self.assertEquals(self.ggrapher.verbose, False)
+ self.assertEquals(self.ggrapher.write_filename, None)
+ self.assertEquals(self.ggrapher.leaf_ids, [127946])
+
+ self.ggrapher.build_graph()
+
+ # Redirect stdout to capture output.
+ stdout = sys.stdout
+ stdout_intercept = StringIO.StringIO()
+ sys.stdout = stdout_intercept
+ self.ggrapher.generate_dot_file()
+ sys.stdout = stdout
+
+ expected = u"""digraph genealogy {
+ graph [charset="utf-8"];
+ node [shape=plaintext];
+ edge [style=bold];
+
+ 127946 [label="Christian Thomasius \\n(1672)"];
+ 137717 [label="Valentin Alberti \\nUniversit\xe4t Leipzig (1678)"];
+ 137705 [label="Jakob Thomasius \\nUniversit\xe4t Leipzig (1643)"];
+ 143630 [label="Friedrich Leibniz"];
+
+ 137717 -> 127946;
+ 137705 -> 127946;
+ 143630 -> 137705;
+}
+"""
+ self.assertEquals(stdout_intercept.getvalue().decode('utf-8'), expected)
+
+ def test011_end_to_end_descendants_stdout(self):
+ # Complete test getting with descendants, writing the result to stdout.
+ sys.argv = ['geneagrapher', '-d', '79568']
+ self.ggrapher.parse_input()
+ self.assertEquals(self.ggrapher.get_ancestors, False)
+ self.assertEquals(self.ggrapher.get_descendants, True)
+ self.assertEquals(self.ggrapher.verbose, False)
+ self.assertEquals(self.ggrapher.write_filename, None)
+ self.assertEquals(self.ggrapher.leaf_ids, [79568])
+
+ self.ggrapher.build_graph()
+
+ # Redirect stdout to capture output.
+ stdout = sys.stdout
+ stdout_intercept = StringIO.StringIO()
+ sys.stdout = stdout_intercept
+ self.ggrapher.generate_dot_file()
+ sys.stdout = stdout
+
+ expected = u"""digraph genealogy {
+ graph [charset="utf-8"];
+ node [shape=plaintext];
+ edge [style=bold];
+
+ 79568 [label="Ramdas Kumaresan \\nUniversity of Rhode Island (1982)"];
+ 79562 [label="C. S. Ramalingam \\nUniversity of Rhode Island (1995)"];
+ 99457 [label="Yadong Wang \\nUniversity of Rhode Island (2003)"];
+
+ 79568 -> 79562;
+ 79568 -> 99457;
+}
+"""
+ self.assertEquals(stdout_intercept.getvalue().decode('utf-8'), expected)
+
+ def test012_end_to_end_self_file(self):
+ # Complete test getting no ancestors or descendants and writing the
+ # result to stdout.
+ outfname = 'outfile.test'
+ sys.argv = ['geneagrapher', '-f', outfname, '30484']
+ self.ggrapher.parse_input()
+ self.assertEquals(self.ggrapher.get_ancestors, False)
+ self.assertEquals(self.ggrapher.get_descendants, False)
+ self.assertEquals(self.ggrapher.verbose, False)
+ self.assertEquals(self.ggrapher.write_filename, outfname)
+ self.assertEquals(self.ggrapher.leaf_ids, [30484])
+
+ self.ggrapher.build_graph()
+ self.ggrapher.generate_dot_file()
+
+ expected = u"""digraph genealogy {
+ graph [charset="utf-8"];
+ node [shape=plaintext];
+ edge [style=bold];
+
+ 30484 [label="Peter Chris Pappas \\nThe Pennsylvania State University (1982)"];
+
+}
+"""
+ with open(outfname, 'r') as fin:
+ self.assertEquals(fin.read().decode('utf-8'), expected)
+ os.remove(outfname)
+
if __name__ == '__main__':
unittest.main()
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/debian-science/packages/geneagrapher.git
More information about the debian-science-commits
mailing list