private GEDCOMChecker(IBaseContext baseContext, IProgressController progress) { fBaseContext = baseContext; fTree = fBaseContext.Tree; fFormat = GEDCOMProvider.GetGEDCOMFormat(fTree); fProgress = progress; }
public void Test_CompareTree() { string extFile = string.Empty; Assert.Throws(typeof(ArgumentNullException), () => { TreeTools.CompareTree(null, extFile, null); }); Assert.Throws(typeof(ArgumentNullException), () => { TreeTools.CompareTree(fBaseWin.Context, extFile, null); }); GDMTree extTree = null; Assert.Throws(typeof(ArgumentNullException), () => { TreeTools.CompareTree(null, extTree, null); }); Assert.Throws(typeof(ArgumentNullException), () => { TreeTools.CompareTree(fBaseWin.Context, extTree, null); }); var logStub = new TextBoxStub(null); Assembly assembly = typeof(CoreTests).Assembly; using (var ctx1 = new BaseContext(null)) { IBaseWindow baseWin = new BaseWindowStub(ctx1); using (Stream stmGed1 = assembly.GetManifestResourceStream("GKTests.Resources.test1.ged")) { var gedcomProvider = new GEDCOMProvider(ctx1.Tree); gedcomProvider.LoadFromStreamExt(stmGed1, stmGed1); } using (var ctx2 = new BaseContext(null)) { using (Stream stmGed2 = assembly.GetManifestResourceStream("GKTests.Resources.test2.ged")) { var gedcomProvider = new GEDCOMProvider(ctx2.Tree); gedcomProvider.LoadFromStreamExt(stmGed2, stmGed2); TreeTools.CompareTree(ctx1, ctx2.Tree, logStub); } } } }
public void Test_CompareTree() { string extFile = string.Empty; Assert.Throws(typeof(ArgumentNullException), () => { TreeTools.CompareTree(null, extFile, null); }); Assert.Throws(typeof(ArgumentNullException), () => { TreeTools.CompareTree(fBaseWin.Context, extFile, null); }); GDMTree extTree = null; Assert.Throws(typeof(ArgumentNullException), () => { TreeTools.CompareTree(null, extTree, null); }); Assert.Throws(typeof(ArgumentNullException), () => { TreeTools.CompareTree(fBaseWin.Context, extTree, null); }); var logBox = Substitute.For <ITextBox>(); using (var ctx1 = new BaseContext(null)) { IBaseWindow baseWin = new BaseWindowStub(ctx1); using (Stream stmGed1 = TestUtils.LoadResourceStream("test1.ged")) { var gedcomProvider = new GEDCOMProvider(ctx1.Tree); gedcomProvider.LoadFromStreamExt(stmGed1, stmGed1); } using (var ctx2 = new BaseContext(null)) { using (Stream stmGed2 = TestUtils.LoadResourceStream("test2.ged")) { var gedcomProvider = new GEDCOMProvider(ctx2.Tree); gedcomProvider.LoadFromStreamExt(stmGed2, stmGed2); TreeTools.CompareTree(ctx1, ctx2.Tree, logBox); } } } }
public void Test_NativeFormat() { GEDCOMProvider.DebugWrite = false; Assembly assembly = typeof(CoreTests).Assembly; using (Stream inStream = assembly.GetManifestResourceStream("GKTests.Resources.test_native.ged")) { using (GDMTree tree = new GDMTree()) { byte[] inArray; using (MemoryStream inMem = new MemoryStream()) { inStream.CopyTo(inMem); inStream.Position = 0; inArray = inMem.ToArray(); } var gedcomProvider = new GEDCOMProvider(tree); gedcomProvider.LoadFromStreamExt(inStream, inStream); using (MemoryStream outStream = new MemoryStream()) { gedcomProvider = new GEDCOMProvider(tree); gedcomProvider.SaveToStreamExt(outStream, GEDCOMCharacterSet.csUTF8); outStream.Position = 0; byte[] outArray; outArray = outStream.ToArray(); string outStr = Encoding.ASCII.GetString(outArray); Assert.AreEqual(Encoding.ASCII.GetString(inArray), outStr); } } } }
public void Test_NativeFormat() { GEDCOMProvider.DebugWrite = false; using (Stream inStream = TestUtils.LoadResourceStream("test_native.ged")) { using (GDMTree tree = new GDMTree()) { byte[] inArray; using (MemoryStream inMem = new MemoryStream()) { inStream.CopyTo(inMem); inStream.Position = 0; inArray = inMem.ToArray(); } var gedcomProvider = new GEDCOMProvider(tree); gedcomProvider.LoadFromStreamExt(inStream, inStream); using (MemoryStream outStream = new MemoryStream()) { gedcomProvider = new GEDCOMProvider(tree); gedcomProvider.SaveToStreamExt(outStream, GEDCOMCharacterSet.csUTF8); outStream.Position = 0; byte[] outArray = outStream.ToArray(); string inStr = Encoding.ASCII.GetString(inArray); // convert to GK GEDCOM inStr = inStr.Replace("1 ALIA @I11@", "1 ASSO @I11@\r\n2 RELA possible_duplicate"); string outStr = Encoding.ASCII.GetString(outArray); Assert.AreEqual(inStr, outStr); } } } }
public void Test_Standart() { Assembly assembly = typeof(CoreTests).Assembly; using (Stream inStream = assembly.GetManifestResourceStream("GKTests.Resources.TGC55CLF.GED")) { using (GDMTree tree = new GDMTree()) { var gedcomProvider = new GEDCOMProvider(tree); gedcomProvider.LoadFromStreamExt(inStream, inStream); Assert.AreEqual(GEDCOMFormat.gf_Unknown, tree.Format); GDMMultimediaRecord mmRec1 = tree.XRefIndex_Find("M1") as GDMMultimediaRecord; Assert.IsNotNull(mmRec1); GDMTag blobTag = mmRec1.FindTag("BLOB", 0); Assert.IsNotNull(blobTag); var strBlob = GEDCOMUtils.GetTagStrings(blobTag).Text; Assert.IsNotNull(strBlob); MemoryStream blobStream = GEDCOMUtils.DecodeBlob(strBlob.Replace("\r\n", "")); Assert.IsNotNull(blobStream); // unsupported apple's `pict` format /*using (FileStream file = new FileStream("d:\\image.pict", FileMode.Create, FileAccess.Write)) { * blobStream.WriteTo(file); * blobStream.Close(); * }*/ using (MemoryStream outStream = new MemoryStream()) { gedcomProvider = new GEDCOMProvider(tree); gedcomProvider.SaveToStreamExt(outStream, GEDCOMCharacterSet.csASCII); } } } }
public void Test_GetGEDCOMFormat() { GDMTree tree = new GDMTree(); // Tests of determine GEDCOM-format Assert.AreEqual(GEDCOMFormat.gf_Unknown, GEDCOMProvider.GetGEDCOMFormat(tree)); tree.Header.Source.StringValue = "GENBOX"; Assert.AreEqual(GEDCOMFormat.gf_GENBOX, GEDCOMProvider.GetGEDCOMFormat(tree)); }
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_SearchTreeFragments_MergeTree() { List <List <GDMRecord> > treeFragments; Assembly assembly = typeof(CoreTests).Assembly; using (var ctx1 = new BaseContext(null)) { IBaseWindow baseWin = new BaseWindowStub(ctx1); using (Stream stmGed1 = assembly.GetManifestResourceStream("GKTests.Resources.test1.ged")) { var gedcomProvider = new GEDCOMProvider(ctx1.Tree); gedcomProvider.LoadFromStreamExt(stmGed1, stmGed1); } treeFragments = TreeTools.SearchTreeFragments(ctx1.Tree, null); Assert.AreEqual(2, treeFragments.Count); Assert.AreEqual(13, treeFragments[0].Count); Assert.AreEqual(1, treeFragments[1].Count); using (var ctx2 = new BaseContext(null)) { using (Stream stmGed2 = assembly.GetManifestResourceStream("GKTests.Resources.test2.ged")) { var gedcomProvider = new GEDCOMProvider(ctx2.Tree); gedcomProvider.LoadFromStreamExt(stmGed2, stmGed2); } treeFragments = TreeTools.SearchTreeFragments(ctx2.Tree, null); Assert.AreEqual(2, treeFragments.Count); Assert.AreEqual(15, treeFragments[0].Count); Assert.AreEqual(1, treeFragments[1].Count); TreeTools.MergeTree(ctx1.Tree, ctx2.Tree, null); treeFragments = TreeTools.SearchTreeFragments(ctx1.Tree, null); Assert.AreEqual(4, treeFragments.Count); Assert.AreEqual(13, treeFragments[0].Count); Assert.AreEqual(1, treeFragments[1].Count); Assert.AreEqual(15, treeFragments[2].Count); Assert.AreEqual(1, treeFragments[3].Count); GDMIndividualRecord iRec1 = ctx1.Tree.XRefIndex_Find("I1") as GDMIndividualRecord; Assert.IsNotNull(iRec1); GDMIndividualRecord iRec2 = ctx1.Tree.XRefIndex_Find("I3") as GDMIndividualRecord; Assert.IsNotNull(iRec2); TreeTools.MergeRecord(baseWin, iRec1, iRec2, true); treeFragments = TreeTools.SearchTreeFragments(ctx1.Tree, null); Assert.AreEqual(3, treeFragments.Count); Assert.AreEqual(13, treeFragments[0].Count); Assert.AreEqual(15, treeFragments[1].Count); Assert.AreEqual(1, treeFragments[2].Count); } } }
public static IBaseContext LoadResourceGEDCOMFile(string resName) { BaseContext ctx = new BaseContext(null); using (Stream stream = TestUtils.LoadResourceStream(resName)) { var gedcomProvider = new GEDCOMProvider(ctx.Tree); gedcomProvider.LoadFromStreamExt(stream, stream); } return(ctx); }
public void SetUp() { // for static initialization GEDCOMProvider.SkipEmptyTag((int)GEDCOMTagType._AWARD); WFAppHost.ConfigureBootstrap(false); LangMan.DefInit(); fContext = TestUtils.CreateContext(); TestUtils.FillContext(fContext); }
public static IBaseContext LoadResourceGEDCOMFile(string resName) { BaseContext ctx = new BaseContext(null); Assembly assembly = typeof(CoreTests).Assembly; using (Stream stream = assembly.GetManifestResourceStream("GKTests.Resources." + resName)) { var gedcomProvider = new GEDCOMProvider(ctx.Tree); gedcomProvider.LoadFromStreamExt(stream, stream); } return(ctx); }
public void SetUp() { // for static initialization GEDCOMProvider.SkipEmptyTag((int)GEDCOMTagType._AWARD); WFAppHost.ConfigureBootstrap(false); AppHost.Container.Register <IProgressController, ProgressStub>(LifeCycle.Singleton, true); LangMan.DefInit(); fContext = TestUtils.CreateContext(); TestUtils.FillContext(fContext); }
public void SetUp() { // for static initialization GEDCOMProvider.SkipEmptyTag((int)GEDCOMTagType._AWARD); WFAppHost.ConfigureBootstrap(false); LangMan.DefInit(); fBaseWin = new BaseWindowStub(); AppHost.Container.Register <IProgressController, ProgressStub>(LifeCycle.Singleton, true); fProgress = new ProgressStub(); }
public void Test_TrueAnsel() { using (BaseContext ctx = new BaseContext(null)) { using (Stream stmGed1 = TestUtils.LoadResourceStream("test_ansel.ged")) { var charsetRes = GKUtils.DetectCharset(stmGed1); Assert.AreEqual(null, charsetRes.Charset); Assert.GreaterOrEqual(charsetRes.Confidence, 0.0f); Assert.AreEqual(GEDCOMFormat.gf_Unknown, ctx.Tree.Format); var gedcomProvider = new GEDCOMProvider(ctx.Tree); gedcomProvider.LoadFromStreamExt(stmGed1, stmGed1); } } }
/// <summary> /// Support function. Parse GEDCOM string. /// </summary> public static GDMIndividualRecord ParseIndiRec(string text) { GDMTree tree = new GDMTree(); GEDCOMProvider gp = new GEDCOMProvider(tree); try { gp.LoadFromString(text); } catch (Exception) { } Assert.AreEqual(1, tree.RecordsCount); GDMIndividualRecord rec = tree[0] as GDMIndividualRecord; Assert.IsNotNull(rec); return(rec); }
public void Test_GEDCOMFactory() { TagConstructor tagConst = TagConstructorTest; Assert.AreEqual(null, tagConst.Invoke(null, 0, "x")); // GDMTag tag = GEDCOMProvider.CreateTag(null, (int)GEDCOMTagType.DATE, ""); Assert.IsNotNull(tag); tag = GEDCOMProvider.CreateTag(null, GEDCOMTagsTable.Lookup("TEST"), ""); Assert.IsNotNull(tag); Assert.AreEqual("TEST", tag.GetTagName()); }
public void Test_CryptoLoadAndSave() { using (BaseContext ctx = new BaseContext(null)) { Assembly assembly = typeof(CoreTests).Assembly; using (Stream stmGed1 = assembly.GetManifestResourceStream("GKTests.Resources.test1.ged")) { var gedcomProvider = new GEDCOMProvider(ctx.Tree); gedcomProvider.LoadFromStreamExt(stmGed1, stmGed1); string tempFileName = TestUtils.GetTempFilePath("test.geds"); ctx.SaveToSecFile(tempFileName, GEDCOMCharacterSet.csASCII, "test"); using (var ctx2 = new BaseContext(null)) { ctx2.LoadFromSecFile(tempFileName, "test"); } } } }
public void Test_MergeRecord_Fam() { using (var ctx1 = new BaseContext(null)) { IBaseWindow baseWin = new BaseWindowStub(ctx1); using (Stream stmGed1 = TestUtils.LoadResourceStream("test_mergerec.ged")) { var gedcomProvider = new GEDCOMProvider(ctx1.Tree); gedcomProvider.LoadFromStreamExt(stmGed1, stmGed1); } GDMFamilyRecord famRec1 = ctx1.Tree.XRefIndex_Find("F1") as GDMFamilyRecord; Assert.IsNotNull(famRec1); GDMFamilyRecord famRec2 = ctx1.Tree.XRefIndex_Find("F2") as GDMFamilyRecord; Assert.IsNotNull(famRec2); TreeTools.MergeRecord(baseWin, famRec1, famRec2, true); } }
public void Test_Agelong_PseudoAnsel_Win1251() { using (BaseContext ctx = new BaseContext(null)) { using (Stream stmGed1 = TestUtils.LoadResourceStream("test_agelong_ansel(win1251).ged")) { var charsetRes = GKUtils.DetectCharset(stmGed1); Assert.AreEqual("windows-1251", charsetRes.Charset); Assert.GreaterOrEqual(charsetRes.Confidence, 0.7f); var gedcomProvider = new GEDCOMProvider(ctx.Tree); gedcomProvider.LoadFromStreamExt(stmGed1, stmGed1); Assert.AreEqual(GEDCOMFormat.gf_ALTREE, ctx.Tree.Format); GDMIndividualRecord iRec1 = ctx.Tree.XRefIndex_Find("I1") as GDMIndividualRecord; Assert.IsNotNull(iRec1); Assert.AreEqual("Иван ОВЕЧКИН", iRec1.GetPrimaryFullName()); } } }
public void Test_Ahnenblatt_ANSI_Win1250() { using (BaseContext ctx = new BaseContext(null)) { using (Stream stmGed1 = TestUtils.LoadResourceStream("test_ahn_ansi(win1250).ged")) { var charsetRes = GKUtils.DetectCharset(stmGed1); Assert.AreEqual("windows-1252", charsetRes.Charset); Assert.GreaterOrEqual(charsetRes.Confidence, 0.5f); var gedcomProvider = new GEDCOMProvider(ctx.Tree); gedcomProvider.LoadFromStreamExt(stmGed1, stmGed1); Assert.AreEqual(GEDCOMFormat.gf_Ahnenblatt, ctx.Tree.Format); GDMIndividualRecord iRec1 = ctx.Tree.XRefIndex_Find("I1") as GDMIndividualRecord; Assert.IsNotNull(iRec1); Assert.AreEqual("Stanisław Nowak", iRec1.GetPrimaryFullName()); } } }
public void Test_GK_UTF8() { using (BaseContext ctx = new BaseContext(null)) { using (Stream stmGed1 = TestUtils.LoadResourceStream("test_gk_utf8.ged")) { var charsetRes = GKUtils.DetectCharset(stmGed1); Assert.AreEqual("UTF-8", charsetRes.Charset); Assert.AreEqual(1.0f, charsetRes.Confidence); var gedcomProvider = new GEDCOMProvider(ctx.Tree); gedcomProvider.LoadFromStreamExt(stmGed1, stmGed1); Assert.AreEqual(GEDCOMFormat.gf_Native, ctx.Tree.Format); GDMIndividualRecord iRec1 = ctx.Tree.XRefIndex_Find("I1") as GDMIndividualRecord; Assert.IsNotNull(iRec1); Assert.AreEqual("Иван Иванович Иванов", iRec1.GetPrimaryFullName()); } } }
public void Test_MergeTree_SelfTest() { using (var ctx1 = new BaseContext(null)) { IBaseWindow baseWin = new BaseWindowStub(ctx1); using (Stream stmGed1 = TestUtils.LoadResourceStream("test1.ged")) { var gedcomProvider = new GEDCOMProvider(ctx1.Tree); gedcomProvider.LoadFromStreamExt(stmGed1, stmGed1); } using (var ctx2 = new BaseContext(null)) { using (Stream stmGed2 = TestUtils.LoadResourceStream("test2.ged")) { var gedcomProvider = new GEDCOMProvider(ctx2.Tree); gedcomProvider.LoadFromStreamExt(stmGed2, stmGed2); } TreeTools.MergeTree(ctx1.Tree, ctx2.Tree, null, true); } } }
public void Save() { string fileName = AppHost.StdDialogs.GetSaveFile("", "", LangMan.LS(LSID.LSID_GEDCOMFilter), 1, GKData.GEDCOM_EXT, ""); if (string.IsNullOrEmpty(fileName)) { return; } TreeTools.CheckRelations(fSplitList); var tree = fBase.Context.Tree; GKUtils.PrepareHeader(tree, fileName, GlobalOptions.Instance.DefCharacterSet, true); using (StreamWriter fs = new StreamWriter(fileName, false, GEDCOMUtils.GetEncodingByCharacterSet(tree.Header.CharacterSet.Value))) { var gedcomProvider = new GEDCOMProvider(tree); gedcomProvider.SaveToStream(fs, fSplitList); } }
public void Test_FTB6_ANSI_Win1251() { using (BaseContext ctx = new BaseContext(null)) { using (Stream stmGed1 = TestUtils.LoadResourceStream("test_ftb6_ansi(win1251).ged")) { var charsetRes = GKUtils.DetectCharset(stmGed1); Assert.AreEqual("windows-1251", charsetRes.Charset); Assert.GreaterOrEqual(charsetRes.Confidence, 0.9f); var gedcomProvider = new GEDCOMProvider(ctx.Tree); gedcomProvider.LoadFromStreamExt(stmGed1, stmGed1); Assert.AreEqual(GEDCOMFormat.gf_FTB, ctx.Tree.Format); GDMIndividualRecord iRec1 = ctx.Tree.XRefIndex_Find("I1") as GDMIndividualRecord; Assert.IsNotNull(iRec1); Assert.AreEqual("Иван Васильевич Петров", iRec1.GetPrimaryFullName()); } } }
public static string GetTagStreamText(GDMTag tag, int level, bool debugWrite = true) { GEDCOMProvider.DebugWrite = debugWrite; string result; using (MemoryStream stm = new MemoryStream()) { using (StreamWriter fs = new StreamWriter(stm)) { if (tag is GDMRecord) { GEDCOMProvider.WriteRecordEx(fs, (GDMRecord)tag); } else { if (tag is GDMPersonalName) { GEDCOMProvider.WritePersonalName(fs, 1, tag); } else if (tag is GDMMultimediaLink) { GEDCOMProvider.WriteMultimediaLink(fs, 1, tag); } else if (tag is GDMSourceCitation) { GEDCOMProvider.WriteSourceCitation(fs, 1, tag); } else if (tag is GDMSourceData) { GEDCOMProvider.WriteSourceData(fs, 1, tag); } else { GEDCOMProvider.WriteBaseTag(fs, level, tag); } } fs.Flush(); result = Encoding.ASCII.GetString(stm.ToArray()); } } return(result); }
public void Test_MergeRecord_Indi() { Assembly assembly = typeof(CoreTests).Assembly; using (var ctx1 = new BaseContext(null)) { IBaseWindow baseWin = new BaseWindowStub(ctx1); using (Stream stmGed1 = assembly.GetManifestResourceStream("GKTests.Resources.test_mergerec.ged")) { var gedcomProvider = new GEDCOMProvider(ctx1.Tree); gedcomProvider.LoadFromStreamExt(stmGed1, stmGed1); } GDMIndividualRecord iRec1 = ctx1.Tree.XRefIndex_Find("I1") as GDMIndividualRecord; Assert.IsNotNull(iRec1); GDMIndividualRecord iRec2 = ctx1.Tree.XRefIndex_Find("I4") as GDMIndividualRecord; Assert.IsNotNull(iRec2); TreeTools.MergeRecord(baseWin, iRec1, iRec2, true); } }
public void Test_CryptoLoadAndSave() { using (BaseContext ctx = new BaseContext(null)) { using (Stream stmGed1 = TestUtils.LoadResourceStream("test1.ged")) { var gedcomProvider = new GEDCOMProvider(ctx.Tree); gedcomProvider.LoadFromStreamExt(stmGed1, stmGed1); string tempFileName = TestUtils.GetTempFilePath("test.geds"); try { ctx.SaveToSecFile(tempFileName, GEDCOMCharacterSet.csASCII, "test"); using (var ctx2 = new BaseContext(null)) { ctx2.LoadFromSecFile(tempFileName, "test"); } } finally { TestUtils.RemoveTestFile(tempFileName); } } } }
private void btnSave_Click(object sender, EventArgs e) { string fileName = AppHost.StdDialogs.GetSaveFile("", "", LangMan.LS(LSID.LSID_GEDCOMFilter), 1, GKData.GEDCOM_EXT, ""); if (string.IsNullOrEmpty(fileName)) { return; } TreeTools.CheckRelations(fSplitList); GKUtils.PrepareHeader(fTree, fileName, GlobalOptions.Instance.DefCharacterSet, true); using (StreamWriter fs = new StreamWriter(fileName, false, GEDCOMUtils.GetEncodingByCharacterSet(fTree.Header.CharacterSet))) { var gedcomProvider = new GEDCOMProvider(fTree); gedcomProvider.SaveToStream(fs, fSplitList); fTree.Header.CharacterSet = GEDCOMCharacterSet.csASCII; } }
public void Test_MergeTree_SelfTest() { Assembly assembly = typeof(CoreTests).Assembly; using (var ctx1 = new BaseContext(null)) { IBaseWindow baseWin = new BaseWindowStub(ctx1); using (Stream stmGed1 = assembly.GetManifestResourceStream("GKTests.Resources.test1.ged")) { var gedcomProvider = new GEDCOMProvider(ctx1.Tree); gedcomProvider.LoadFromStreamExt(stmGed1, stmGed1); } using (var ctx2 = new BaseContext(null)) { using (Stream stmGed2 = assembly.GetManifestResourceStream("GKTests.Resources.test2.ged")) { var gedcomProvider = new GEDCOMProvider(ctx2.Tree); gedcomProvider.LoadFromStreamExt(stmGed2, stmGed2); } TreeTools.MergeTree(ctx1.Tree, ctx2.Tree, null, true); } } }