Example #1
0
        public void FamilySerializeDeserialize()
        {
            Family fieldFamily        = FamilyGenerator.GetData();
            Family deserializedFamily = new FamilySerializeHelper(
                string.Format(
                    ".\\serialized\\{0}.{1}",
                    fieldFamily.Name,
                    FamilySerializeHelper.StandardExtension
                    )
                ).Save(fieldFamily).Load();

            foreach (Member member in fieldFamily.Members.Values)
            {
                Assert.AreEqual(
                    deserializedFamily.Members[member.Id].BirthDate,
                    fieldFamily.Members[member.Id].BirthDate
                    );

                Assert.AreEqual(
                    deserializedFamily.Members[member.Id].DeathDate,
                    fieldFamily.Members[member.Id].DeathDate
                    );

                Assert.AreEqual(
                    deserializedFamily.Members[member.Id].Refs.ParentId,
                    fieldFamily.Members[member.Id].Refs.ParentId
                    );

                Assert.AreEqual(
                    deserializedFamily.Members[member.Id].Refs.ChildrenIds.Count(),
                    fieldFamily.Members[member.Id].Refs.ChildrenIds.Count()
                    );

                foreach (DateTime at in new HashSet <DateTime>()
                {
                    DateTime.Now,
                    FamilyGenerator.KalebWeddingDate,
                    FamilyGenerator.KoreyWeddingDate,
                    FamilyGenerator.RumaysaWeddingDate,
                    FamilyGenerator.HenriettaWeddingDate,
                    FamilyGenerator.SebastianWithKarishmaDate
                }.Where(d => d >= member.BirthDate))
                {
                    Assert.AreEqual(
                        deserializedFamily.Members[member.Id].FullName.Value(at),
                        fieldFamily.Members[member.Id].FullName.Value(at)
                        );

                    Assert.AreEqual(
                        deserializedFamily.Members[member.Id].Status.Value(at),
                        fieldFamily.Members[member.Id].Status.Value(at)
                        );
                }
            }

            FamilyTests.CheckFieldFamilyReferences(deserializedFamily);
        }
Example #2
0
        private static void CreateAndSeed()
        {
            IList <Family> families      = new FamilyGenerator().GenerateFamilies(500);
            string         famSerialized = JsonSerializer.Serialize(families, new JsonSerializerOptions
            {
                WriteIndented = true
            });

            File.WriteAllText("families.txt", famSerialized);
            DBSeeder.Seed(families);
        }
Example #3
0
        public void References()
        {
            Family fieldFamily = FamilyGenerator.GetData();

            FamilyGenerator.Rumaysa.Refs.RemoveChild(FamilyGenerator.Moesha);
            Assert.AreEqual(1, FamilyGenerator.Rumaysa.Refs.Children.Count());
            FamilyGenerator.Rumaysa.HadChild(FamilyGenerator.Moesha);
            Assert.AreEqual(2, FamilyGenerator.Rumaysa.Refs.Children.Count());

            CheckFieldFamilyReferences(fieldFamily);
        }
Example #4
0
        public void TreeSerialize()
        {
            Family fieldFamily = FamilyGenerator.GetData();

            int i = 0;

            foreach (SearchSettings settings in new List <SearchSettings>()
            {
                new SearchSettings()
                {
                    At = FamilyGenerator.Kaleb.BirthDate.AddYears(-10),
                    CanBeDead = true,
                    CanBePartnerOtherTime = false
                },
                new SearchSettings()
                {
                    At = FamilyGenerator.KalebWeddingDate,
                    CanBeDead = true,
                    CanBePartnerOtherTime = true
                },
                new SearchSettings()
                {
                    At = FamilyGenerator.KalebWeddingDate,
                    CanBeDead = false,
                    CanBePartnerOtherTime = false
                },
                new SearchSettings()
                {
                    At = FamilyGenerator.HenriettaWeddingDate,
                    CanBeDead = false,
                    CanBePartnerOtherTime = true
                },
                new SearchSettings()
                {
                    At = DateTime.Now,
                    CanBeDead = true,
                    CanBePartnerOtherTime = false
                }
            })
            {
                string name = string.Format(
                    ".\\serialized\\{0}_{1}.{2}",
                    fieldFamily.Name,
                    i++,
                    TreeSerializeHelper.StandardExtension
                    );

                new TreeSerializeHelper(name).Save(
                    new Tree(fieldFamily, settings)
                    );
            }
        }
