diff --git a/src/Relationship.py b/src/Relationship.py
index 78576c0fc..401760be6 100644
--- a/src/Relationship.py
+++ b/src/Relationship.py
@@ -1859,7 +1859,7 @@ def get_relationship_calculator(reinit=False):
#
#-------------------------------------------------------------------------
-def _test(rc, onlybirth, inlawa, inlawb, printrelstr):
+def _test(rc, onlybirth, inlawa, inlawb, printrelstr, testNum = None):
""" this is a generic test suite for the singular relationship
TRANSLATORS: do NOT translate, use __main__ !
"""
@@ -1871,7 +1871,7 @@ def _test(rc, onlybirth, inlawa, inlawb, printrelstr):
return 'f'
else:
return 'm'
-
+
def _rand_relstr(len, endstr):
if len == 0:
return ''
@@ -1880,295 +1880,337 @@ def _test(rc, onlybirth, inlawa, inlawb, printrelstr):
for i in range(len-1):
relstr += _rand_f_m()
return relstr + endstr
-
+
FMT = '%+50s'
MAX = 30
-
- #rc = RelationshipCalculator()
-
- print '\ntesting sons (Enter to start)\n'
- sys.stdin.readline()
- for i in range(MAX) :
- relstr = _rand_relstr(i,'f')
- rel = FMT % rc.get_single_relationship_string(0, i,
- MALE,
- MALE,
- '', relstr,
- only_birth=onlybirth,
- in_law_a=inlawa,
- in_law_b=inlawb)
- if printrelstr :
- print rel + ' |info:', relstr
- else:
- print rel
- print '\n\ntesting daughters\n'
- sys.stdin.readline()
- for i in range(MAX) :
- relstr = _rand_relstr(i,'m')
- rel = FMT % rc.get_single_relationship_string(0, i,
- MALE,
- FEMALE,
- '', relstr,
- only_birth=onlybirth,
- in_law_a=inlawa, in_law_b=inlawb)
- if printrelstr :
- print rel + ' |info:', relstr
- else:
- print rel
- print '\n\ntesting unknown children\n'
- sys.stdin.readline()
- for i in range(MAX) :
- relstr = _rand_relstr(i,'f')
- rel = FMT % rc.get_single_relationship_string(0, i,
- MALE,
- UNKNOWN,
- '', relstr,
- only_birth=onlybirth,
- in_law_a=inlawa, in_law_b=inlawb)
- if printrelstr :
- print rel + ' |info:', relstr
- else:
- print rel
- print '\n\ntesting grandfathers\n'
- sys.stdin.readline()
- for i in range(MAX) :
- relstr = _rand_relstr(i,'f')
- rel = FMT % rc.get_single_relationship_string(i, 0,
- FEMALE,
- MALE,
- relstr, '',
- only_birth=onlybirth,
- in_law_a=inlawa, in_law_b=inlawb)
- if printrelstr :
- print rel + ' |info:', relstr
- else:
- print rel
- print '\n\ntesting grandmothers\n'
- sys.stdin.readline()
- for i in range(MAX) :
- relstr = _rand_relstr(i,'m')
- rel = FMT % rc.get_single_relationship_string(i, 0,
- FEMALE,
- FEMALE,
- relstr, '',
- only_birth=onlybirth,
- in_law_a=inlawa, in_law_b=inlawb)
- if printrelstr :
- print rel + ' |info:', relstr
- else:
- print rel
- print '\n\ntesting unknown parents\n'
- sys.stdin.readline()
- for i in range(MAX) :
- relstr = _rand_relstr(i,'f')
- rel = FMT % rc.get_single_relationship_string(i, 0,
- FEMALE,
- UNKNOWN,
- relstr, '',
- only_birth=onlybirth,
- in_law_a=inlawa, in_law_b=inlawb)
- if printrelstr :
- print rel + ' |info:', relstr
- else:
- print rel
- print '\n\ntesting nieces\n'
- sys.stdin.readline()
- for i in range(1, MAX) :
- relstr = _rand_relstr(i,'m')
- rel = FMT % rc.get_single_relationship_string(1, i,
- FEMALE,
- FEMALE,
- 'm', relstr,
- only_birth=onlybirth,
- in_law_a=inlawa, in_law_b=inlawb)
- if printrelstr :
- print rel + ' |info:', relstr
- else:
- print rel
- print '\n\ntesting nephews\n'
- sys.stdin.readline()
- for i in range(1, MAX) :
- relstr = _rand_relstr(i,'f')
- rel = FMT % rc.get_single_relationship_string(1, i,
- FEMALE,
- MALE,
- 'f', relstr,
- only_birth=onlybirth,
- in_law_a=inlawa, in_law_b=inlawb)
- if printrelstr :
- print rel + ' |info:', relstr
- else:
- print rel
- print '\n\ntesting unknown nephews/nieces\n'
- sys.stdin.readline()
- for i in range(1, MAX) :
- relstr = _rand_relstr(i,'f')
- rel = FMT % rc.get_single_relationship_string(1, i,
- FEMALE,
- UNKNOWN,
- 'f', relstr,
- only_birth=onlybirth,
- in_law_a=inlawa, in_law_b=inlawb)
- if printrelstr :
- print rel + ' |info:', relstr
- else:
- print rel
- print '\n\ntesting uncles\n'
- sys.stdin.readline()
- for i in range(1, MAX) :
- relstr = _rand_relstr(i,'f')
- rel = FMT % rc.get_single_relationship_string(i, 1,
- FEMALE,
- MALE,
- relstr, 'f',
- only_birth=onlybirth,
- in_law_a=inlawa, in_law_b=inlawb)
- if printrelstr :
- print rel + ' |info:', relstr
- else:
- print rel
- print '\n\ntesting aunts\n'
- sys.stdin.readline()
- for i in range(1, MAX) :
- relstr = _rand_relstr(i,'f')
- rel = FMT % rc.get_single_relationship_string(i, 1,
- MALE,
- FEMALE,
- relstr, 'f',
- only_birth=onlybirth,
- in_law_a=inlawa, in_law_b=inlawb)
- if printrelstr :
- print rel + ' |info:', relstr
- else:
- print rel
- print '\n\ntesting unknown uncles/aunts\n'
- sys.stdin.readline()
- for i in range(1, MAX) :
- relstr = _rand_relstr(i,'m')
- rel = FMT % rc.get_single_relationship_string(i, 1,
- MALE,
- UNKNOWN,
- relstr, 'm',
- only_birth=onlybirth,
- in_law_a=inlawa, in_law_b=inlawb)
- if printrelstr :
- print rel + ' |info:', relstr
- else:
- print rel
- print '\n\ntesting male cousins same generation\n'
- sys.stdin.readline()
- for i in range(1, MAX) :
- relstra = _rand_relstr(i,'f')
- relstrb = _rand_relstr(i,'f')
- rel = FMT % rc.get_single_relationship_string(i, i,
- MALE,
- MALE,
- relstra,
- relstrb,
- only_birth=onlybirth,
- in_law_a=inlawa, in_law_b=inlawb)
- if printrelstr :
- print rel + ' |info:', relstra, relstrb
- else:
- print rel
- print '\n\ntesting female cousins same generation\n'
- sys.stdin.readline()
- for i in range(1, MAX) :
- relstra = _rand_relstr(i,'m')
- relstrb = _rand_relstr(i,'m')
- rel = FMT % rc.get_single_relationship_string(i, i,
- MALE,
- FEMALE,
- relstra,
- relstrb,
- only_birth=onlybirth,
- in_law_a=inlawa, in_law_b=inlawb)
- if printrelstr :
- print rel + ' |info:', relstra, relstrb
- else:
- print rel
- print '\n\ntesting unknown cousins same generation\n'
- sys.stdin.readline()
- for i in range(1, MAX) :
- relstra = _rand_relstr(i,'m')
- relstrb = _rand_relstr(i,'m')
- rel = FMT % rc.get_single_relationship_string(i, i,
- MALE,
- UNKNOWN,
- relstra,
- relstrb,
- only_birth=onlybirth,
- in_law_a=inlawa, in_law_b=inlawb)
- if printrelstr :
- print rel + ' |info:', relstra, relstrb
- else:
- print rel
- print '\n\ntesting some cousins up\n'
- sys.stdin.readline()
- import random
- random.seed()
- for i in range(1, MAX) :
- for j in range (i, MAX) :
- rnd = random.randint(0, 100)
- if rnd < 10 :
- relstra = _rand_relstr(j,'f')
- relstrb = _rand_relstr(i,'f')
- if rnd < 5 :
- rel = (FMT + ' |info: female, Ga=%2d, Gb=%2d') % (
- rc.get_single_relationship_string(j, i,
- MALE,
- FEMALE,
- relstra, relstrb,
- only_birth=onlybirth,
- in_law_a=inlawa, in_law_b=inlawb), j, i )
- if printrelstr :
- print rel + ' |info:', relstra, relstrb
+
+ if testNum == None:
+ print("""
+Select a test:
+ 0 - all tests
+ 1 - testing sons
+ 2 - testing daughters
+ 3 - testing unknown children
+ 4 - testing grandfathers
+ 5 - testing grandmothers
+ 6 - testing unknown parents
+ 7 - testing nieces
+ 8 - testing nephews
+ 9 - testing unknown nephews/nieces
+ 10 - testing uncles
+ 11 - testing aunts
+ 12 - testing unknown uncles/aunts
+ 13 - testing male cousins same generation
+ 14 - testing female cousins same generation
+ 15 - testing unknown cousins same generation
+ 16 - testing some cousins up
+ 17 - testing some cousins down
+
+Please enter a test number and press Enter for continue:
+ """)
+ testNum = sys.stdin.readline().strip()
+ testNum = int(testNum)
+
+ if testNum == 0 or testNum == 1:
+ print('\ntesting sons')
+ #sys.stdin.readline()
+ for i in range(MAX) :
+ relstr = _rand_relstr(i,'f')
+ rel = FMT % rc.get_single_relationship_string(0, i,
+ MALE,
+ MALE,
+ '', relstr,
+ only_birth=onlybirth,
+ in_law_a=inlawa,
+ in_law_b=inlawb)
+ if printrelstr :
+ print(rel + ' |info:', relstr)
+ else:
+ print(rel)
+ if testNum == 0 or testNum == 2:
+ print('\ntesting daughters\n')
+ #sys.stdin.readline()
+ for i in range(MAX) :
+ relstr = _rand_relstr(i,'m')
+ rel = FMT % rc.get_single_relationship_string(0, i,
+ MALE,
+ FEMALE,
+ '', relstr,
+ only_birth=onlybirth,
+ in_law_a=inlawa, in_law_b=inlawb)
+ if printrelstr :
+ print(rel + ' |info:', relstr)
+ else:
+ print(rel)
+ if testNum == 0 or testNum == 3:
+ print('\ntesting unknown children\n')
+ #sys.stdin.readline()
+ for i in range(MAX) :
+ relstr = _rand_relstr(i,'f')
+ rel = FMT % rc.get_single_relationship_string(0, i,
+ MALE,
+ UNKNOWN,
+ '', relstr,
+ only_birth=onlybirth,
+ in_law_a=inlawa, in_law_b=inlawb)
+ if printrelstr :
+ print(rel + ' |info:', relstr)
+ else:
+ print(rel)
+ if testNum == 0 or testNum == 4:
+ print('\ntesting grandfathers\n')
+ #sys.stdin.readline()
+ for i in range(MAX) :
+ relstr = _rand_relstr(i,'f')
+ rel = FMT % rc.get_single_relationship_string(i, 0,
+ FEMALE,
+ MALE,
+ relstr, '',
+ only_birth=onlybirth,
+ in_law_a=inlawa, in_law_b=inlawb)
+ if printrelstr :
+ print(rel + ' |info:', relstr)
+ else:
+ print(rel)
+ if testNum == 0 or testNum == 5:
+ print('\ntesting grandmothers\n')
+ #sys.stdin.readline()
+ for i in range(MAX) :
+ relstr = _rand_relstr(i,'m')
+ rel = FMT % rc.get_single_relationship_string(i, 0,
+ FEMALE,
+ FEMALE,
+ relstr, '',
+ only_birth=onlybirth,
+ in_law_a=inlawa, in_law_b=inlawb)
+ if printrelstr :
+ print(rel + ' |info:', relstr)
+ else:
+ print(rel)
+ if testNum == 0 or testNum == 6:
+ print('\ntesting unknown parents\n')
+ #sys.stdin.readline()
+ for i in range(MAX) :
+ relstr = _rand_relstr(i,'f')
+ rel = FMT % rc.get_single_relationship_string(i, 0,
+ FEMALE,
+ UNKNOWN,
+ relstr, '',
+ only_birth=onlybirth,
+ in_law_a=inlawa, in_law_b=inlawb)
+ if printrelstr :
+ print(rel + ' |info:', relstr)
+ else:
+ print(rel)
+ if testNum == 0 or testNum == 7:
+ print('\ntesting nieces\n')
+ #sys.stdin.readline()
+ for i in range(1, MAX) :
+ relstr = _rand_relstr(i,'m')
+ rel = FMT % rc.get_single_relationship_string(1, i,
+ FEMALE,
+ FEMALE,
+ 'm', relstr,
+ only_birth=onlybirth,
+ in_law_a=inlawa, in_law_b=inlawb)
+ if printrelstr :
+ print(rel + ' |info:', relstr)
+ else:
+ print(rel)
+ if testNum == 0 or testNum == 8:
+ print('\ntesting nephews\n')
+ #sys.stdin.readline()
+ for i in range(1, MAX) :
+ relstr = _rand_relstr(i,'f')
+ rel = FMT % rc.get_single_relationship_string(1, i,
+ FEMALE,
+ MALE,
+ 'f', relstr,
+ only_birth=onlybirth,
+ in_law_a=inlawa, in_law_b=inlawb)
+ if printrelstr :
+ print(rel + ' |info:', relstr)
+ else:
+ print(rel)
+ if testNum == 0 or testNum == 9:
+ print('\ntesting unknown nephews/nieces\n')
+ #sys.stdin.readline()
+ for i in range(1, MAX) :
+ relstr = _rand_relstr(i,'f')
+ rel = FMT % rc.get_single_relationship_string(1, i,
+ FEMALE,
+ UNKNOWN,
+ 'f', relstr,
+ only_birth=onlybirth,
+ in_law_a=inlawa, in_law_b=inlawb)
+ if printrelstr :
+ print(rel + ' |info:', relstr)
+ else:
+ print(rel)
+ if testNum == 0 or testNum == 10:
+ print('\ntesting uncles\n')
+ #sys.stdin.readline()
+ for i in range(1, MAX) :
+ relstr = _rand_relstr(i,'f')
+ rel = FMT % rc.get_single_relationship_string(i, 1,
+ FEMALE,
+ MALE,
+ relstr, 'f',
+ only_birth=onlybirth,
+ in_law_a=inlawa, in_law_b=inlawb)
+ if printrelstr :
+ print(rel + ' |info:', relstr)
+ else:
+ print(rel)
+ if testNum == 0 or testNum == 11:
+ print('\ntesting aunts\n')
+ #sys.stdin.readline()
+ for i in range(1, MAX) :
+ relstr = _rand_relstr(i,'f')
+ rel = FMT % rc.get_single_relationship_string(i, 1,
+ MALE,
+ FEMALE,
+ relstr, 'f',
+ only_birth=onlybirth,
+ in_law_a=inlawa, in_law_b=inlawb)
+ if printrelstr :
+ print(rel + ' |info:', relstr)
+ else:
+ print(rel)
+ if testNum == 0 or testNum == 12:
+ print('\ntesting unknown uncles/aunts\n')
+ #sys.stdin.readline()
+ for i in range(1, MAX) :
+ relstr = _rand_relstr(i,'m')
+ rel = FMT % rc.get_single_relationship_string(i, 1,
+ MALE,
+ UNKNOWN,
+ relstr, 'm',
+ only_birth=onlybirth,
+ in_law_a=inlawa, in_law_b=inlawb)
+ if printrelstr :
+ print(rel + ' |info:', relstr)
+ else:
+ print(rel)
+ if testNum == 0 or testNum == 13:
+ print('\ntesting male cousins same generation\n')
+ #sys.stdin.readline()
+ for i in range(1, MAX) :
+ relstra = _rand_relstr(i,'f')
+ relstrb = _rand_relstr(i,'f')
+ rel = FMT % rc.get_single_relationship_string(i, i,
+ MALE,
+ MALE,
+ relstra,
+ relstrb,
+ only_birth=onlybirth,
+ in_law_a=inlawa, in_law_b=inlawb)
+ if printrelstr :
+ print(rel + ' |info:', relstra, relstrb)
+ else:
+ print(rel)
+ if testNum == 0 or testNum == 14:
+ print('\ntesting female cousins same generation\n')
+ #sys.stdin.readline()
+ for i in range(1, MAX) :
+ relstra = _rand_relstr(i,'m')
+ relstrb = _rand_relstr(i,'m')
+ rel = FMT % rc.get_single_relationship_string(i, i,
+ MALE,
+ FEMALE,
+ relstra,
+ relstrb,
+ only_birth=onlybirth,
+ in_law_a=inlawa, in_law_b=inlawb)
+ if printrelstr :
+ print(rel + ' |info:', relstra, relstrb)
+ else:
+ print(rel)
+ if testNum == 0 or testNum == 15:
+ print('\ntesting unknown cousins same generation\n')
+ #sys.stdin.readline()
+ for i in range(1, MAX) :
+ relstra = _rand_relstr(i,'m')
+ relstrb = _rand_relstr(i,'m')
+ rel = FMT % rc.get_single_relationship_string(i, i,
+ MALE,
+ UNKNOWN,
+ relstra,
+ relstrb,
+ only_birth=onlybirth,
+ in_law_a=inlawa, in_law_b=inlawb)
+ if printrelstr :
+ print(rel + ' |info:', relstra, relstrb)
+ else:
+ print(rel)
+ if testNum == 0 or testNum == 16:
+ print('\ntesting some cousins up\n')
+ #sys.stdin.readline()
+ import random
+ random.seed()
+ for i in range(1, MAX) :
+ for j in range (i, MAX) :
+ rnd = random.randint(0, 100)
+ if rnd < 10 :
+ relstra = _rand_relstr(j,'f')
+ relstrb = _rand_relstr(i,'f')
+ if rnd < 5 :
+ rel = (FMT + ' |info: female, Ga=%2d, Gb=%2d') % (
+ rc.get_single_relationship_string(j, i,
+ MALE,
+ FEMALE,
+ relstra, relstrb,
+ only_birth=onlybirth,
+ in_law_a=inlawa, in_law_b=inlawb), j, i )
+ if printrelstr :
+ print(rel + ' |info:', relstra, relstrb)
+ else:
+ print(rel)
else:
- print rel
- else:
- rel = (FMT + ' |info: male, Ga=%2d, Gb=%2d') % (
- rc.get_single_relationship_string(j, i,
- MALE,
- MALE,
- relstra, relstrb,
- only_birth=onlybirth,
- in_law_a=inlawa, in_law_b=inlawb), j, i )
- if printrelstr :
- print rel + ' |info:', relstra, relstrb
+ rel = (FMT + ' |info: male, Ga=%2d, Gb=%2d') % (
+ rc.get_single_relationship_string(j, i,
+ MALE,
+ MALE,
+ relstra, relstrb,
+ only_birth=onlybirth,
+ in_law_a=inlawa, in_law_b=inlawb), j, i )
+ if printrelstr :
+ print(rel + ' |info:', relstra, relstrb)
+ else:
+ print(rel)
+ if testNum == 0 or testNum == 17:
+ print('\ntesting some cousins down\n')
+ #sys.stdin.readline()
+ for i in range(1, MAX) :
+ for j in range (i, MAX) :
+ rnd = random.randint(0, 100)
+ if rnd < 10 :
+ relstra = _rand_relstr(i,'f')
+ relstrb = _rand_relstr(j,'f')
+ if rnd < 5 :
+ rel = (FMT + ' |info: female, Ga=%2d, Gb=%2d') % (
+ rc.get_single_relationship_string(i, j,
+ MALE,
+ FEMALE,
+ relstra, relstrb,
+ only_birth=onlybirth,
+ in_law_a=inlawa, in_law_b=inlawb), i, j)
+ if printrelstr :
+ print(rel + ' |info:', relstra, relstrb)
+ else:
+ print(rel)
else:
- print rel
- print '\n\ntesting some cousins down\n'
- sys.stdin.readline()
- for i in range(1, MAX) :
- for j in range (i, MAX) :
- rnd = random.randint(0, 100)
- if rnd < 10 :
- relstra = _rand_relstr(i,'f')
- relstrb = _rand_relstr(j,'f')
- if rnd < 5 :
- rel = (FMT + ' |info: female, Ga=%2d, Gb=%2d') % (
- rc.get_single_relationship_string(i, j,
- MALE,
- FEMALE,
- relstra, relstrb,
- only_birth=onlybirth,
- in_law_a=inlawa, in_law_b=inlawb), i, j)
- if printrelstr :
- print rel + ' |info:', relstra, relstrb
- else:
- print rel
- else:
- rel = (FMT + ' |info: male, Ga=%2d, Gb=%2d') % (
- rc.get_single_relationship_string(i, j,
- MALE,
- MALE,
- relstra, relstrb,
- only_birth=onlybirth,
- in_law_a=inlawa, in_law_b=inlawb), i, j)
- if printrelstr :
- print rel + ' |info:', relstr
- else:
- print rel
+ rel = (FMT + ' |info: male, Ga=%2d, Gb=%2d') % (
+ rc.get_single_relationship_string(i, j,
+ MALE,
+ MALE,
+ relstra, relstrb,
+ only_birth=onlybirth,
+ in_law_a=inlawa, in_law_b=inlawb), i, j)
+ if printrelstr :
+ print(rel + ' |info:', relstra, relstrb)
+ else:
+ print(rel)
def _testsibling(rc):
vals = [(rc.NORM_SIB, 'sibling'),
@@ -2181,9 +2223,9 @@ def _testsibling(rc):
(UNKNOWN, 'unknown')]:
for inlaw in [False, True]:
for sibt, str in vals:
- print FMT % rc.get_sibling_relationship_string(
+ print(FMT % rc.get_sibling_relationship_string(
sibt, MALE, gendr,
- in_law_a = inlaw) + ' |info:', str, strgen
+ in_law_a = inlaw) + ' |info:', str, strgen)
def _test_spouse(rc):
FMT = '%+50s'
@@ -2199,41 +2241,63 @@ def _test_spouse(rc):
(FEMALE, 'female'),
(UNKNOWN, 'unknown')] :
for spouse_type, str in vals:
- print FMT % rc.get_partner_relationship_string(
+ print(FMT % rc.get_partner_relationship_string(
spouse_type, MALE, gender) + \
- ' |info: gender='+strgen+', rel='+str
+ ' |info: gender='+strgen+', rel='+str)
def test(rc, printrelstr):
""" this is a generic test suite for the singular relationship
- TRANSLATORS: do NOT translate, call this from
+ TRANSLATORS: do NOT translate, call this from
__main__ in the rel_xx.py module.
"""
import sys
-
- print '\nType y to do a test\n\n'
- print 'Test normal relations?'
- data = sys.stdin.readline()
- if data == 'y\n':
- _test(rc, True, False, False, printrelstr)
- print '\n\nTest step relations?'
- data = sys.stdin.readline()
- if data == 'y\n':
- _test(rc, False, False, False, printrelstr)
- print '\n\nTest in-law relations (first pers)?'
- data = sys.stdin.readline()
- if data == 'y\n':
- _test(rc, True, True, False, printrelstr)
- print '\n\nTest step and in-law relations?'
- data = sys.stdin.readline()
- if data == 'y\n':
- _test(rc, False, True, False, printrelstr)
- print '\n\nTest sibling types?'
- data = sys.stdin.readline()
- if data == 'y\n':
+ import argparse
+
+ parser = argparse.ArgumentParser(description='Test the Relationship Calculator')
+ parser.add_argument('-r', type=int, help = 'type of the relations test')
+ parser.add_argument('-s', type=int, help = 'type of the singular relationship test')
+
+ args = parser.parse_args()
+ testNum = args.r
+
+ if testNum == None:
+ print("""
+Select a test:
+ 0 - all tests
+ 1 - Test normal relations
+ 2 - Test step relations
+ 3 - Test in-law relations (first pers)
+ 4 - Test step and in-law relations
+ 5 - Test sibling types
+ 6 - Test partner types
+
+Please enter a test number and press Enter for continue:
+ """)
+ testNum = sys.stdin.readline().strip()
+ testNum = int(testNum)
+
+ if testNum == 0 or testNum == 1:
+ print('\n\n=== Test normal relations ===')
+ _test(rc, True, False, False, printrelstr, args.s)
+
+ if testNum == 0 or testNum == 2:
+ print('\n\n=== Test step relations ===')
+ _test(rc, False, False, False, printrelstr, args.s)
+
+ if testNum == 0 or testNum == 3:
+ print('\n\n=== Test in-law relations (first pers) ===')
+ _test(rc, True, True, False, printrelstr, args.s)
+
+ if testNum == 0 or testNum == 4:
+ print('\n\n=== Test step and in-law relations ===')
+ _test(rc, False, True, False, printrelstr, args.s)
+
+ if testNum == 0 or testNum == 5:
+ print('\n\n=== Test sibling types ===')
_testsibling(rc)
- print '\n\nTest partner types?'
- data = sys.stdin.readline()
- if data == 'y\n':
+
+ if testNum == 0 or testNum == 6:
+ print('\n\n=== Test partner types ===')
_test_spouse(rc)
if __name__ == "__main__":
diff --git a/src/plugins/graph/GVRelGraph.py b/src/plugins/graph/GVRelGraph.py
index ed8cc10d2..69b11df27 100644
--- a/src/plugins/graph/GVRelGraph.py
+++ b/src/plugins/graph/GVRelGraph.py
@@ -57,6 +57,7 @@ import DateHandler
import gen.lib
import Utils
import ThumbNails
+import Relationship
from gen.utils import get_birth_or_fallback, get_death_or_fallback
#------------------------------------------------------------------------
@@ -121,7 +122,11 @@ class RelGraphReport(Report):
menu = options.menu
get_option_by_name = options.menu.get_option_by_name
get_value = lambda name: get_option_by_name(name).get_value()
+
+ self.center_person = database.get_person_from_gramps_id(get_value('pid'))
+ self.increlname = get_value('increlname')
+ self.advrelinfo = get_value('advrelinfo')
self.includeid = get_value('incid')
self.includedates = get_value('incdate')
self.includeurl = get_value('url')
@@ -157,6 +162,10 @@ class RelGraphReport(Report):
self.arrowtailstyle = 'none'
filter_option = get_option_by_name('filter')
self._filter = filter_option.get_filter()
+
+ if self.increlname :
+ # init Relationship Calcilator
+ self.relationship = Relationship.get_relationship_calculator()
def write_report(self):
self.person_handles = self._filter.apply(self.database,
@@ -326,6 +335,9 @@ class RelGraphReport(Report):
elif gender == person.UNKNOWN:
shape = "hexagon"
+ if person == self.center_person and self.increlname:
+ shape = "octagon"
+
if self.colorize == 'colored':
if gender == person.MALE:
color = self.colors['male']
@@ -401,12 +413,28 @@ class RelGraphReport(Report):
if self.includedates:
birth, death = self.get_date_strings(person)
label = label + '%s(%s - %s)' % (lineDelimiter, birth, death)
-
+
+ if self.increlname :
+ # Display Relationship info
+ if self.advrelinfo:
+ (relation, Ga, Gb) = self.relationship.get_one_relationship(self.database, self.center_person, person, True)
+ else:
+ relation = self.relationship.get_one_relationship(self.database, self.center_person, person)
+
+ if self.bUseHtmlOutput:
+ label += '
' + relation
+ if self.advrelinfo:
+ label += '
Ga=%d Gb=%d' % (Ga, Gb)
+ else:
+ label += "%s%s" % (lineDelimiter, relation)
+ if self.advrelinfo:
+ label += "%sGa=%d Gb=%d" % (lineDelimiter, Ga, Gb)
+
# see if we have a table that needs to be terminated
if self.bUseHtmlOutput:
label += ''
return label
- else :
+ else:
# non html label is enclosed by "" so escape other "
return label.replace('"', '\\\"')
@@ -477,7 +505,7 @@ class RelGraphOptions(MenuReportOptions):
self.__filter.set_help(
_("Determines what people are included in the graph"))
add_option("filter", self.__filter)
- self.__filter.connect('value-changed', self.__filter_changed)
+ #self.__filter.connect('value-changed', self.__filter_changed)
self.__pid = PersonOption(_("Filter Person"))
self.__pid.set_help(_("The center person for the filter"))
@@ -486,6 +514,18 @@ class RelGraphOptions(MenuReportOptions):
self.__update_filters()
+ self.__include_relname = BooleanOption(
+ _("Include Relationships"), True)
+ self.__include_relname.set_help(_("Include the Relationships"
+ "names, for display relations to the center person"))
+ add_option("increlname", self.__include_relname)
+
+ self.__include_advrelinfo = BooleanOption(
+ _("Advanced Relationships info"), False)
+ self.__include_advrelinfo.set_help(_("Include Ga and Gb info,"
+ " useful for debug the Relationship calculator"))
+ add_option("advrelinfo", self.__include_advrelinfo)
+
self.incdate = BooleanOption(
_("Include Birth, Marriage and Death dates"), True)
self.incdate.set_help(_("Include the dates that the individual was "
@@ -604,18 +644,18 @@ class RelGraphOptions(MenuReportOptions):
else:
self.justyears.set_available(False)
- def __filter_changed(self):
- """
- Handle filter change. If the filter is not specific to a person,
- disable the person option
- """
- filter_value = self.__filter.get_value()
- if filter_value in [1, 2, 3, 4]:
- # Filters 1, 2, 3 and 4 rely on the center person
- self.__pid.set_available(True)
- else:
- # The rest don't
- self.__pid.set_available(False)
+ #def __filter_changed(self):
+ #"""
+ #Handle filter change. If the filter is not specific to a person,
+ #disable the person option
+ #"""
+ #filter_value = self.__filter.get_value()
+ #if filter_value in [1, 2, 3, 4]:
+ ## Filters 1, 2, 3 and 4 rely on the center person
+ #self.__pid.set_available(True)
+ #else:
+ ## The rest don't
+ #self.__pid.set_available(False)
def __image_changed(self):
"""