Ejemplo n.º 1
0
    def test_041_Pointer_sub(self):
        """Test Pointer class."""
        class Parser(object):
            def __init__(self):
                self.xref0 = {
                    b"@pointer0@": (0, "TAG0"),
                    b"@pointer1@": (1, "TAG1")
                }

            def read_record(self, offset):
                return str(offset)

        dialect = model.DIALECT_MYHERITAGE
        parser = Parser()
        husb = model.make_record(1, None, "HUSB", b"@pointer0@", [], 0,
                                 dialect, parser).freeze()
        wife = model.make_record(1, None, "WIFE", b"@pointer1@", [], 0,
                                 dialect, parser).freeze()
        fam = model.make_record(0, None, "FAM", "", [husb, wife], 0, dialect,
                                parser).freeze()

        rec = fam.sub_tag("HUSB", follow=True)
        self.assertEqual(rec, "0")
        rec = fam.sub_tag("HUSB", follow=False)
        self.assertTrue(rec is not None)
        self.assertIsInstance(rec, model.Pointer)

        recs = fam.sub_tags("HUSB", "WIFE", follow=True)
        self.assertEqual(recs, ["0", "1"])
        recs = fam.sub_tags("HUSB", "WIFE", follow=False)
        self.assertEqual(len(recs), 2)
        self.assertIsInstance(recs[0], model.Pointer)
        self.assertIsInstance(recs[1], model.Pointer)
Ejemplo n.º 2
0
    def test_022_name_myher(self):
        """Test Name class with MYHERITAGE dialect."""

        dialect = model.DIALECT_MYHERITAGE
        married = model.make_record(2, None, "_MARNM", "Smith", [], 0,
                                    dialect).freeze()
        names = [
            model.make_record(1, None, "NAME", "Jane /Sawyer/ A.", [married],
                              0, dialect).freeze()
        ]
        name = model.Name(names, dialect)

        self.assertTrue(name._primary is names[0])
        self.assertEqual(name.surname, "Smith")
        self.assertEqual(name.given, "Jane A.")
        self.assertEqual(name.maiden, "Sawyer")

        self.assertEqual(name.order(model.ORDER_SURNAME_GIVEN),
                         ("1Smith", "1Jane A."))
        self.assertEqual(name.order(model.ORDER_GIVEN_SURNAME),
                         ("1Jane A.", "1Smith"))
        self.assertEqual(name.order(model.ORDER_MAIDEN_GIVEN),
                         ("1Sawyer", "1Jane A."))
        self.assertEqual(name.order(model.ORDER_GIVEN_MAIDEN),
                         ("1Jane A.", "1Sawyer"))

        self.assertEqual(name.format(), ("Jane Smith A."))
Ejemplo n.º 3
0
    def test_021_name_altree(self):
        """Test Name class with ALTREE dialect."""

        dialect = model.DIALECT_ALTREE
        surn = model.make_record(2, None, "SURN", "Sawyer", [], 0, dialect).freeze()
        names = [model.make_record(1, None, "NAME", "Jane /Smith (Sawyer)/ A.", [surn], 0, dialect).freeze()]
        name = model.Name(names, dialect)

        self.assertTrue(name._primary is names[0])
        self.assertEqual(name.surname, "Smith")
        self.assertEqual(name.given, "Jane A.")
        self.assertEqual(name.maiden, "Sawyer")

        self.assertEqual(name.order(model.ORDER_SURNAME_GIVEN), ("1Smith", "1Jane A."))
        self.assertEqual(name.order(model.ORDER_GIVEN_SURNAME), ("1Jane A.", "1Smith"))
        self.assertEqual(name.order(model.ORDER_MAIDEN_GIVEN), ("1Sawyer", "1Jane A."))
        self.assertEqual(name.order(model.ORDER_GIVEN_MAIDEN), ("1Jane A.", "1Sawyer"))

        self.assertEqual(name.format(), ("Jane Smith A."))

        names = [model.make_record(1, None, "NAME", "Jane /?/ A.", [], 0, dialect).freeze()]
        name = model.Name(names, dialect)

        self.assertTrue(name._primary is names[0])
        self.assertEqual(name.surname, "")
        self.assertEqual(name.given, "Jane A.")
        self.assertTrue(name.maiden is None)

        self.assertEqual(name.order(model.ORDER_SURNAME_GIVEN), ("2", "1Jane A."))
        self.assertEqual(name.order(model.ORDER_GIVEN_SURNAME), ("1Jane A.", "2"))
        self.assertEqual(name.order(model.ORDER_MAIDEN_GIVEN), ("2", "1Jane A."))
        self.assertEqual(name.order(model.ORDER_GIVEN_MAIDEN), ("1Jane A.", "2"))

        self.assertEqual(name.format(), ("Jane A."))
