Пример #1
0
        public void Test_Names_02()
        {
            using (BaseContext ctx = new BaseContext(null)) {
                Assembly assembly = typeof(CoreTests).Assembly;
                using (Stream stmGed1 = assembly.GetManifestResourceStream("GKTests.Resources.test_names_02.ged")) {
                    var gedcomProvider = new GEDCOMProvider(ctx.Tree);
                    gedcomProvider.LoadFromStreamExt(stmGed1, stmGed1);

                    GEDCOMIndividualRecord iRec1 = ctx.Tree.XRefIndex_Find("I1") as GEDCOMIndividualRecord;
                    Assert.IsNotNull(iRec1);
                    Assert.AreEqual("Анна Сидоровна Иванова (Петрова)", iRec1.GetPrimaryFullName());
                    // std-surn exists and double, and sub-surn same
                    // sub-givn and sub-patn exists
                    var parts = GKUtils.GetNameParts(iRec1);
                    Assert.AreEqual("Иванова (Петрова)", parts.Surname);
                    Assert.AreEqual("Анна", parts.Name);
                    Assert.AreEqual("Сидоровна", parts.Patronymic);

                    GEDCOMIndividualRecord iRec2 = ctx.Tree.XRefIndex_Find("I2") as GEDCOMIndividualRecord;
                    Assert.IsNotNull(iRec2);
                    Assert.AreEqual("Аглая Федоровна Иванова", iRec2.GetPrimaryFullName());
                    // std-surn exists (maiden), and sub-surn same, and sub-marn exists (married)
                    // sub-givn and sub-patn exists
                    parts = GKUtils.GetNameParts(iRec2);
                    Assert.AreEqual("Иванова", parts.Surname);
                    Assert.AreEqual("Лескова", parts.MarriedSurname);
                    Assert.AreEqual("Аглая", parts.Name);
                    Assert.AreEqual("Федоровна", parts.Patronymic);
                }
            }
        }
Пример #2
0
        public void testAhnenblattDate()
        {
            string gedcom = "0 HEAD\n1 SOUR AHN\n0 @I1@ INDI\n1 BIRT\n2 DATE (20/12-1980)";

            // TODO this bit needs to go into utility class
            GEDCOMTree     tee = new GEDCOMTree();
            GEDCOMProvider gp  = new GEDCOMProvider(tee);

            try {
                gp.LoadFromString(gedcom);
            } catch (Exception) {
            }
            Assert.AreEqual(1, tee.RecordsCount);
            GEDCOMRecord rec = tee[0];

            Assert.IsTrue(rec is GEDCOMIndividualRecord);
            GEDCOMIndividualRecord rec2 = (GEDCOMIndividualRecord)rec;
            // end for utility class

            GEDCOMList <GEDCOMCustomEvent> events = rec2.Events;

            Assert.AreEqual(1, events.Count);
            GEDCOMCustomEvent birt = events.Extract(0);
            GEDCOMDateValue   dv   = birt.Date;

            Assert.AreEqual("20 DEC 1980", dv.StringValue);
        }
