public void GivenKParameterOne_AndAlphaParameterOne_AndValueAttributeProgramista_ShouldReturnTheSameList() { var pid = new Expression <Func <Person, object> >[] { p => p.FirstName, p => p.Surname, p => p.Age }; var algorithm = new AKAnonimization(1, 1, "Programista", _jobDictionary, _cityDictionary, p => p.Job, pid); var anonymzed = algorithm.GetAnonymizedData(_people); Assert.IsTrue(_people.All(p => anonymzed.Exists(x => x.FirstName == p.FirstName && x.Surname == p.Surname && x.Age == p.Age))); }
public void GivenEmptyPeopleList_ShouldReturn_EmptyList() { var pid = new Expression <Func <Person, object> >[] { p => p.FirstName, p => p.Surname, p => p.Age }; var algorithm = new AKAnonimization(3, 0.5, "Programista", _jobDictionary, _cityDictionary, p => p.Job, pid); var anonymized = algorithm.GetAnonymizedData(new List <Person>()); Assert.IsTrue(!anonymized.Any()); }
public void GivenKParameter_GreaterThan_1_AndAlphaParameter1_AndValueAttributeProgramista_ShouldReturnAnonymizedList(int parameterK) { var pid = new Expression <Func <Person, object> >[] { p => p.FirstName, p => p.Surname, p => p.Age }; var algorithm = new AKAnonimization(parameterK, 1, "Programista", _jobDictionary, _cityDictionary, p => p.Job, pid); var anonymzed = algorithm.GetAnonymizedData(_people); Assert.AreEqual(_people.Count, anonymzed.Count); Assert.IsTrue(anonymzed.GroupBy(x => new { x.FirstName, x.Surname, x.Age }) .Select(g => g.Count()) .All(c => c >= parameterK)); }
public void GivenKParameterFour_AndAlphaParameterGreaterThenHalf_AndValueGenderKOrM_ShouldReturnAnonymizedList(double parameterAlpha, string valueAttribute) { var parameterK = 4; var pid = new Expression <Func <Person, object> >[] { p => p.Job, p => p.City, p => p.FirstName }; var algorithm = new AKAnonimization(parameterK, parameterAlpha, valueAttribute, _jobDictionary, _cityDictionary, p => p.Gender, pid); var anonymzed = algorithm.GetAnonymizedData(_people); Assert.AreEqual(_people.Count, anonymzed.Count); Assert.IsTrue(anonymzed.GroupBy(x => new { x.Job, x.City, x.FirstName }) .All(g => { var numberSearchValue = g.Count(p => p.Gender == valueAttribute); var groupSize = g.Count(); var alphaParameterCondition = numberSearchValue / (double)groupSize <= parameterAlpha; var kParameterCondition = groupSize >= parameterK; return(alphaParameterCondition && kParameterCondition); })); }