Ejemplo n.º 4
0
    def test_020_name_default(self):
        """Test Name class with DEFAULT dialect."""

        dialect = model.DIALECT_DEFAULT
        names = [model.make_record(1, None, "NAME", "John /Smith/", [], 0, dialect).freeze()]
        name = model.Name(names, dialect)

        self.assertTrue(name._primary is names[0])
        self.assertEqual(name.surname, "Smith")
        self.assertEqual(name.given, "John")
        self.assertTrue(name.maiden is None)

        self.assertEqual(name.order(model.ORDER_SURNAME_GIVEN), ("1Smith", "1John"))
        self.assertEqual(name.order(model.ORDER_GIVEN_SURNAME), ("1John", "1Smith"))
        self.assertEqual(name.order(model.ORDER_MAIDEN_GIVEN), ("1Smith", "1John"))
        self.assertEqual(name.order(model.ORDER_GIVEN_MAIDEN), ("1John", "1Smith"))

        self.assertEqual(name.format(), ("John Smith"))

        names = [model.make_record(1, None, "NAME", "John", [], 0, dialect).freeze()]
        name = model.Name(names, dialect)

        self.assertTrue(name._primary is names[0])
        self.assertEqual(name.surname, "")
        self.assertEqual(name.given, "John")
        self.assertTrue(name.maiden is None)

        self.assertEqual(name.order(model.ORDER_SURNAME_GIVEN), ("2", "1John"))
        self.assertEqual(name.order(model.ORDER_GIVEN_SURNAME), ("1John", "2"))
        self.assertEqual(name.order(model.ORDER_MAIDEN_GIVEN), ("2", "1John"))
        self.assertEqual(name.order(model.ORDER_GIVEN_MAIDEN), ("1John", "2"))

        self.assertEqual(name.format(), ("John"))

        name_type = model.make_record(2, None, "TYPE", "maiden", [], 0, dialect).freeze()
        names = [model.make_record(1, None, "NAME", "/Sawyer/", [name_type], 0, dialect).freeze(),
                 model.make_record(1, None, "NAME", "Jane /Smith/ A.", [], 0, dialect).freeze()]
        name = model.Name(names, dialect)

        self.assertTrue(name._primary is names[1])
        self.assertEqual(name.surname, "Smith")
        self.assertEqual(name.given, "Jane A.")
        self.assertEqual(name.maiden, "Sawyer")

        self.assertEqual(name.order(model.ORDER_SURNAME_GIVEN), ("1Smith", "1Jane A."))
        self.assertEqual(name.order(model.ORDER_GIVEN_SURNAME), ("1Jane A.", "1Smith"))
        self.assertEqual(name.order(model.ORDER_MAIDEN_GIVEN), ("1Sawyer", "1Jane A."))
        self.assertEqual(name.order(model.ORDER_GIVEN_MAIDEN), ("1Jane A.", "1Sawyer"))

        self.assertEqual(name.format(), ("Jane Smith A."))
Ejemplo n.º 5
0
    def test_040_Pointer(self):
        """Test Pointer class."""
        class Parser(object):
            def __init__(self):
                self.xref0 = {
                    b"@pointer0@": (0, "TAG0"),
                    b"@pointer1@": (1, "TAG1")
                }

            def read_record(self, offset):
                return str(offset)

        pointer = model.Pointer(Parser())
        pointer.value = b"@pointer0@"
        pointer.freeze()

        self.assertEqual(pointer.value, b"@pointer0@")
        self.assertEqual(pointer.ref, "0")

        dialect = model.DIALECT_MYHERITAGE
        pointer = model.make_record(1, None, "FAMC", b"@pointer1@", [], 0,
                                    dialect, Parser()).freeze()
        self.assertIsInstance(pointer, model.Pointer)
        self.assertEqual(pointer.value, b"@pointer1@")
        self.assertEqual(pointer.ref, "1")