Example #5
0
        public void RootAncestors()
        {
            Family fieldFamily = FamilyGenerator.GetData();


            Assert.ThrowsException <HistoryViolationException>(
                () => new SearchSettings()
            {
                At = DateTime.Now.AddDays(7)
            },
                "Future date should have thrown an exception."
                );

            int i = 1;

            foreach (KeyValuePair <SearchSettings, HashSet <Member> > expected in new Dictionary <SearchSettings, HashSet <Member> >()
            {
                { /* 1 */
                    new SearchSettings()
                    {
                        At = FamilyGenerator.Kaleb.BirthDate.AddYears(-10),
                        CanBePartnerOtherTime = true,
                        CanBeDead = true
                    },
                    new HashSet <Member>()
                    {
                    }
                },
                { /* 2 */
                    new SearchSettings()
                    {
                        At = FamilyGenerator.Kaleb.BirthDate,
                        CanBePartnerOtherTime = false,
                        CanBeDead = true
                    },
                    new HashSet <Member>()
                    {
                    }
                },
                { /* 3 */
                    new SearchSettings()
                    {
                        At = FamilyGenerator.Kaleb.BirthDate,
                        CanBePartnerOtherTime = true,
                        CanBeDead = true
                    },
                    new HashSet <Member>()
                    {
                        FamilyGenerator.Kaleb
                    }
                },
                { /* 4 */
                    new SearchSettings()
                    {
                        At = FamilyGenerator.Karishma.BirthDate,
                        CanBePartnerOtherTime = true,
                        CanBeDead = true
                    },
                    new HashSet <Member>()
                    {
                        FamilyGenerator.Kaleb,
                        FamilyGenerator.Karishma
                    }
                },
                { /* 5 */
                    new SearchSettings()
                    {
                        At = FamilyGenerator.KalebWeddingDate,
                        CanBePartnerOtherTime = false,
                        CanBeDead = true
                    },
                    new HashSet <Member>()
                    {
                        FamilyGenerator.Kaleb,
                        FamilyGenerator.Karishma
                    }
                },
                { /* 6 */
                    new SearchSettings()
                    {
                        At = FamilyGenerator.KalebWeddingDate,
                        CanBePartnerOtherTime = true,
                        CanBeDead = true
                    },
                    new HashSet <Member>()
                    {
                        FamilyGenerator.Kaleb,
                        FamilyGenerator.Karishma,
                        FamilyGenerator.Fleur,
                        FamilyGenerator.Heena,
                        FamilyGenerator.Sebastian
                    }
                },
                { /* 7 */
                    new SearchSettings()
                    {
                        At = FamilyGenerator.SebastianWithKarishmaDate,
                        CanBePartnerOtherTime = true,
                        CanBeDead = true
                    },
                    new HashSet <Member>()
                    {
                        FamilyGenerator.Sebastian,
                        FamilyGenerator.Karishma,
                        FamilyGenerator.Kaleb,
                        FamilyGenerator.Hailie,
                        FamilyGenerator.Ahsan
                    }
                },
                { /* 8 */
                    new SearchSettings()
                    {
                        At = FamilyGenerator.SebastianWithKarishmaDate,
                        CanBePartnerOtherTime = false,
                        CanBeDead = true
                    },
                    new HashSet <Member>()
                    {
                        FamilyGenerator.Karishma,
                        FamilyGenerator.Sebastian
                    }
                },
                { /* 9 */
                    new SearchSettings()
                    {
                        At = FamilyGenerator.RumaysaWeddingDate,
                        CanBePartnerOtherTime = true,
                        CanBeDead = true
                    },
                    new HashSet <Member>()
                    {
                        FamilyGenerator.Kaleb,
                        FamilyGenerator.Karishma,
                        FamilyGenerator.Sebastian,
                        FamilyGenerator.Hailie
                    }
                },
                { /* 10 */
                    new SearchSettings()
                    {
                        At = FamilyGenerator.RumaysaWeddingDate,
                        CanBePartnerOtherTime = false,
                        CanBeDead = true
                    },
                    new HashSet <Member>()
                    {
                        FamilyGenerator.Karishma,
                        FamilyGenerator.Kaleb
                    }
                },
                { /* 11 */
                    new SearchSettings()
                    {
                        At = FamilyGenerator.HenriettaWeddingDate,
                        CanBePartnerOtherTime = true,
                        CanBeDead = true
                    },
                    new HashSet <Member>()
                    {
                        FamilyGenerator.Karishma,
                        FamilyGenerator.Kaleb,
                        FamilyGenerator.Sebastian,
                        FamilyGenerator.Hailie,
                        FamilyGenerator.Ashley,
                        FamilyGenerator.Fleur,
                        FamilyGenerator.John
                    }
                },
                { /* 12 */
                    new SearchSettings()
                    {
                        At = FamilyGenerator.HenriettaWeddingDate,
                        CanBePartnerOtherTime = false,
                        CanBeDead = true
                    },
                    new HashSet <Member>()
                    {
                        FamilyGenerator.Karishma,
                        FamilyGenerator.Sebastian,
                        FamilyGenerator.Hailie,
                        FamilyGenerator.Fleur,
                    }
                },
                { /* 13 */
                    new SearchSettings()
                    {
                        At = FamilyGenerator.HenriettaWeddingDate,
                        CanBePartnerOtherTime = false,
                        CanBeDead = false
                    },
                    new HashSet <Member>()
                    {
                        FamilyGenerator.Korey,
                        FamilyGenerator.Heena,
                        FamilyGenerator.Klara,
                        FamilyGenerator.Hailie,
                        FamilyGenerator.Fleur
                    }
                },
                { /* 14 */
                    new SearchSettings()
                    {
                        At = FamilyGenerator.HenriettaWeddingDate,
                        CanBePartnerOtherTime = true,
                        CanBeDead = false
                    },
                    new HashSet <Member>()
                    {
                        FamilyGenerator.Sebastian,
                        FamilyGenerator.Korey,
                        FamilyGenerator.Heena,
                        FamilyGenerator.Klara,
                        FamilyGenerator.Hailie,
                        FamilyGenerator.Fleur,
                        FamilyGenerator.Rumaysa,
                        FamilyGenerator.John,
                        FamilyGenerator.Ashley
                    }
                },
                { /* 15 */
                    new SearchSettings()
                    {
                        CanBePartnerOtherTime = false,
                        CanBeDead = true
                    },
                    new HashSet <Member>()
                    {
                        FamilyGenerator.Karishma,
                        FamilyGenerator.Sebastian,
                        FamilyGenerator.Fleur,
                        FamilyGenerator.Hailie
                    }
                },
                { /* 16 */
                    new SearchSettings()
                    {
                        CanBePartnerOtherTime = false,
                        CanBeDead = false
                    },
                    new HashSet <Member>()
                    {
                        FamilyGenerator.Korey,
                        FamilyGenerator.Heena,
                        FamilyGenerator.Klara,
                        FamilyGenerator.Hailie,
                        FamilyGenerator.Fleur
                    }
                },
                { /* 17 */
                    new SearchSettings()
                    {
                        CanBePartnerOtherTime = true,
                        CanBeDead = true
                    },
                    new HashSet <Member>()
                    {
                        FamilyGenerator.Karishma,
                        FamilyGenerator.Kaleb,
                        FamilyGenerator.Sebastian,
                        FamilyGenerator.Hailie,
                        FamilyGenerator.Fleur
                    }
                }
            })
            {
                IEnumerable <Member> actualAncestors = fieldFamily.GetRootAncestors(expected.Key);

                Assert.AreEqual(
                    expected.Value.Count(),
                    actualAncestors.Count(),
                    string.Format("Different number of ancestors in case {0}.", i)
                    );

                foreach (Member ancestor in expected.Value)
                {
                    Assert.IsTrue(
                        actualAncestors.Any(m => m.Id == ancestor.Id),
                        string.Format(
                            "Missing ancestor '{0}' in case {1}.",
                            ancestor.FullName.Value(expected.Key.At),
                            i
                            )
                        );
                }

                i++;
            }
        }