Пример #3
0
        public void Test_Names_01()
        {
            using (BaseContext ctx = new BaseContext(null)) {
                Assembly assembly = typeof(CoreTests).Assembly;
                using (Stream stmGed1 = assembly.GetManifestResourceStream("GKTests.Resources.test_names_01.ged")) {
                    var gedcomProvider = new GEDCOMProvider(ctx.Tree);
                    gedcomProvider.LoadFromStreamExt(stmGed1, stmGed1);

                    GEDCOMIndividualRecord iRec1 = ctx.Tree.XRefIndex_Find("I1") as GEDCOMIndividualRecord;
                    Assert.IsNotNull(iRec1);
                    Assert.AreEqual("Александра Анатольевна Лазорева (Иванова)", iRec1.GetPrimaryFullName());
                    // std-surn exists and double, but sub-surn has only second part
                    // sub-givn exists, but sub-patn is not
                    var parts = GKUtils.GetNameParts(iRec1);
                    Assert.AreEqual("Иванова", parts.Surname);
                    Assert.AreEqual("Александра", parts.Name);
                    Assert.AreEqual("Анатольевна", parts.Patronymic);

                    GEDCOMIndividualRecord iRec2 = ctx.Tree.XRefIndex_Find("I2") as GEDCOMIndividualRecord;
                    Assert.IsNotNull(iRec2);
                    Assert.AreEqual("Петр Константинович Лазорев", iRec2.GetPrimaryFullName());
                    // std-surn exists, but sub-surn is not
                    // sub-givn exists, but sub-patn is not
                    parts = GKUtils.GetNameParts(iRec2);
                    Assert.AreEqual("Лазорев", parts.Surname);
                    Assert.AreEqual("Петр", parts.Name);
                    Assert.AreEqual("Константинович", parts.Patronymic);
                }
            }
        }
Пример #4
0
        public void Test_GetGEDCOMFormat()
        {
            GEDCOMTree tree = new GEDCOMTree();

            // Tests of determine GEDCOM-format
            Assert.AreEqual(GEDCOMFormat.gf_Unknown, GEDCOMProvider.GetGEDCOMFormat(tree));
            tree.Header.Source = "GENBOX";
            Assert.AreEqual(GEDCOMFormat.gf_GENBOX, GEDCOMProvider.GetGEDCOMFormat(tree));
        }
Пример #5
0
 public void Test_TrueAnsel()
 {
     using (BaseContext ctx = new BaseContext(null)) {
         Assembly assembly = typeof(CoreTests).Assembly;
         using (Stream stmGed1 = assembly.GetManifestResourceStream("GKTests.Resources.test_ansel.ged")) {
             var gedcomProvider = new GEDCOMProvider(ctx.Tree);
             gedcomProvider.LoadFromStreamExt(stmGed1, stmGed1);
         }
     }
 }
Пример #6
0
        public void Test_GetTagProps()
        {
            TagProperties props = GEDCOMProvider.GetTagProps("ADDR");

            Assert.IsNotNull(props);
            Assert.IsTrue(props.SkipEmpty);

            props = GEDCOMProvider.GetTagProps("test");
            Assert.IsNull(props);
        }
Пример #7
0
        public void Test_FTB6_ANSI_Win1251()
        {
            using (BaseContext ctx = new BaseContext(null)) {
                Assembly assembly = typeof(CoreTests).Assembly;
                using (Stream stmGed1 = assembly.GetManifestResourceStream("GKTests.Resources.test_ftb6_ansi(win1251).ged")) {
                    var gedcomProvider = new GEDCOMProvider(ctx.Tree);
                    gedcomProvider.LoadFromStreamExt(stmGed1, stmGed1);

                    GEDCOMIndividualRecord iRec1 = ctx.Tree.XRefIndex_Find("I1") as GEDCOMIndividualRecord;
                    Assert.IsNotNull(iRec1);

                    Assert.AreEqual("Иван Васильевич Петров", iRec1.GetPrimaryFullName());
                }
            }
        }
