using System.Collections.Generic;
private static List<Tuple<bool, long, long, long, long>> testData = new List<Tuple<bool, long, long, long, long>>()
Tuple.Create<bool, long, long, long, long>(true,0,0,0,1),
Tuple.Create<bool, long, long, long, long>(false,0,1,1,1),
Tuple.Create<bool, long, long, long, long>(true,0,0,1,1),
Tuple.Create<bool, long, long, long, long>(true,0,0,24,16),
Tuple.Create<bool, long, long, long, long>(false,10,5,12,4),
Tuple.Create<bool, long, long, long, long>(true,10,5,12,7),
Tuple.Create<bool, long, long, long, long>(false,10,5,7,7),
Tuple.Create<bool, long, long, long, long>(false,-1,-1,7,7),
Tuple.Create<bool, long, long, long, long>(true,-1,2,7,7),
Tuple.Create<bool, long, long, long, long>(true,2,-1,7,7),
Tuple.Create<bool, long, long, long, long>(false,-1,10,7,7),
Tuple.Create<bool, long, long, long, long>(false,10,-1,7,7),
public static void Main()
IEnumerable<Tuple<int, bool>> results = testData.Select((x, i) => Tuple.Create<int, bool>(i, x.Item1 == ShouldDelete(x.Item2, x.Item3, x.Item4, x.Item5)));
foreach(var result in results)
Console.WriteLine($"i = {result.Item1.ToString("00")} : passed = {result.Item2}");
public static bool ShouldDelete(long minMonthsOldBeforeDelete, long minVersionsToKeep, long ageInMonths, long versionsBehind)
bool deleteDueToAge = minMonthsOldBeforeDelete != -1 && ageInMonths >= minMonthsOldBeforeDelete;
bool deleteDueToVersionBehind = minVersionsToKeep != -1 && versionsBehind > minVersionsToKeep;
if (deleteDueToAge && deleteDueToVersionBehind)
else if (minMonthsOldBeforeDelete == -1 && deleteDueToVersionBehind)
else if (minVersionsToKeep == -1 && deleteDueToAge)