using System; using System.Collections.Generic; using System.Text; using SUT = BrokerageLib; namespace TestingLib { public class TestThePaymentDate { public UnitTestInfo DateIs30DaysInFuture() { var testInfo = new UnitTestInfo(); var pd = new SUT.PaymentSystem.PaymentDate(); var sampleDate = DateTime.Parse("2019-12-16"); var futureDate = pd.CalculateFuturePaymentDate(sampleDate); if (futureDate.Equals(sampleDate.AddDays(30))) { testInfo.DidTestPass = true; } else { testInfo.DidTestPass = false; testInfo.TestFailureMessage = $"Expected date is not 30 days in the future."; } testInfo.MethodName = "DateIs30DaysInFuture"; return testInfo; } public UnitTestInfo ReturnsMondayIfProposedIsSunday() { var testInfo = new UnitTestInfo(); var pd = new SUT.PaymentSystem.PaymentDate(); var sampleDate = DateTime.Parse("2019-12-17"); var futureDate = pd.CalculateFuturePaymentDate(sampleDate); if (futureDate.DayOfWeek == DayOfWeek.Monday) { testInfo.DidTestPass = true; } else { testInfo.DidTestPass = false; testInfo.TestFailureMessage = $"Expected date is not Monday."; } testInfo.MethodName = "ReturnsMondayIfProposedIsSunday"; return testInfo; } public UnitTestInfo ReturnsMondayIfProposedIsSaturday() { var testInfo = new UnitTestInfo(); var pd = new SUT.PaymentSystem.PaymentDate(); var sampleDate = DateTime.Parse("2019-12-15"); var futureDate = pd.CalculateFuturePaymentDate(sampleDate); if (futureDate.DayOfWeek == DayOfWeek.Monday) { testInfo.DidTestPass = true; } else { testInfo.DidTestPass = false; testInfo.TestFailureMessage = $"Expected date is not Monday."; } testInfo.MethodName = "ReturnsMondayIfProposedIsSaturday"; return testInfo; } } public struct UnitTestInfo { public bool DidTestPass { get; set; } public string TestFailureMessage { get; set; } public string MethodName { get; set; } } }