Пример #8
0
        public override string ParseString(string strValue)
        {
            // Format: AFT DATE, BEF DATE, BET AFT_DATE AND BEF_DATE

            fDateAfter.Clear();
            fDateBefore.Clear();

            string result = strValue;

            if (!string.IsNullOrEmpty(result))
            {
                string su = result.Substring(0, 3).ToUpperInvariant();

                if (su == GEDCOMDateRangeArray[0])
                {
                    result = result.Remove(0, 3);
                    result = GEDCOMUtils.ExtractDelimiter(result, 0);
                    result = fDateAfter.ParseString(result);
                }
                else if (su == GEDCOMDateRangeArray[1])
                {
                    result = result.Remove(0, 3);
                    result = GEDCOMUtils.ExtractDelimiter(result, 0);
                    result = fDateBefore.ParseString(result);
                }
                else if (su == GEDCOMDateRangeArray[2])
                {
                    result = result.Remove(0, 3);
                    result = GEDCOMUtils.ExtractDelimiter(result, 0);
                    result = GEDCOMProvider.FixFTB(result);
                    result = fDateAfter.ParseString(result);
                    result = GEDCOMUtils.ExtractDelimiter(result, 0);

                    su = result.Substring(0, 3).ToUpper();

                    if (su == GEDCOMDateRangeArray[3])
                    {
                        result = result.Remove(0, 3);
                        result = GEDCOMUtils.ExtractDelimiter(result, 0);
                        result = GEDCOMProvider.FixFTB(result);
                        result = fDateBefore.ParseString(result);
                    }
                }
            }
            return(result);
        }
Пример #9
0
        public void Test_StdGEDCOM_Notes()
        {
            using (BaseContext ctx = new BaseContext(null)) {
                Assembly assembly = typeof(CoreTests).Assembly;
                using (Stream stmGed1 = assembly.GetManifestResourceStream("GKTests.Resources.test_stdgedcom_notes.ged")) {
                    var gedcomProvider = new GEDCOMProvider(ctx.Tree);
                    gedcomProvider.LoadFromStreamExt(stmGed1, stmGed1);

                    GEDCOMNoteRecord noteRec1 = ctx.Tree.XRefIndex_Find("N1") as GEDCOMNoteRecord;
                    Assert.IsNotNull(noteRec1);
                    Assert.AreEqual("Test1\r\ntest2\r\ntest3", noteRec1.Note.Text);

                    GEDCOMNoteRecord noteRec2 = ctx.Tree.XRefIndex_Find("N2") as GEDCOMNoteRecord;
                    Assert.IsNotNull(noteRec2);
                    Assert.AreEqual("Test\r\ntest2\r\ntest3", noteRec2.Note.Text);
                }
            }
        }
Пример #10
0
        // Support function. Parse GEDCOM string, returns ADDR object found
        private GEDCOMAddress AddrParse(string text)
        {
            // TODO should go into general utility class
            GEDCOMTree     tee = new GEDCOMTree();
            GEDCOMProvider gp  = new GEDCOMProvider(tee);

            try {
                gp.LoadFromString(text);
            } catch (Exception) {
            }
            Assert.AreEqual(1, tee.RecordsCount);
            GEDCOMRecord rec = tee[0];

            Assert.IsTrue(rec is GEDCOMIndividualRecord);
            GEDCOMIndividualRecord rec2 = (GEDCOMIndividualRecord)rec;
            // end for utility class

            GEDCOMList <GEDCOMCustomEvent> events = rec2.Events;

            Assert.AreEqual(1, events.Count);
            GEDCOMCustomEvent evt = events[0];

            return(evt.Address);
        }
Пример #11
0
        public bool IsEmptySkip()
        {
            TagProperties props = GEDCOMProvider.GetTagProps(fName);

            return(props != null && props.SkipEmpty);
        }
