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); } } }
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); }
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); } } }
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)); }
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); } } }
public void Test_GetTagProps() { TagProperties props = GEDCOMProvider.GetTagProps("ADDR"); Assert.IsNotNull(props); Assert.IsTrue(props.SkipEmpty); props = GEDCOMProvider.GetTagProps("test"); Assert.IsNull(props); }
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()); } } }
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); }
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); } } }
// 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); }
public bool IsEmptySkip() { TagProperties props = GEDCOMProvider.GetTagProps(fName); return(props != null && props.SkipEmpty); }
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); }