private void Individuals_without_data_do_not_match_at_all() { var individual1 = new GedcomIndividualRecord(); var individual2 = new GedcomIndividualRecord(); var match = individual1.CalculateSimilarityScore(individual2); Assert.Equal(decimal.Zero, match); }
/// <summary> /// Finds the duplicates. /// </summary> /// <param name="indi">The indi.</param> /// <param name="databaseB">The database b.</param> /// <param name="matchThreshold">The match threshold.</param> /// <returns>A list of duplicate records.</returns> public static List <GedcomIndividualRecord> FindDuplicates(GedcomIndividualRecord indi, GedcomDatabase databaseB, decimal matchThreshold) { List <GedcomIndividualRecord> matches = new List <GedcomIndividualRecord>(); foreach (GedcomIndividualRecord matchIndi in databaseB.Individuals) { // can't match self, databaseB could be the same database as indi.Database // so we can check this if (matchIndi != indi) { var match = indi.CalculateSimilarityScore(matchIndi); if (match > matchThreshold) { matches.Add(matchIndi); // System.Console.WriteLine(indi.Names[0].Name + " matches " + matchIndi.Names[0].Name + " at " + match + "%"); } } } return(matches); }