Пример #12
0
        public override string ParseString(string strValue)
        {
            GEDCOMFormat format = GEDCOMProvider.GetGEDCOMFormat(Owner);

            fApproximated = GEDCOMApproximated.daExact;
            fCalendar     = GEDCOMCalendar.dcGregorian;
            fYear         = UNKNOWN_YEAR;
            fYearBC       = false;
            fYearModifier = "";
            fMonth        = "";
            fDay          = 0;

            if (!string.IsNullOrEmpty(strValue))
            {
                if (format == GEDCOMFormat.gf_Ahnenblatt)
                {
                    strValue = PrepareAhnenblattDate(strValue);
                }

                var strTok = new StringTokenizer(strValue);
                strTok.IgnoreWhiteSpace = false;
                strTok.Next();
                strTok.SkipWhiteSpaces();

                // extract approximated
                var token = strTok.CurrentToken;
                if (token.Kind == TokenKind.Word)
                {
                    string su  = token.Value.ToUpperInvariant();
                    int    idx = SysUtils.IndexOf(GEDCOMDateApproximatedArray, su);
                    if (idx >= 0)
                    {
                        fApproximated = (GEDCOMApproximated)idx;
                        strTok.Next();
                        strTok.SkipWhiteSpaces();
                    }
                }

                // extract escape
                token = strTok.CurrentToken;
                if (token.Kind == TokenKind.Symbol && token.Value[0] == '@')
                {
                    var escapeStr = token.Value;
                    do
                    {
                        token      = strTok.Next();
                        escapeStr += token.Value;
                    } while (token.Kind != TokenKind.Symbol || token.Value[0] != '@');
                    // FIXME: check for errors

                    int idx = SysUtils.IndexOf(GEDCOMDateEscapeArray, escapeStr);
                    if (idx >= 0)
                    {
                        fCalendar = (GEDCOMCalendar)idx;
                    }

                    strTok.Next();
                    strTok.SkipWhiteSpaces();
                }

                // extract day
                token = strTok.CurrentToken;
                if (token.Kind == TokenKind.Number && token.Value.Length <= 2)
                {
                    fDay  = (byte)(int)token.ValObj;
                    token = strTok.Next();
                }

                // extract delimiter
                if (token.Kind == TokenKind.WhiteSpace && token.Value[0] == ' ')
                {
                    fDateFormat = GEDCOMDateFormat.dfGEDCOMStd;
                    token       = strTok.Next();
                }
                else if (token.Kind == TokenKind.Symbol && token.Value[0] == '.')
                {
                    fDateFormat = GEDCOMDateFormat.dfSystem;
                    token       = strTok.Next();
                }

                // extract month
                string[] monthes = GetMonthNames(fCalendar);
                if (token.Kind == TokenKind.Word)
                {
                    string mth = token.Value;

                    int idx = SysUtils.IndexOf(monthes, mth);
                    if (idx >= 0)
                    {
                        fMonth = mth;
                    }

                    token = strTok.Next();
                }
                else if (fDateFormat == GEDCOMDateFormat.dfSystem && token.Kind == TokenKind.Number)
                {
                    int idx = (int)token.ValObj;
                    fMonth = monthes[idx - 1];

                    token = strTok.Next();
                }

                // extract delimiter
                if (fDateFormat == GEDCOMDateFormat.dfSystem)
                {
                    if (token.Kind == TokenKind.Symbol && token.Value[0] == '.')
                    {
                        token = strTok.Next();
                    }
                }
                else
                {
                    if (token.Kind == TokenKind.WhiteSpace && token.Value[0] == ' ')
                    {
                        token = strTok.Next();
                    }
                }

                // extract year
                if (token.Kind == TokenKind.Number)
                {
                    fYear = (short)(int)token.ValObj;
                    token = strTok.Next();

                    // extract year modifier
                    if (token.Kind == TokenKind.Symbol && token.Value[0] == '/')
                    {
                        token = strTok.Next();
                        if (token.Kind != TokenKind.Number)
                        {
                            // error
                        }
                        fYearModifier = token.Value;
                        token         = strTok.Next();
                    }

                    // extract bc/ad
                    if (token.Kind == TokenKind.Word && token.Value[0] == 'B')
                    {
                        token = strTok.Next();
                        if (token.Kind != TokenKind.Symbol || token.Value[0] != '.')
                        {
                            // error
                        }
                        token = strTok.Next();
                        if (token.Kind != TokenKind.Word || token.Value[0] != 'C')
                        {
                            // error
                        }
                        token = strTok.Next();
                        if (token.Kind != TokenKind.Symbol || token.Value[0] != '.')
                        {
                            // error
                        }
                        strTok.Next();
                        fYearBC = true;
                    }
                }

                strValue = strTok.GetRest();
            }

            DateChanged();

            return(strValue);
        }