1 /* 2 * "GEDKeeper", the personal genealogical database editor. 3 * Copyright (C) 2009-2021 by Sergey V. Zhdanovskih. 4 * 5 * This file is part of "GEDKeeper". 6 * 7 * This program is free software: you can redistribute it and/or modify 8 * it under the terms of the GNU General Public License as published by 9 * the Free Software Foundation, either version 3 of the License, or 10 * (at your option) any later version. 11 * 12 * This program is distributed in the hope that it will be useful, 13 * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 * GNU General Public License for more details. 16 * 17 * You should have received a copy of the GNU General Public License 18 * along with this program. If not, see <http://www.gnu.org/licenses/>. 19 */ 20 21 using System; 22 using System.IO; 23 using BSLib; 24 using GDModel; 25 using GDModel.Providers.GEDCOM; 26 using GKCore.Cultures; 27 using GKCore.Operations; 28 using GKCore.Types; 29 using GKTests; 30 using GKUI.Platform; 31 using NUnit.Framework; 32 33 namespace GKCore 34 { 35 [TestFixture] 36 public class BaseContextTests 37 { 38 private BaseContext fContext; 39 40 [TestFixtureSetUp] SetUp()41 public void SetUp() 42 { 43 TestUtils.InitGEDCOMProviderTest(); 44 WFAppHost.ConfigureBootstrap(false); 45 TestUtils.InitProgressStub(); 46 LangMan.DefInit(); 47 48 fContext = TestUtils.CreateContext(); 49 TestUtils.FillContext(fContext); 50 } 51 52 [Test] Test_Common()53 public void Test_Common() 54 { 55 Assert.IsNull(fContext.Viewer); 56 57 GDMIndividualRecord iRec = fContext.Tree.XRefIndex_Find("I1") as GDMIndividualRecord; 58 Assert.IsNotNull(iRec); 59 60 Assert.AreEqual(1990, iRec.GetChronologicalYear(GEDCOMTagName.BIRT)); 61 62 Assert.AreEqual(1990, fContext.FindBirthYear(iRec)); 63 Assert.AreEqual(2010, fContext.FindDeathYear(iRec)); 64 65 // FIXME: error during execution of tests under TravisCI (a problem with UI) 66 //var patrGraph = PatriarchsMan.GetPatriarchsGraph(fContext, 1, true, false); 67 //Assert.IsNotNull(patrGraph); 68 } 69 70 [Test] Test_IsChildless()71 public void Test_IsChildless() 72 { 73 GDMIndividualRecord iRec = fContext.Tree.XRefIndex_Find("I1") as GDMIndividualRecord; 74 Assert.IsNotNull(iRec); 75 76 Assert.AreEqual(false, fContext.IsChildless(iRec)); 77 } 78 79 [Test] Test_LockRecord()80 public void Test_LockRecord() 81 { 82 GDMIndividualRecord iRec = fContext.Tree.XRefIndex_Find("I1") as GDMIndividualRecord; 83 Assert.IsNotNull(iRec); 84 85 fContext.LockRecord(iRec); 86 fContext.UnlockRecord(iRec); 87 } 88 89 [Test] Test_DeleteRecord()90 public void Test_DeleteRecord() 91 { 92 Assert.IsFalse(fContext.DeleteRecord(null)); 93 94 Assert.IsTrue(fContext.DeleteRecord(fContext.Tree.CreateIndividual())); 95 Assert.IsTrue(fContext.DeleteRecord(fContext.Tree.CreateFamily())); 96 Assert.IsTrue(fContext.DeleteRecord(fContext.Tree.CreateNote())); 97 Assert.IsTrue(fContext.DeleteRecord(fContext.Tree.CreateMultimedia())); 98 Assert.IsTrue(fContext.DeleteRecord(fContext.Tree.CreateSource())); 99 Assert.IsTrue(fContext.DeleteRecord(fContext.Tree.CreateRepository())); 100 Assert.IsTrue(fContext.DeleteRecord(fContext.Tree.CreateGroup())); 101 Assert.IsTrue(fContext.DeleteRecord(fContext.Tree.CreateResearch())); 102 Assert.IsTrue(fContext.DeleteRecord(fContext.Tree.CreateTask())); 103 Assert.IsTrue(fContext.DeleteRecord(fContext.Tree.CreateCommunication())); 104 Assert.IsTrue(fContext.DeleteRecord(fContext.Tree.CreateLocation())); 105 } 106 107 [Test] Test_CreateEventEx()108 public void Test_CreateEventEx() 109 { 110 GDMIndividualRecord iRec = fContext.Tree.XRefIndex_Find("I1") as GDMIndividualRecord; 111 112 var evt = fContext.CreateEventEx(iRec, GEDCOMTagName.FACT, "17 JAN 2013", "Ivanovo"); 113 Assert.IsNotNull(evt); 114 115 GDMFamilyRecord fRec = fContext.Tree.CreateFamily(); 116 Assert.IsNotNull(fRec); 117 118 evt = fContext.CreateEventEx(fRec, GEDCOMTagName.MARR, "28 DEC 2013", "Ivanovo"); 119 Assert.IsNotNull(evt); 120 } 121 122 [Test] Test_Updating()123 public void Test_Updating() 124 { 125 fContext.BeginUpdate(); 126 Assert.IsTrue(fContext.IsUpdated()); 127 fContext.EndUpdate(); 128 Assert.IsFalse(fContext.IsUpdated()); 129 } 130 131 [Test] Test_CollectNameLangs()132 public void Test_CollectNameLangs() 133 { 134 GDMIndividualRecord iRec = fContext.Tree.XRefIndex_Find("I1") as GDMIndividualRecord; 135 136 Assert.IsNotNull(fContext.LangsList); 137 Assert.AreEqual(0, fContext.LangsList.Count); 138 fContext.CollectNameLangs(null); 139 iRec.PersonalNames[0].Language = GDMLanguageID.AncientGreek; 140 fContext.CollectNameLangs(iRec.PersonalNames[0]); 141 Assert.AreEqual(1, fContext.LangsList.Count); 142 } 143 144 [Test] Test_SetFileName()145 public void Test_SetFileName() 146 { 147 fContext.SetFileName("testfile.ged"); 148 Assert.AreEqual("testfile.ged", fContext.FileName); 149 } 150 151 [Test] Test_FindSource()152 public void Test_FindSource() 153 { 154 GDMSourceRecord srcRec = fContext.FindSource("test source"); 155 Assert.IsNull(srcRec); 156 } 157 158 [Test] Test_GetSourcesList()159 public void Test_GetSourcesList() 160 { 161 var sources = new StringList(); 162 fContext.GetSourcesList(sources); 163 Assert.AreEqual(1, sources.Count); 164 } 165 166 [Test] Test_SwitchShieldState()167 public void Test_SwitchShieldState() 168 { 169 Assert.AreEqual(ShieldState.Maximum, fContext.ShieldState, "BaseContext.ShieldState.1"); 170 171 fContext.SwitchShieldState(); 172 Assert.AreEqual(ShieldState.Middle, fContext.ShieldState, "BaseContext.ShieldState.2"); 173 174 fContext.SwitchShieldState(); 175 Assert.AreEqual(ShieldState.None, fContext.ShieldState, "BaseContext.ShieldState.3"); 176 177 fContext.SwitchShieldState(); 178 Assert.AreEqual(ShieldState.Maximum, fContext.ShieldState, "BaseContext.ShieldState.4"); 179 } 180 181 [Test] Test_GetStoreType()182 public void Test_GetStoreType() 183 { 184 Assert.Throws(typeof(ArgumentNullException), () => { fContext.GetStoreType(null); }); 185 186 var fileRef = new GDMFileReference(); 187 fileRef.ParseString("file.txt"); 188 var mediaStore = fContext.GetStoreType(fileRef); 189 Assert.AreEqual(MediaStoreType.mstReference, mediaStore.StoreType); 190 191 fileRef.ParseString("stg:file.txt"); 192 mediaStore = fContext.GetStoreType(fileRef); 193 Assert.AreEqual(MediaStoreType.mstStorage, mediaStore.StoreType); 194 195 fileRef.ParseString("arc:file.txt"); 196 mediaStore = fContext.GetStoreType(fileRef); 197 Assert.AreEqual(MediaStoreType.mstArchive, mediaStore.StoreType); 198 199 fileRef.ParseString("rel:file.txt"); 200 mediaStore = fContext.GetStoreType(fileRef); 201 Assert.AreEqual(MediaStoreType.mstRelativeReference, mediaStore.StoreType); 202 } 203 204 [Test] Test_Clear()205 public void Test_Clear() 206 { 207 BaseContext context = TestUtils.CreateContext(); 208 TestUtils.FillContext(context); 209 Assert.AreEqual(17, context.Tree.RecordsCount); 210 211 context.Clear(); 212 Assert.AreEqual(0, context.Tree.RecordsCount); 213 } 214 215 [Test] Test_CollectEventValues()216 public void Test_CollectEventValues() 217 { 218 Assert.IsNotNull(fContext.ValuesCollection); 219 220 fContext.CollectEventValues(null); 221 Assert.AreEqual(0, fContext.ValuesCollection.Count); 222 223 GDMIndividualRecord iRec = fContext.Tree.XRefIndex_Find("I1") as GDMIndividualRecord; 224 var evt = new GDMIndividualAttribute((int)GEDCOMTagType._AWARD, "Congressional Gold Medal"); 225 226 fContext.CollectEventValues(evt); 227 Assert.AreEqual(1, fContext.ValuesCollection.Count); 228 } 229 230 [Test] Test_LoadAndSave()231 public void Test_LoadAndSave() 232 { 233 string sourFile = TestUtils.PrepareTestFile("test1.ged"); 234 string destFile = TestUtils.GetTempFilePath("test11.ged"); 235 string restoreFile = Path.ChangeExtension(destFile, ".restore"); 236 237 try { 238 using (BaseContext ctx = new BaseContext(null)) { 239 ctx.FileLoad(sourFile); 240 ctx.FileSave(destFile); 241 ctx.CriticalSave(); 242 } 243 } finally { 244 TestUtils.RemoveTestFile(sourFile); 245 TestUtils.RemoveTestFile(destFile); 246 TestUtils.RemoveTestFile(restoreFile); 247 } 248 } 249 250 [Test] Test_MediaLoadSave()251 public void Test_MediaLoadSave() 252 { 253 string sourFile = TestUtils.PrepareTestFile("shaytan_plant.jpg"); 254 string gedFile = TestUtils.GetTempFilePath("test_mm.ged"); 255 string stgDirectory = string.Empty, arcFileName = string.Empty; 256 257 try { 258 using (BaseContext ctx = new BaseContext(null)) { 259 Assert.IsTrue(ctx.IsUnknown()); 260 261 Assert.AreEqual(false, ctx.MediaSave(null, "", MediaStoreType.mstReference)); 262 Assert.AreEqual(null, ctx.LoadMediaImage(null, false)); 263 Assert.AreEqual(null, ctx.LoadMediaImage(null, 0, 0, ExtRect.Empty, false)); 264 Assert.AreEqual(null, ctx.GetPrimaryBitmap(null, 0, 0, false)); 265 Assert.AreEqual(null, ctx.GetPrimaryBitmapUID(null)); 266 267 ctx.FileSave(gedFile); 268 Assert.AreEqual(true, ctx.CheckBasePath()); // need path for archive and storage 269 270 var mmRecR = new GDMMultimediaRecord(ctx.Tree); 271 mmRecR.FileReferences.Add(new GDMFileReferenceWithTitle()); 272 Assert.AreEqual(true, ctx.MediaSave(mmRecR.FileReferences[0], sourFile, MediaStoreType.mstReference)); 273 Assert.IsNotNull(ctx.LoadMediaImage(mmRecR.FileReferences[0], false)); 274 Assert.IsNotNull(ctx.MediaLoad(mmRecR.FileReferences[0])); 275 276 var mmRecA = new GDMMultimediaRecord(ctx.Tree); 277 mmRecA.FileReferences.Add(new GDMFileReferenceWithTitle()); 278 Assert.AreEqual(true, ctx.MediaSave(mmRecA.FileReferences[0], sourFile, MediaStoreType.mstArchive)); 279 Assert.IsNotNull(ctx.LoadMediaImage(mmRecA.FileReferences[0], false)); 280 Assert.IsNotNull(ctx.MediaLoad(mmRecA.FileReferences[0])); 281 arcFileName = ctx.GetArcFileName(); 282 283 var mmRecS = new GDMMultimediaRecord(ctx.Tree); 284 mmRecS.FileReferences.Add(new GDMFileReferenceWithTitle()); 285 Assert.AreEqual(true, ctx.MediaSave(mmRecS.FileReferences[0], sourFile, MediaStoreType.mstStorage)); 286 Assert.IsNotNull(ctx.LoadMediaImage(mmRecS.FileReferences[0], false)); 287 Assert.IsNotNull(ctx.MediaLoad(mmRecS.FileReferences[0])); 288 stgDirectory = ctx.GetStgFolder(false); 289 290 var mmRecRl = new GDMMultimediaRecord(ctx.Tree); 291 mmRecRl.FileReferences.Add(new GDMFileReferenceWithTitle()); 292 Assert.AreEqual(true, ctx.MediaSave(mmRecRl.FileReferences[0], sourFile, MediaStoreType.mstRelativeReference)); 293 Assert.IsNotNull(ctx.LoadMediaImage(mmRecRl.FileReferences[0], false)); 294 Assert.IsNotNull(ctx.MediaLoad(mmRecRl.FileReferences[0])); 295 } 296 } finally { 297 TestUtils.RemoveTestFile(sourFile); 298 TestUtils.RemoveTestFile(gedFile); 299 TestUtils.RemoveTestFile(arcFileName); 300 TestUtils.RemoveTestDirectory(stgDirectory); 301 } 302 } 303 304 [Test] Test_CryptoLoadAndSave()305 public void Test_CryptoLoadAndSave() 306 { 307 using (BaseContext ctx = new BaseContext(null)) { 308 using (Stream stmGed1 = TestUtils.LoadResourceStream("test1.ged")) { 309 var gedcomProvider = new GEDCOMProvider(ctx.Tree); 310 gedcomProvider.LoadFromStreamExt(stmGed1, stmGed1); 311 312 string tempFileName = TestUtils.GetTempFilePath("test.geds"); 313 314 try { 315 ctx.SaveToSecFile(tempFileName, GEDCOMCharacterSet.csASCII, "test"); 316 317 using (var ctx2 = new BaseContext(null)) { 318 ctx2.LoadFromSecFile(tempFileName, "test"); 319 } 320 } finally { 321 TestUtils.RemoveTestFile(tempFileName); 322 } 323 } 324 } 325 } 326 327 [Test] Test_IsRecordAccess()328 public void Test_IsRecordAccess() 329 { 330 fContext.ShieldState = ShieldState.None; 331 Assert.IsTrue(fContext.IsRecordAccess(GDMRestriction.rnNone)); 332 Assert.IsTrue(fContext.IsRecordAccess(GDMRestriction.rnConfidential)); 333 Assert.IsTrue(fContext.IsRecordAccess(GDMRestriction.rnPrivacy)); 334 335 fContext.ShieldState = ShieldState.Middle; 336 Assert.IsTrue(fContext.IsRecordAccess(GDMRestriction.rnNone)); 337 Assert.IsTrue(fContext.IsRecordAccess(GDMRestriction.rnConfidential)); 338 Assert.IsFalse(fContext.IsRecordAccess(GDMRestriction.rnPrivacy)); 339 340 fContext.ShieldState = ShieldState.Maximum; 341 Assert.IsTrue(fContext.IsRecordAccess(GDMRestriction.rnNone)); 342 Assert.IsFalse(fContext.IsRecordAccess(GDMRestriction.rnConfidential)); 343 Assert.IsFalse(fContext.IsRecordAccess(GDMRestriction.rnPrivacy)); 344 } 345 346 [Test] Test_Culture()347 public void Test_Culture() 348 { 349 Assert.IsNotNull(fContext.Culture); 350 351 fContext.Tree.Header.Language = GDMLanguageID.German; 352 Assert.IsInstanceOf(typeof(GermanCulture), fContext.Culture); 353 354 fContext.Tree.Header.Language = GDMLanguageID.Polish; 355 Assert.IsInstanceOf(typeof(PolishCulture), fContext.Culture); 356 357 fContext.Tree.Header.Language = GDMLanguageID.Swedish; 358 Assert.IsInstanceOf(typeof(SwedishCulture), fContext.Culture); 359 360 fContext.Tree.Header.Language = GDMLanguageID.Icelandic; 361 Assert.IsInstanceOf(typeof(IcelandCulture), fContext.Culture); 362 363 fContext.Tree.Header.Language = GDMLanguageID.Russian; 364 Assert.IsInstanceOf(typeof(RussianCulture), fContext.Culture); 365 366 fContext.Tree.Header.Language = GDMLanguageID.Ukrainian; 367 Assert.IsInstanceOf(typeof(RussianCulture), fContext.Culture); 368 369 fContext.Tree.Header.Language = GDMLanguageID.Armenian; 370 Assert.IsInstanceOf(typeof(ArmenianCulture), fContext.Culture); 371 Assert.IsTrue(fContext.Culture.HasPatronymic()); 372 Assert.IsTrue(fContext.Culture.HasSurname()); 373 374 fContext.Tree.Header.Language = GDMLanguageID.Turkish; 375 Assert.IsInstanceOf(typeof(TurkishCulture), fContext.Culture); 376 Assert.IsFalse(fContext.Culture.HasPatronymic()); 377 Assert.IsTrue(fContext.Culture.HasSurname()); 378 379 fContext.Tree.Header.Language = GDMLanguageID.French; 380 Assert.IsInstanceOf(typeof(FrenchCulture), fContext.Culture); 381 382 fContext.Tree.Header.Language = GDMLanguageID.Italian; 383 Assert.IsInstanceOf(typeof(ItalianCulture), fContext.Culture); 384 385 fContext.Tree.Header.Language = GDMLanguageID.Cantonese; 386 Assert.IsInstanceOf(typeof(ChineseCulture), fContext.Culture); 387 388 fContext.Tree.Header.Language = GDMLanguageID.Mandrin; 389 Assert.IsInstanceOf(typeof(ChineseCulture), fContext.Culture); 390 Assert.IsFalse(fContext.Culture.HasPatronymic()); 391 Assert.IsTrue(fContext.Culture.HasSurname()); 392 } 393 TransactionEventHandler(object sender, TransactionType type)394 private void TransactionEventHandler(object sender, TransactionType type) 395 { 396 } 397 398 private class InvalidOperation : CustomOperation 399 { InvalidOperation(UndoManager manager)400 public InvalidOperation(UndoManager manager) : base(manager) { } Redo()401 public override bool Redo() { return false; } Undo()402 public override void Undo() {} 403 } 404 405 [Test] Test_UndoManager()406 public void Test_UndoManager() 407 { 408 using (var undoman = new UndoManager()) { 409 Assert.IsNotNull(undoman); 410 411 Assert.IsFalse(undoman.CanUndo()); 412 Assert.IsFalse(undoman.CanRedo()); 413 414 undoman.Clear(); 415 416 Assert.IsFalse(undoman.DoOperation(null)); 417 418 undoman.Undo(); 419 undoman.Redo(); 420 undoman.Commit(); 421 undoman.Rollback(); 422 423 Assert.IsFalse(undoman.DoOperation(new InvalidOperation(undoman))); 424 } 425 } 426 427 [Test] Test_UndoRedo()428 public void Test_UndoRedo() 429 { 430 fContext.DoUndo(); 431 fContext.DoRedo(); 432 fContext.DoCommit(); 433 fContext.DoRollback(); 434 435 Assert.AreEqual(fContext, fContext.Undoman.Context); 436 437 fContext.Undoman.OnTransaction += TransactionEventHandler; 438 439 fContext.Undoman.Clear(); 440 441 GDMIndividualRecord iRec = fContext.Tree.XRefIndex_Find("I1") as GDMIndividualRecord; 442 Assert.IsNotNull(iRec); 443 444 Assert.Throws(typeof(ArgumentNullException), () => { 445 fContext.Undoman.DoOrdinaryOperation( 446 OperationType.otIndividualBookmarkChange, null, true); }); 447 448 Assert.Throws(typeof(ArgumentNullException), () => { 449 fContext.Undoman.DoOrdinaryOperation( 450 OperationType.otIndividualBookmarkChange, iRec, null); }); 451 452 iRec.Bookmark = false; 453 fContext.Undoman.DoOrdinaryOperation(OperationType.otIndividualBookmarkChange, iRec, true); 454 Assert.IsTrue(iRec.Bookmark); 455 Assert.IsTrue(fContext.Undoman.CanUndo()); 456 fContext.Undoman.Undo(); 457 Assert.IsFalse(iRec.Bookmark); 458 Assert.IsFalse(fContext.Undoman.CanUndo()); 459 460 iRec.Patriarch = false; 461 fContext.Undoman.DoOrdinaryOperation(OperationType.otIndividualPatriarchChange, iRec, true); 462 Assert.IsTrue(iRec.Patriarch); 463 Assert.IsTrue(fContext.Undoman.CanUndo()); 464 fContext.Undoman.Undo(); 465 Assert.IsFalse(iRec.Patriarch); 466 Assert.IsFalse(fContext.Undoman.CanUndo()); 467 468 iRec.Sex = GDMSex.svUnknown; 469 fContext.Undoman.DoOrdinaryOperation(OperationType.otIndividualSexChange, iRec, GDMSex.svMale); 470 Assert.AreEqual(GDMSex.svMale, iRec.Sex); 471 Assert.IsTrue(fContext.Undoman.CanUndo()); 472 fContext.Undoman.Undo(); 473 Assert.AreEqual(GDMSex.svUnknown, iRec.Sex); 474 Assert.IsFalse(fContext.Undoman.CanUndo()); 475 476 Assert.IsTrue(fContext.Undoman.CanRedo()); 477 fContext.Undoman.Redo(); 478 Assert.AreEqual(GDMSex.svMale, iRec.Sex); 479 Assert.IsTrue(fContext.Undoman.CanUndo()); 480 481 fContext.Undoman.Clear(); 482 483 iRec.Bookmark = false; 484 iRec.Patriarch = false; 485 iRec.Sex = GDMSex.svUnknown; 486 487 fContext.Undoman.DoOrdinaryOperation(OperationType.otIndividualBookmarkChange, iRec, true); 488 fContext.Undoman.DoOrdinaryOperation(OperationType.otIndividualPatriarchChange, iRec, true); 489 fContext.Undoman.DoOrdinaryOperation(OperationType.otIndividualSexChange, iRec, GDMSex.svMale); 490 fContext.Undoman.Commit(); 491 Assert.IsTrue(iRec.Bookmark); 492 Assert.IsTrue(iRec.Patriarch); 493 Assert.AreEqual(GDMSex.svMale, iRec.Sex); 494 Assert.IsTrue(fContext.Undoman.CanUndo()); 495 fContext.Undoman.Undo(); 496 Assert.IsFalse(iRec.Bookmark); 497 Assert.IsFalse(iRec.Patriarch); 498 Assert.AreEqual(GDMSex.svUnknown, iRec.Sex); 499 Assert.IsFalse(fContext.Undoman.CanUndo()); 500 501 502 fContext.Undoman.DoOrdinaryOperation(OperationType.otIndividualBookmarkChange, iRec, true); 503 fContext.Undoman.DoOrdinaryOperation(OperationType.otIndividualPatriarchChange, iRec, true); 504 fContext.Undoman.DoOrdinaryOperation(OperationType.otIndividualSexChange, iRec, GDMSex.svMale); 505 fContext.Undoman.Rollback(); 506 Assert.IsFalse(iRec.Bookmark); 507 Assert.IsFalse(iRec.Patriarch); 508 Assert.AreEqual(GDMSex.svUnknown, iRec.Sex); 509 Assert.IsFalse(fContext.Undoman.CanUndo()); 510 511 fContext.Undoman.OnTransaction -= TransactionEventHandler; 512 513 514 Assert.Throws(typeof(ArgumentNullException), () => { 515 fContext.Undoman.DoIndividualNameChange(null, "", "", ""); }); 516 Assert.AreEqual("Ivanov Ivan Ivanovich", GKUtils.GetNameString(iRec, true, false)); 517 fContext.Undoman.DoIndividualNameChange(iRec, "Petrov", "Alex", "Ivanovich"); 518 Assert.AreEqual("Petrov Alex Ivanovich", GKUtils.GetNameString(iRec, true, false)); 519 fContext.Undoman.Rollback(); 520 Assert.AreEqual("Ivanov Ivan Ivanovich", GKUtils.GetNameString(iRec, true, false)); 521 } 522 523 [Test] Test_Modified()524 public void Test_Modified() 525 { 526 Assert.IsTrue(fContext.Modified); 527 } 528 529 [Test] Test_DeleteMediaRecord()530 public void Test_DeleteMediaRecord() 531 { 532 Assert.Throws(typeof(ArgumentNullException), () => { fContext.DeleteMediaRecord(null); }); 533 } 534 535 [Test] Test_FindAll()536 public void Test_FindAll() 537 { 538 var result = fContext.FindAll(GDMRecordType.rtIndividual, "ZZZ"); 539 Assert.AreEqual(0, result.Count); 540 } 541 542 [Test] Test_CollectTips()543 public void Test_CollectTips() 544 { 545 Assert.Throws(typeof(ArgumentNullException), () => { fContext.CollectTips(null); }); 546 } 547 548 [Test] Test_CheckPersonSex()549 public void Test_CheckPersonSex() 550 { 551 Assert.Throws(typeof(ArgumentNullException), () => { fContext.CheckPersonSex(null); }); 552 } 553 554 [Test] Test_MediaDelete()555 public void Test_MediaDelete() 556 { 557 var result = fContext.MediaDelete(null); 558 Assert.IsFalse(result); 559 } 560 561 [Test] Test_VerifyMediaFile()562 public void Test_VerifyMediaFile() 563 { 564 string fileName; 565 Assert.Throws(typeof(ArgumentNullException), () => { fContext.VerifyMediaFile(null, out fileName); }); 566 } 567 568 [Test] Test_MediaExists()569 public void Test_MediaExists() 570 { 571 var result = fContext.MediaExists(null); 572 Assert.IsFalse(result); 573 } 574 575 [Test] Test_IsAvailableRecord()576 public void Test_IsAvailableRecord() 577 { 578 var result = fContext.IsAvailableRecord(null); 579 Assert.IsTrue(result); 580 } 581 582 [Test] Test_GetChildFamily()583 public void Test_GetChildFamily() 584 { 585 var result = fContext.GetChildFamily(null, false, null); 586 Assert.IsNull(result); 587 } 588 589 [Test] Test_AddFamilyForSpouse()590 public void Test_AddFamilyForSpouse() 591 { 592 Assert.Throws(typeof(ArgumentNullException), () => { fContext.AddFamilyForSpouse(null); }); 593 } 594 595 [Test] Test_AddChildForParent()596 public void Test_AddChildForParent() 597 { 598 var result = fContext.AddChildForParent(null, GDMSex.svMale); 599 Assert.IsNull(result); 600 } 601 602 [Test] Test_SelectSpouseFor()603 public void Test_SelectSpouseFor() 604 { 605 Assert.Throws(typeof(ArgumentNullException), () => { fContext.SelectSpouseFor(null); }); 606 } 607 } 608 } 609