Ejemplo n.º 6
0
    def test_030_date(self):
        """Test Date class."""

        dialect = model.DIALECT_MYHERITAGE
        date = model.make_record(1, None, "DATE", "1970", [], 0, dialect).freeze()
        self.assertIsInstance(date, model.Date)
        self.assertIsInstance(date.value, DateValue)
Ejemplo n.º 7
0
def test_003_family_events():
    """Test family_events method."""

    dialect = model.DIALECT_MYHERITAGE

    rtype = model.make_record(2, None, "TYPE", "SomeType", [], 0, dialect,
                              None).freeze()
    rec1 = model.make_record(1, None, "MARR", "Y", [rtype], 0, dialect,
                             None).freeze()
    plac = model.make_record(2, None, "PLAC", "Some Place", [], 0, dialect,
                             None).freeze()
    rec2 = model.make_record(1, None, "DIV", "", [plac], 0, dialect,
                             None).freeze()
    rec3 = model.make_record(1, None, "OCCU", "", [], 0, dialect,
                             None).freeze()
    rec4 = model.make_record(1, None, "EDUC", "", [], 0, dialect,
                             None).freeze()
    fam = model.make_record(0, None, "FAM", "", [rec1, rec2, rec3, rec4], 0,
                            dialect, None).freeze()
    evts = events.family_events(fam)
    assert len(evts) == 2
    assert evts[0].tag == 'MARR'
    assert evts[0].value == 'Y'
    assert evts[0].type == 'SomeType'
    assert evts[0].place is None
    assert evts[1].tag == 'DIV'
    assert evts[1].value == ''
    assert evts[1].type is None
    assert evts[1].place == 'Some Place'

    evts = events.family_events(fam, ['MARR'])
    assert len(evts) == 1
    assert evts[0].tag == 'MARR'
Ejemplo n.º 8
0
def test_002_indi_attributes():
    """Test indi_attributes method."""

    dialect = model.DIALECT_MYHERITAGE

    rec1 = model.make_record(1, None, "BIRT", "", [], 0, dialect,
                             None).freeze()
    rec2 = model.make_record(1, None, "DEAT", "Y", [], 0, dialect,
                             None).freeze()
    rtype = model.make_record(2, None, "TYPE", "SomeType", [], 0, dialect,
                              None).freeze()
    rec3 = model.make_record(1, None, "OCCU", "Occupational Occupation",
                             [rtype], 0, dialect, None).freeze()
    plac = model.make_record(2, None, "PLAC", "Some Place", [], 0, dialect,
                             None).freeze()
    rec4 = model.make_record(1, None, "EDUC", "Sunday Church", [plac], 0,
                             dialect, None).freeze()
    person = model.make_record(0, None, "INDI", "", [rec1, rec2, rec3, rec4],
                               0, dialect, None).freeze()
    evts = events.indi_attributes(person)
    assert len(evts) == 2
    assert evts[0].tag == 'OCCU'
    assert evts[0].value == 'Occupational Occupation'
    assert evts[0].type == 'SomeType'
    assert evts[0].place is None
    assert evts[1].tag == 'EDUC'
    assert evts[1].value == 'Sunday Church'
    assert evts[1].type is None
    assert evts[1].place == 'Some Place'

    evts = events.indi_attributes(person, ['OCCU'])
    assert len(evts) == 1
    assert evts[0].tag == 'OCCU'
Ejemplo n.º 9
0
    def test_030_date(self):
        """Test Date class."""

        dialect = model.DIALECT_MYHERITAGE
        date = model.make_record(1, None, "DATE", "1970", [], 0,
                                 dialect).freeze()
        self.assertIsInstance(date, model.Date)
        self.assertIsInstance(date.value, DateValue)

        # empty date tag makes Date with empty DateValue
        dialect = model.DIALECT_DEFAULT
        date = model.make_record(1, None, "DATE", None, [], 0,
                                 dialect).freeze()
        self.assertIsInstance(date, model.Date)
        self.assertIsInstance(date.value, DateValue)
        self.assertEqual(date.value.template, "")

        date = model.make_record(1, None, "DATE", "", [], 0, dialect).freeze()
        self.assertIsInstance(date, model.Date)
        self.assertIsInstance(date.value, DateValue)
        self.assertEqual(date.value.template, "")
