public void TestDetermineBackupsToKeep_Adv1() { BackupRotate br_oneday = new BackupRotate(TimeSpan.FromDays(1)); DateTime oldest = new DateTime(2000, 1, 1); List <DateTime> backupDates = new List <DateTime>(); //StringBuilder sb = new StringBuilder(); DateTime newest; for (int i = 0; i < 9999; i++) { newest = oldest.AddDays(i); backupDates.Add(newest); backupDates = new List <DateTime>(br_oneday.DetermineBackupsToKeep(backupDates)); Assert.AreEqual(newest, backupDates[0], "Newest kept date was " + backupDates[0] + ", expected " + newest); Assert.AreEqual(oldest, backupDates[backupDates.Count - 1], "Oldest kept date was " + backupDates[backupDates.Count - 1] + ", expected " + oldest); if (i > 2) { // These conditions should be true for i >= 3 Assert.IsTrue(backupDates.Count >= Math.Log(i, 2), "backupDates.Count was " + backupDates.Count + " at i=" + i + ". Expected >= " + Math.Log(i, 2)); Assert.IsTrue(backupDates.Count <= (2 * Math.Log(i, 2)), "backupDates.Count was " + backupDates.Count + " at i=" + i + ". Expected <= " + (2 * Math.Log(i, 2))); } //sb.AppendLine(string.Join(", ", backupDates.Select(d => d.ToString("yyyy/MM/dd")))); } //string result = sb.ToString(); //Console.WriteLine(result); }
public void TestDetermineBackupsToKeep_Adv2() { BackupRotate br_oneday = new BackupRotate(TimeSpan.FromDays(1)); DateTime oldest = new DateTime(2000, 1, 1); List <DateTime> backupDates = new List <DateTime>(); //StringBuilder sb = new StringBuilder(); DateTime newest; int done = 0; Random rand = new Random(); for (int i = 0; i < 9999; i++) { if (i < 3 || rand.NextDouble() < 0.5) { newest = oldest.AddDays(i); backupDates.Add(newest); backupDates = new List <DateTime>(br_oneday.DetermineBackupsToKeep(backupDates)); Assert.AreEqual(newest, backupDates[0], "Newest kept date was " + backupDates[0] + ", expected " + newest); Assert.AreEqual(oldest, backupDates[backupDates.Count - 1], "Oldest kept date was " + backupDates[backupDates.Count - 1] + ", expected " + oldest); if (done > 2) { // These conditions should be true for done >= 3 // We can't guarantee a minimum size beyond 2 Assert.IsTrue(backupDates.Count >= 2, "backupDates.Count was " + backupDates.Count + " at done=" + done + ". Expected >= 2."); Assert.IsTrue(backupDates.Count <= (2 * Math.Log(done, 2)), "backupDates.Count was " + backupDates.Count + " at done=" + done + ". Expected <= " + (2 * Math.Log(done, 2))); } //sb.AppendLine(i + ": " + string.Join(", ", backupDates.Select(d => d.ToString("yyyy/MM/dd")))); done++; } } //string result = sb.ToString(); //Console.WriteLine(result); }
public void TestDetermineBackupsToKeep_Basic() { BackupRotate br_oneday = new BackupRotate(TimeSpan.FromDays(1)); List <DateTime> input1 = new List <DateTime>(); for (int i = 1; i <= 28; i++) { input1.Add(new DateTime(2022, 2, i)); } DateTime[] expected1k = new DateTime[] { new DateTime(2022, 2, 28), new DateTime(2022, 2, 27), new DateTime(2022, 2, 25), new DateTime(2022, 2, 21), new DateTime(2022, 2, 13), new DateTime(2022, 2, 1) }; DateTime[] actual1k = br_oneday.DetermineBackupsToKeep(input1); AssertArraysEqual(expected1k, actual1k); }