Ejemplo n.º 10
0
    def test_900_make_record(self):
        """Test make_record method()"""

        rec = model.make_record(0, "@xref@", "TAG", "value", [], 1000,
                                model.DIALECT_DEFAULT)
        rec.freeze()
        self.assertTrue(type(rec) is model.Record)
        self.assertEqual(rec.level, 0)
        self.assertEqual(rec.xref_id, "@xref@")
        self.assertEqual(rec.tag, "TAG")
        self.assertEqual(rec.value, "value")
        self.assertEqual(rec.sub_records, [])
        self.assertEqual(rec.offset, 1000)
        self.assertEqual(rec.dialect, model.DIALECT_DEFAULT)

        rec = model.make_record(1, None, "NAME", "Joe", [], 1000,
                                model.DIALECT_ALTREE)
        rec.freeze()
        self.assertTrue(type(rec) is model.NameRec)
        self.assertEqual(rec.level, 1)
        self.assertTrue(rec.xref_id is None)
        self.assertEqual(rec.tag, "NAME")
        self.assertEqual(rec.value, ("Joe", "", ""))
        self.assertEqual(rec.sub_records, [])
        self.assertEqual(rec.offset, 1000)
        self.assertEqual(rec.dialect, model.DIALECT_ALTREE)

        rec = model.make_record(0, "@I1@", "INDI", None, [], 1000,
                                model.DIALECT_MYHERITAGE)
        rec.freeze()
        self.assertTrue(type(rec) is model.Individual)
        self.assertEqual(rec.level, 0)
        self.assertEqual(rec.xref_id, "@I1@")
        self.assertEqual(rec.tag, "INDI")
        self.assertTrue(rec.value is None)
        self.assertEqual(rec.sub_records, [])
        self.assertEqual(rec.offset, 1000)
        self.assertEqual(rec.dialect, model.DIALECT_MYHERITAGE)
Ejemplo n.º 11
0
def test_001_indi_events():
    """Test indi_events method."""

    dialect = model.DIALECT_MYHERITAGE

    rtype = model.make_record(2, None, "TYPE", "SomeType", [], 0, dialect,
                              None).freeze()
    rec1 = model.make_record(1, None, "BIRT", "", [rtype], 0, dialect,
                             None).freeze()
    plac = model.make_record(2, None, "PLAC", "Some Place", [], 0, dialect,
                             None).freeze()
    caus = model.make_record(2, None, "CAUS", "Some cause", [], 0, dialect,
                             None).freeze()
    rec2 = model.make_record(1, None, "DEAT", "Y", [plac, caus], 0, dialect,
                             None).freeze()
    rec3 = model.make_record(1, None, "OCCU", "", [], 0, dialect,
                             None).freeze()
    rec4 = model.make_record(1, None, "EDUC", "", [], 0, dialect,
                             None).freeze()
    person = model.make_record(0, None, "INDI", "", [rec1, rec2, rec3, rec4],
                               0, dialect, None).freeze()
    evts = events.indi_events(person)
    assert len(evts) == 2
    assert evts[0].tag == 'BIRT'
    assert evts[0].value == ''
    assert evts[0].type == 'SomeType'
    assert evts[0].place is None
    assert evts[0].cause is None
    assert evts[1].tag == 'DEAT'
    assert evts[1].value == 'Y'
    assert evts[1].type is None
    assert evts[1].place == 'Some Place'
    assert evts[1].cause == 'Some cause'

    evts = events.indi_events(person, ['BIRT'])
    assert len(evts) == 1
    assert evts[0].tag == 'BIRT'
Ejemplo n.º 12
0
def test_050_personImageFile():
    """Test personImageFile method."""

    # FORM is subordinate of OBJE
    dialect = model.DIALECT_MYHERITAGE
    form = model.make_record(2, None, "FORM", "JPG", [], 0, dialect,
                             None).freeze()
    file = model.make_record(2, None, "FILE", "/path/to/file.jpeg", [], 0,
                             dialect, None).freeze()
    obje = model.make_record(1, None, "OBJE", "", [file, form], 0, dialect,
                             None).freeze()
    person = model.make_record(0, None, "INDI", "", [obje], 0, dialect,
                               None).freeze()
    assert utils.personImageFile(person) == "/path/to/file.jpeg"

    # FORM is subordinate of FILE
    dialect = model.DIALECT_MYHERITAGE
    form = model.make_record(3, None, "FORM", "JPG", [], 0, dialect,
                             None).freeze()
    file = model.make_record(2, None, "FILE", "/path/to/file.jpeg", [form], 0,
                             dialect, None).freeze()
    obje = model.make_record(1, None, "OBJE", "", [file], 0, dialect,
                             None).freeze()
    person = model.make_record(0, None, "INDI", "", [obje], 0, dialect,
                               None).freeze()
    assert utils.personImageFile(person) == "/path/to/file.jpeg"

    # FORM is subordinate of OBJE
    dialect = model.DIALECT_MYHERITAGE
    form = model.make_record(2, None, "FORM", "WAV", [], 0, dialect,
                             None).freeze()
    file = model.make_record(2, None, "FILE", "/path/to/file.wav", [], 0,
                             dialect, None).freeze()
    obje = model.make_record(1, None, "OBJE", "", [file, form], 0, dialect,
                             None).freeze()
    person = model.make_record(0, None, "INDI", "", [obje], 0, dialect,
                               None).freeze()
    assert utils.personImageFile(person) == None

    # FORM is subordinate of FILE
    dialect = model.DIALECT_MYHERITAGE
    form = model.make_record(3, None, "FORM", "WAV", [], 0, dialect,
                             None).freeze()
    file = model.make_record(2, None, "FILE", "/path/to/file.wav", [form], 0,
                             dialect, None).freeze()
    obje = model.make_record(1, None, "OBJE", "", [file], 0, dialect,
                             None).freeze()
    person = model.make_record(0, None, "INDI", "", [obje], 0, dialect,
                               None).freeze()
    assert utils.personImageFile(person) == None

    # _PRIM flag is set on one of the two OBJE
    dialect = model.DIALECT_MYHERITAGE
    form = model.make_record(2, None, "FORM", "JPG", [], 0, dialect,
                             None).freeze()
    file = model.make_record(2, None, "FILE", "/path/to/file.jpg", [], 0,
                             dialect, None).freeze()
    obje1 = model.make_record(1, None, "OBJE", "", [file, form], 0, dialect,
                              None).freeze()
    prim_y = model.make_record(2, None, "_PRIM", "Y", [], 0, dialect,
                               None).freeze()
    form = model.make_record(2, None, "FORM", "JPG", [], 0, dialect,
                             None).freeze()
    file = model.make_record(2, None, "FILE", "/path/to/file_primary.jpg", [],
                             0, dialect, None).freeze()
    obje2 = model.make_record(1, None, "OBJE", "", [file, form, prim_y], 0,
                              dialect, None).freeze()
    person = model.make_record(0, None, "INDI", "", [obje1, obje2], 0, dialect,
                               None).freeze()
    assert utils.personImageFile(person) == "/path/to/file_primary.jpg"
    person = model.make_record(0, None, "INDI", "", [obje2, obje1], 0, dialect,
                               None).freeze()
    assert utils.personImageFile(person) == "/path/to/file_primary.jpg"

    # multiple FILEs per OBJE, choose JPG over WAV
    dialect = model.DIALECT_MYHERITAGE
    form = model.make_record(3, None, "FORM", "JPG", [], 0, dialect,
                             None).freeze()
    file1 = model.make_record(2, None, "FILE", "/path/to/file.jpeg", [form], 0,
                              dialect, None).freeze()
    form = model.make_record(3, None, "FORM", "WAV", [], 0, dialect,
                             None).freeze()
    file2 = model.make_record(2, None, "FILE", "/path/to/file.wav", [form], 0,
                              dialect, None).freeze()
    obje = model.make_record(1, None, "OBJE", "", [file1, file2], 0, dialect,
                             None).freeze()
    person = model.make_record(0, None, "INDI", "", [obje], 0, dialect,
                               None).freeze()
    assert utils.personImageFile(person) == "/path/to/file.jpeg"
    obje = model.make_record(1, None, "OBJE", "", [file2, file1], 0, dialect,
                             None).freeze()
    person = model.make_record(0, None, "INDI", "", [obje], 0, dialect,
                               None).freeze()
    assert utils.personImageFile(person) == "/path/to/file.jpeg"